什么可以替代数字>>在vim?

时间:2014-01-16 04:53:13

标签: vim

我想在许多代码行的前面插入8个空格, 我的光标位于if strftime()的前面,我想在if strftime()endif的所有行中添加8个空格,

13>>   #count how many lines behind the cursor ,and `number >>`  can do.

我不想计算光标后面有多少行,有没有简单的方法呢?

enter image description here

6 个答案:

答案 0 :(得分:1)

使用带有计数的>>,如果启用相对行号(:set relativenumber),则可以非常轻松地获取行数。

或者,使用>代替>>,后者接受动作命令。如果阻止后有一个空行,只需使用>}缩进到空白行。或者它可以是搜索,例如>/endif<Enter>

或直观地选择您想要的内容并按>一次。

答案 1 :(得分:1)

这就是我在这种情况下会做的事情:

  1. 将光标放在要选择的块的起始行的开头,然后 Ctrl + v (或 Ctrl +进入视觉模式的 Q 进入视觉模式
  2. 使用 j 将光标向下移动到块的结束行
  3. (大写)进入编辑模式
  4. 插入两个标签
  5. ESC 将更改应用于所有先前选定的行
  6. 我尝试了另一个选项,它也适用于我:

    1. :set nu显示行号
    2. :34,46>>然后第34行和第46行之间的行将进行>>更改,您可以在您的情况下将两行代码更改为您的。

答案 2 :(得分:1)

这是如何在不必估计线条的情况下完成的。

  1. 将光标放在第一行或最后一行缩进
  2. 使用 CTRL - V
  3. 将VI置于可视模式
  4. 将光标移动到块的另一端以缩进
  5. 点击&gt;
  6. enter image description here

答案 3 :(得分:0)

使用标记的另一种方式:

  1. 将光标放在要插入空白的第一行的开头,可能是在命令模式下键入/if (strftime/。现在输入 m ,然后输入任何字母,用该字母作为参考设置标记。例如,我输入 m ,然后输入 a 来设置标记'a'。

  2. 将光标置于要插入空白的最后一行的开头。现在使用不同的字母设置标记(我使用标记'b'。)

  3. 现在你的问题还不清楚你是想通过在开始时插入8个空格来换线,还是你真的想要使用shift命令移动线8次,我会用两个回答:

    • shiftwidth转8次:

      :'a,'b>>>>>>>>
      

      >个字符的数量是要移位的次数(在这种情况下为8),'a'b是以'开头的标记名称< / kbd> character。

    • 通过插入8个前导空格进行移位:输入

      :'a,'bs/^/        /
      

      是的,必须完全输入空格。

答案 4 :(得分:0)

v

以可视模式打开文件

现在选择要修改的代码块

>在所选块的每一行的开头插入一个标签。 你已经完成了。

答案 5 :(得分:0)

>命令采用{motion}选择要缩进的行范围。现在对于Vimscript的if...endif matchit.vim 插件(与Vim一起提供,请参阅:help matchit)可以添加循环。由于您之间有else个子句,因此您需要使用反向g%动作向后循环到最终endif

因此,缩进的最短命令是>g%