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

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


当前回答

尝试使用perltdy通过=正常模式命令进行格式化

:set equalprg=perltidy

其他回答

一些有用的:

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

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

我喜欢使用“sudobash”,我的系统管理员讨厌这样。他锁定了“sudo”,因此它只能与少数命令(ls、chmod、chown、vi等)一起使用,但无论如何我都能使用vim获得根shell:

bash$ sudo vi +'silent !bash' +q
Password: ******
root#

地图宏

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

例子:

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,

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

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

我最近发现了一件我觉得很酷的事:

:earlier 15m

将文档还原为15分钟前的状态。可以为您想要回滚的时间量提供各种参数,并且取决于撤消级别。可以用相反的命令反转:稍后

^O和^I

转到较旧/较新的位置。当您在文件中移动时(通过搜索、移动命令等),vim会记住这些“跳跃”,这样您就可以向后(^O-O表示旧的)和向前(^I-就在键盘上的I旁边)重复这些跳跃。我发现它在编写代码和执行大量搜索时非常有用。

gi

转到上次停止插入模式的位置。我发现自己经常编辑然后搜索一些东西。要返回编辑位置,请按gi。

gf

将光标放在文件名上(例如包含头文件),按gf,文件打开

gF

类似于gf,但识别格式“[文件名]:[行号]”。按gF将打开[文件名]并将光标设置为[行号]。

^P和^N

编辑时自动完成文本(^P-上一匹配项和^N下一匹配项)

^X^L

当编辑完成到同一行时(对编程有用)。您编写代码,然后回想文件中的某个位置有相同的代码。只需按^X^L,即可完成整行

^X^F

完整的文件名。你写了“/etc/pass”嗯,你忘了文件名。只需按^X^F,文件名就完成了

^Z或:sh

将临时文件移动到外壳。如果您需要快速抨击:

按^Z(将vi放在背景中)返回原始shell,按fg返回vim back按:sh转到子shell,按^D/exit返回vi