标签: vim

有没有一种巧妙的方法来给标题加下划线?

这不是特别重要,但这是我一直好奇的事情。

我使用 rST (Sphinx) 编写了大量文档。这是你写标题的方式:

My Awesome Heading
==================

Lorem ipsum dolor...
Run Code Online (Sandbox Code Playgroud)

我想知道 vim 中是否有一种聪明的方法来做这个下划线,而不是快速按下等号键十几次。

vim macvim

2
推荐指数
1
解决办法
240
查看次数

vim 函数内的移动命令

我想显示当前行所属的 C 函数。我不想使用任何插件,因为我在具有不同机器功能和配置的多个操作系统上工作。我已经尝试了大多数插件,但由于某种原因它不起作用。我必须写一些非常基本和最小的东西,并且可以使用非常基本的 vim 功能。

当前解决方案:

我从同事那里复制了一个 vim 函数,它本质上是搜索一个 reg-ex,匹配函数名的开头。它在底部屏幕上显示名称几秒钟然后消失

fun! ShowFuncName()
        let lnum = line(".")
        let col = col(".")
        echohl ModeMsg
        echo getline(search("^[^ \t#/]\\{2}.*[^:]\s*$", 'bW'))
        echohl None
        call search("\\%" . lnum . "l" . "\\%" . col . "c")
    endfun
Run Code Online (Sandbox Code Playgroud)

问题

问题是这个东西不适用于标签。如果函数定义和当前行之间的一行中存在标签,脚本将显示标签名称而不是函数名称。

否则脚本会起作用,因为在我们的代码库中,始终从第 1 列开始函数定义并从第二行开始使用大括号是一个硬性规定。

建议修复

与其搜索正则表达式,不如使用 vim 移动键。即执行以下操作:

  1. 存储当前行#、列#
  2. 使用移动键 '[[' 跳转到函数定义
  3. 正上方的行将具有 C 函数。(这是在编码指南中严格执行的)
  4. 打印行
  5. 跳转到第 #1 步中存储的第 # 行、第 # 列。

我不知道如何做上面提到的第 2 步。

vim code vimscript

2
推荐指数
1
解决办法
1930
查看次数

Vim 中的 R 和 gR 差异

当我在有标签的 vim 中使用RgR时,我没有注意到区别。根据实用 Vim,

虚拟替换模式由 gR 触发,并将制表符视为由空格组成。假设我们将光标定位在跨越八列屏幕空间的制表位上。如果我们切换到虚拟替换模式,我们最多可以键入七个字符,每个字符都将插入到制表符之前。

但我也可以在 R 中输入完全相同的内容。

R和 和有gR什么区别?

vim

2
推荐指数
1
解决办法
818
查看次数

可以使 vim 中的 grep 有条件地区分大小写吗?

当我使用/or?进行文档内搜索时,由于ignorecasesmartcase设置的组合,当搜索模式中出现大写字母时,它仅执行区分大小写的搜索。有没有办法用:grep命令来模拟这种行为,而无需-i每次都手动添加设置?

vim grep

2
推荐指数
1
解决办法
2335
查看次数

如何在listchars中使用多个空格?

我目前正在使用我在 vim casts 上找到的以下 listchars:

set listchars=tab:?\ ,eol:¬
Run Code Online (Sandbox Code Playgroud)

我想让标签是?后跟 3 个空格,但我似乎无法让它工作。我尝试了以下方法:

set listchars=tab:?\ \ \ ,eol:¬
set listchars=tab:?\   ,eol:¬
set listchars=tab:?<Space><Space><Space>,eol:¬
Run Code Online (Sandbox Code Playgroud)

都抛出错误。这可能吗?

vim vimrc

2
推荐指数
1
解决办法
1750
查看次数

如何用vim交换没有逗号的姓氏和名字

我有一长串名字的顺序Family name, First name。我想First name Last name用 vim将其更改为。

什么是最好的方法。感谢您的帮助。

Berclaz, Lucy
Carlow, Rese
Chang, Karen
DiCanilo, Sophy
Hisaeda, Kai
...
...
Run Code Online (Sandbox Code Playgroud)

Lucy Berclaz
Rese Carlow
Karen Chang
Sophy DiCanilo
Kai Hisaeda
Run Code Online (Sandbox Code Playgroud)

vim

2
推荐指数
1
解决办法
1162
查看次数

git 使用与 zsh 不同的 vim 版本

我在 vim 中安装了一个名为 YouCompleteMe 的插件。当安装了这个插件的 vim 启动时,如果 vim 的版本低于所需的最低版本,它会发出警告。

我正在使用 vim 7.3.754,它能够运行 YCM,但是当我执行像git mergeor 之类的命令时git commit --amend,我看到了警告:

YouCompleteMe unavailable: requires Vim 7.3.584+
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么 git 使用的 vim 版本与 zsh 不同,我怎样才能让它使用相同的版本?

vim zsh git

2
推荐指数
1
解决办法
1316
查看次数

Vim:如何将偶数行附加到奇数行

我有以下几行。

1
4
2
10
3
20
4
35
5
56
...
...(many more lines after this)
Run Code Online (Sandbox Code Playgroud)

我想在 Vim 中更改为以下内容。

1 4
2 10
3 20
4 35
5 56
...
...
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

vim text-editors newlines

2
推荐指数
2
解决办法
1737
查看次数

Vim:改为在 GVim 中打开当前窗口/选项卡

假设我已经在给定的 Vim 会话中工作了一段时间,现在我真的很想在GVim 中拥有我正在查看的所有内容。

实际用例是一个带有大量窗口的终端 Vim 会话......我想点击激活它们而不是每次都通过 Ctrl-W,这可以在 GVim 中完成,但不能在 Vim 中完成(不是我的,至少)。

有没有办法获取当前在 Vim 中打开的缓冲区/窗口/选项卡,并在 GVim 中打开它们?

vim gvim

2
推荐指数
2
解决办法
299
查看次数

为什么 Vim 仍然有 vi 兼容模式?

谁能解释为什么 Vim 仍然有 vi 兼容模式?为什么要使用它?

因此,我们必须保持set nocompatible我们的.vimrc; 有像文档的噪音{not in Vi}{Vi: no ++opt}等等。

而且我真的无法理解为什么开发人员如此小心地保存它。

vim vi

2
推荐指数
1
解决办法
436
查看次数

标签 统计

vim ×10

code ×1

git ×1

grep ×1

gvim ×1

macvim ×1

newlines ×1

text-editors ×1

vi ×1

vimrc ×1

vimscript ×1

zsh ×1