这不是特别重要,但这是我一直好奇的事情。
我使用 rST (Sphinx) 编写了大量文档。这是你写标题的方式:
My Awesome Heading
==================
Lorem ipsum dolor...
Run Code Online (Sandbox Code Playgroud)
我想知道 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 移动键。即执行以下操作:
我不知道如何做上面提到的第 2 步。
当我在有标签的 vim 中使用R和gR时,我没有注意到区别。根据实用 Vim,
虚拟替换模式由 gR 触发,并将制表符视为由空格组成。假设我们将光标定位在跨越八列屏幕空间的制表位上。如果我们切换到虚拟替换模式,我们最多可以键入七个字符,每个字符都将插入到制表符之前。
但我也可以在 R 中输入完全相同的内容。
R和 和有gR什么区别?
当我使用/or?进行文档内搜索时,由于ignorecase和smartcase设置的组合,当搜索模式中出现大写字母时,它仅执行区分大小写的搜索。有没有办法用:grep命令来模拟这种行为,而无需-i每次都手动添加设置?
我目前正在使用我在 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)
都抛出错误。这可能吗?
我有一长串名字的顺序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 中安装了一个名为 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 不同,我怎样才能让它使用相同的版本?
我有以下几行。
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 会话中工作了一段时间,现在我真的很想在GVim 中拥有我正在查看的所有内容。
实际用例是一个带有大量窗口的终端 Vim 会话......我想点击激活它们而不是每次都通过 Ctrl-W,这可以在 GVim 中完成,但不能在 Vim 中完成(不是我的,至少)。
有没有办法获取当前在 Vim 中打开的缓冲区/窗口/选项卡,并在 GVim 中打开它们?
谁能解释为什么 Vim 仍然有 vi 兼容模式?为什么要使用它?
因此,我们必须保持set nocompatible我们的.vimrc; 有像文档的噪音{not in Vi},{Vi: no ++opt}等等。
而且我真的无法理解为什么开发人员如此小心地保存它。