在 VIM 中将代码块包裹在代码周围

Jam*_*ery 2 vim

是否可以在 VIM 中围绕一段代码包装一个代码块?例如,如果我想围绕以下内容包装一个 while 循环,我该如何做到这一点而不必滚动到代码底部以添加右大括号:

if(z > y)
{
    switch(x)
    {
        case 1:
             addPoint();
             break;
        case 2:
             addValue();
             break;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是之后的代码的样子:

while (a > 10)
{
    if(z > y)
    {
        switch(x)
        {
             case 1:
                 addPoint();
                 break;
             case 2:
                 addValue();
                 break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*ker 6

Vim 没有内置的周边系统。我建议你看看 Tim Pope 的优秀环绕插件。然后假设你定位在if你可以这样做:

Vj%SBIwhile (a > 10)
Run Code Online (Sandbox Code Playgroud)
  • Vj%选择的块+条件。
  • SB围绕所述选择的文本用{}(读取与块环绕)
  • 在新插入的块的开头插入循环文本。

你不需要环绕来做到这一点。你可以用普通的香草 vim 来做到这一点。

Vj%>`]o}<esc>g;g;Owhile (a > 10)<cr>{<esc>
Run Code Online (Sandbox Code Playgroud)

但是我更喜欢使用环绕,因为它是一个非常方便的插件。

如需更多帮助,请参阅:

:h %
:h g;
:h `]
Run Code Online (Sandbox Code Playgroud)