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

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


当前回答

宏可以调用其他宏,也可以调用自身。

eg:

qq0dwj@qq@q

…将删除每行中的第一个单词,直到文件结束。

这是一个非常简单的示例,但它展示了vim的一个非常强大的功能

其他回答

:%!xxd

将vim制作成十六进制编辑器。

:%!xxd -r

还原

警告:如果不使用二进制(-b)进行编辑,可能会损坏文件。–Josh Lee在评论中写道。

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

g;和g,

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

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

只是我的20美分。

在构建过程缓慢的项目上工作时,我总是在后台构建,并将输出通过管道发送到名为errors.err的文件(类似于make debug 2>&1|tee errors.err)。这使得我可以在构建过程中继续编辑或审阅源代码。当它准备好后(使用GTK上的pynotify通知我它已经完成),我可以使用quickfix在vim中查看结果。首先发出:cf[ile],读取错误文件并跳转到第一个错误。我个人喜欢使用cwindow在单独的窗口中获得构建结果。

为了将文本从Vim复制到剪贴板供其他应用程序使用,请选择要在视觉模式下复制的文本,然后按“+y”。这样,您可以轻松地将文本粘贴到其他应用程序。

如果您垂直拆分了窗口,并且希望从右侧窗口复制某些内容,则这特别有用。使用set mouse=r不会帮助您解决这种情况,因为它也会选择左侧窗口中的所有内容。

注意,必须使用xterm支持编译vim。

不确定这是否算是黑暗角落,但我只是刚刚学会了。。。

:g/match/y A

将把所有包含“match”的行拖(复制)到“a/@a”寄存器中。(大写字母a使vim附加了“yankings”,而不是替换之前的寄存器内容。)我最近在制作Internet Explorer样式表时经常使用它。