我一直在Vim中学习新的命令,但我相信每个人都偶尔会学习一些新东西。我最近才知道:

Zz, zt, zb -位置光标在中间,顶部或底部的屏幕

还有什么其他有用或优雅的命令是你希望很久以前就学会的?


当前回答

对于强制Vim配置,请查看https://github.com/jmcantrell/dotfiles-vim

其他回答

直到[character] (t)。它适用于任何接受范围的命令。我最喜欢的是ct;或ct),它会删除尾随分号/右括号之前的所有内容,然后将您置于插入模式。

另外,G和gg也很有用(分别转到底部和顶部)。

ma
move cursor down
:'a,.!program

这将获取从您设置的a标记(ma)到当前行(.)之间的所有文本,通过程序运行它,并用结果替换标记区域的内容。您甚至可以使用它来查看目录的内容(例如),通过创建一个空行,然后将光标放在该行上,

:.!ls

哦,你可以像这样为a-z(即ma)设置标记,以及

'a

会跳到你标记为"a "的位置

/向前搜索,和?重复向后搜索,而不需要补充搜索模式。

Groovy的东西。Vi被严重低估了。一旦你掌握了它的窍门,你就再也不想使用IDE提供的编辑器了。

: % s /搜索/替换,

您可以使用除/(斜杠)以外的其他字符分隔模式以进行替换。这样就不必转义文件路径的斜杠。

我最近学到的令人惊叹的技巧是一种进行复杂搜索和替换的方法。在过去,我经常有一个非常复杂的regexp来进行替换,但它不起作用。有一个更好的方法:

:set incsearch             " I have this in .vimrc
/my complicated regexp     " Highlighted as you enter characters
:%s//replace with this/    " You don't have to type it again

这里的“技巧”(找不到更好的词)是使用搜索来创建regexp(在输入字符时'incsearch'突出显示它),然后在替换中使用空模式:空模式默认为最后一个搜索模式。

例子:

/blue\(\d\+\)
:%s//red\1/

等价于:

:%s/blue\(\d\+\)/red\1/

See:

:help 'incsearch'
:help :substitute

ZZ(工作方式:wq)

关于光标的位置:我发现光标总是停留在屏幕中间是很酷的

set scrolloff=9999