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

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


当前回答

重新使用

与其他命令混合的动作,此处更多。

tx
fx
Fx

在Vim中使用您喜爱的工具。

:r !python anything you want or awk or Y something

在视觉模式下重复,结合上面的提示,效果很好。

;

其他回答

不太晦涩,但有几个“delete in”命令非常有用,例如。。

指示删除当前单词di(要在当前父对象中删除di“删除引号之间的文本

其他信息可以在:帮助文本对象上找到

:sp%:h-目录列表/文件选择器,使用当前文件的目录

(属于rampion的cd提示下的评论,但我还没有评论权限)

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

g;和g,

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

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

只是我的20美分。

地图宏

我经常发现,像定义宏一样,动态定义一些键映射非常有用。这里的问题是,映射是递归的,并且一直执行到失败。

例子:

enum ProcStats
{
        ps_pid,
        ps_comm,
        ps_state,
        ps_ppid,
        ps_pgrp,
:map X /ps_<CR>3xixy<Esc>X

给予:

enum ProcStats
{
        xypid,
        xycomm,
        xystate,
        xyppid,
        xypgrp,

只是一个愚蠢的例子:)。

我完全知道所有的缺点——恰好我发现它在某些场合非常有用。此外,在工作中观看它可能会很有趣;)。

在插入模式下,Ctrl-n将根据打开缓冲区中的所有单词自动完成您键入的任何单词。如果有多个匹配项,它将为您提供一个可能的单词列表,您可以使用ctrl-n和ctrl-p进行循环。