人们谈论常见技巧的问题很多,特别是“Vim+ctags提示和技巧”。
然而,我并没有提到Vim新手会觉得很酷的常用快捷方式。我所说的是一位经验丰富的Unix用户(无论是开发人员、管理员,还是两者都有),他们认为自己知道99%的人从未听说过或梦想过的东西。这不仅让他们的工作更容易,而且很酷,很粗糙。毕竟,Vim位于世界上最黑暗的角落丰富的操作系统中,因此它应该具有只有少数特权人士知道并想与我们分享的复杂性。
人们谈论常见技巧的问题很多,特别是“Vim+ctags提示和技巧”。
然而,我并没有提到Vim新手会觉得很酷的常用快捷方式。我所说的是一位经验丰富的Unix用户(无论是开发人员、管理员,还是两者都有),他们认为自己知道99%的人从未听说过或梦想过的东西。这不仅让他们的工作更容易,而且很酷,很粗糙。毕竟,Vim位于世界上最黑暗的角落丰富的操作系统中,因此它应该具有只有少数特权人士知道并想与我们分享的复杂性。
当前回答
我喜欢:ls命令。
其他回答
sudo write的变化:
插入.vimrc
cmap w!! w !sudo tee % >/dev/null
重新加载vim后,您可以将“sudo save”保存为
:w!!
在插入模式下,ctrl+x,ctrl+p将完成(如果您喜欢的话,可以使用可能的完成菜单)您键入的当前长标识符。
if (SomeCall(LONG_ID_ <-- type c-x c-p here
[LONG_ID_I_CANT_POSSIBLY_REMEMBER]
LONG_ID_BUT_I_NEW_IT_WASNT_THIS_ONE
LONG_ID_GOSH_FORGOT_THIS
LONG_ID_ETC
∶
%当您希望在项目的两个不同副本之间比较文件而不磨损粉色(从项目1的根)时,也是很好的:
:vert diffs /project2/root/%
In Insert mode
<C-A> - Increments the number under cursor
<C-X> - Decrements the number under cursor
如果我们想在vim中生成序列号,这将非常有用假设我们想插入1-10行,数字从1到10[如第1行的“1”,第2行的“2”…]在第一行插入“0”并复制该行和过去的9次因此,所有行都将显示“0”。
运行以下Ex命令
:g/^/exe "norm " . line(".") . "\<C-A>"
地图宏
我经常发现,像定义宏一样,动态定义一些键映射非常有用。这里的问题是,映射是递归的,并且一直执行到失败。
例子:
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,
只是一个愚蠢的例子:)。
我完全知道所有的缺点——恰好我发现它在某些场合非常有用。此外,在工作中观看它可能会很有趣;)。