例如,我经常在块或段落中的所有行上使用substitute命令。我有一个适合我的习语:
dip or yip or cip
但是每当我这样做的时候,我都会觉得我没有理解VI的语言。我可以对对象进行其他操作,比如
private void timerClose_Tick(object sender, System.Timers.ElapsedEventArgs e)
{
if (this.InvokeRequired)
{
this.Invoke((MethodInvoker)delegate ()
{
this.Close();
});
}
else
{
this.Close();
}
}
但不是啜饮。根据我的理解,它不适合vi / vim语言。所以,我这样做!ip,然后删除'!',然后继续键入我的///命令。这是表达我所知道的那种操作的最短,最不自然的方式。我错过了什么吗?
答案 0 :(得分:2)
我理解你的观点,但我相信使用默认命令没有更好的方法。当您拥有+visual
功能时,还有另一种选择:
vip:s/foo/bar/
但它有相同的密钥数,没有优势。
如果您对自定义开放,则可以创建一个新命令来执行您期望的操作。例如,您可以键入sip
并将光标放在命令行中,并使用s/
,如:help :map-operator
中所述。例如:
nnoremap s :set opfunc=SubstituteOperator<CR>g@
function! SubstituteOperator(type, ...)
silent call feedkeys(":'[,']:s/", 'n')
endfunction