在Vim中选择代码块


13

给定这样的代码:

588          while ($linecounter > 0) {
589             $token = " ";
590             while ($token != PHP_EOL) {
591                 if (fseek($handle, $pos, SEEK_END) == -1) {
592                     $beginning = true;
593                     break;
594                 }
595                 $token = fgetc($handle);
596                 $pos--;
597             }
598             $linecounter--;
599             if ($beginning) {
600                 rewind($handle);
601             }
602         }

光标位于第=590行的字符处。

这是选择代码块的最有效方法:

  1. 590-597行
  2. 591-596行(仅内部)

Answers:


20

首先,请执行以下操作:

  • 点击$以转到行尾{
  • 按下vV(取决于您是否要选择线)
  • 推动%(跳至匹配的支架)。

要仅选择内部零件,请进入内部零件并使用i{方向修饰符。

例如,要删除当前{…}块中的所有内容,请输入:di{


1
哇,我刚刚学会了使用方法yi(,谢谢:)
Takehin 2011年

10
  1. $跳转到您所在行的末尾(在大括号上方)
    v以开始选择(V针对整行)
    %以跳转到匹配的括号。

  2. j向下移动一行,以便您的光标位于您要选择的括号内
    v以开始选择(V对于整行),
    i{选择括号内的所有内容


方法2可能是这里最好的方法,因为方法1中的$移动仅因为行括号在行尾才起作用。如果光标在大括号内的任何位置,方法2都可以在不移动j的情况下工作。
SpoonMeiser

3

要稍微扩展一下Caleb的答案,请vi{选择代码块的“内部”。要包括代码块的“外部”,即包括花括号,请使用va{

但是,这将不包括该while节。为此,您可以使用o将光标移动到选择的开头,然后0将选择移动到行的开头。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.