人们谈论常见技巧的问题很多,特别是“Vim+ctags提示和技巧”。

然而,我并没有提到Vim新手会觉得很酷的常用快捷方式。我所说的是一位经验丰富的Unix用户(无论是开发人员、管理员,还是两者都有),他们认为自己知道99%的人从未听说过或梦想过的东西。这不仅让他们的工作更容易,而且很酷,很粗糙。毕竟,Vim位于世界上最黑暗的角落丰富的操作系统中,因此它应该具有只有少数特权人士知道并想与我们分享的复杂性。


当前回答

把这个放到.vimrc中,有一个命令来漂亮地打印xml:

function FormatXml()
    %s:\(\S\)\(<[^/]\)\|\(>\)\(</\):\1\3\r\2\4:g
    set filetype=xml
    normal gg=G
endfunction

command FormatXml :call FormatXml()

其他回答

让我们看看一些非常小的IDE编辑器如何进行列转换。

:%s/\(.*\)^I\(.*\)/\2^I\1/

解释

\(和\)是如何记住正则表达式中的内容。1、2等是如何检索记忆中的内容。

>>> \(.*\)^I\(.*\)

记住所有内容,然后是^I(tab),然后是所有内容。

>>> \2^I\1

用“你记得的第二件事”替换上面的东西,然后是“你记得第一件事”——本质上是做一个换位。

一些有用的:

:set nu # displays lines
:44     # go to line 44
'.      # go to last modification line

我最喜欢的:Ctrl+n单词完成!

我经常想突出显示一个特定的单词/函数名,但还不想搜索到它的下一个实例:

map m* *#

:! [command]在Vim中执行外部命令。

但是在冒号后面加一个点:。![command],它会将命令的输出转储到当前窗口中。那就是:!

例如:

:.! ls

我经常使用此功能,例如将当前日期添加到我正在键入的文档中:

:.! date

我很少在大多数Vim教程中找到一个,但它非常有用(至少对我来说),那就是

g;和g,

在变更列表中移动(向前、向后)。

让我来演示一下我是如何使用它的。有时我需要复制并粘贴一段代码或字符串,比如CSS文件中的十六进制颜色代码,所以我搜索、跳转(不在乎匹配的位置)、复制它,然后跳回(g;)编辑代码的位置以最终粘贴它。不需要创建标记。更简单。

只是我的20美分。