将s命令应用于对象的正确方法是什么?

时间:2017-03-08 10:32:25

标签: vim vi

例如,我经常在块或段落中的所有行上使用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,然后删除'!',然后继续键入我的///命令。这是表达我所知道的那种操作的最短,最不自然的方式。我错过了什么吗?

1 个答案:

答案 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