用vi缩进或注释几个文本行

时间:2010-03-17 14:02:41

标签: vim

可以用vim或vim同时评论或缩进多行吗?例如:

for item in Lista:
    ind = int(floor(1.0*(item-lmin)/width))
    if ind==nintervals:
        ind=ind-1
    print item,ind

将其评论为:

#for item in Lista:
    #ind = int(floor(1.0*(item-lmin)/width))
    #if ind==nintervals:
        #ind=ind-1
    #print item,ind

或缩进为:

  for item in Lista:
      ind = int(floor(1.0*(item-lmin)/width))
      if ind==nintervals:
          ind=ind-1
      print item,ind

Pd积。 VI和VIM之间的区别是否相关?

11 个答案:

答案 0 :(得分:38)

这是另一种方式。

  1. 使用ctrl+v
  2. 阻止行
  3. 使用//
  4. 插入评论标记(I
  5. ESC
  6. 逃脱

    键入键是

    ctrl+vjjjjI// ESC

答案 1 :(得分:14)

要评论,按一个大写 V 进入VISUAL LINE模式,选择所有行,然后按进入命令模式并使用命令(注意VIM已经包括'<,'>标记给你:

:'<,'>s/^/#/

如果您更喜欢文本附近的哈希标记,而不是左边距附近,则命令为:

:'<,'>s/^\(\s*\)/\1#/

要缩进,请选择相同的块,然后键入>缩进,<取消隐藏。

答案 2 :(得分:6)

输入:set number。记下要评论的块的开始和结束行号。然后进行地址范围替换,例如

:12,17s/^/#

答案 3 :(得分:3)

与接受的答案类似,但对于块或段落更容易:

  1. 区块:Ctrl + V
  2. 选择段落:}
  3. 插入模式:I(大写i)
  4. 输入要插入的字符:#(字符后面有空格,没有Enter!)
  5. 按:ESC
  6. 这应该自动完成所有选定块中的字符。 基本上与接受的答案的不同之处在于,不是使用j逐行下去,而是使用}来选择整个段落(或者您可以使用G作为文件结尾,对于前。

    简短版本:

    Ctrl + V + } + I + # + ESC

答案 4 :(得分:2)

我知道这里有很多答案已经解释了如何使用><进行缩进,所以我不打算为此烦恼。但是,对于评论,虽然您可以使用块插入或替换来快速而肮脏,但您可以使用NERD Commenter plugin做得更好。它提供了以各种方式注释和取消注释的命令,它根据语法知道要插入的注释符号,如果语言支持它,它可以执行相当多行的注释。

答案 5 :(得分:2)

这里有很多答案,都有主题。最好的方法取决于上下文(因为上下文决定了最简单的导航方法),所以我会对上下文做一些假设。如果您要缩进或注释的部分是单个段落(例如,您想要缩进或评论从光标到下一个空行的所有内容),您可以缩进:

>)

如果光标不在段落的开头,但是要缩进的部分是单个段落而光标位于中间,请使用

>ip

最后,假设您要缩进由{}分隔的代码块,并且光标位于该块的中间。使用

>i{

要评论,在每种情况下只需更换&gt;使用v并使用上面的命令进行块选择,然后执行文本替换,如s /^/#/.

关键是导航命令。我强烈推荐

:help v_a

答案 6 :(得分:1)

使用可视模式选择线条。

  • 要缩进,请先键入>><<以分别向右或向左缩进。要缩进 n 次,请键入n>>n<<

  • 要注释掉,请用注释替换行的开头:

    : '&LT;,' &GT; S / ^ /#/

'<,'>表示“从选择开始到结束。

s/^/#/使用#替换范围中每一行的开头,假设#在注释中添加一行。

答案 7 :(得分:0)

将光标放在第一行,计算应缩进的行数,在上例中为5,然后为hash(#)类型 :.,.+5%s/^\([ <tab>]*\)/#\1/<enter>或标签缩进, :.,.+5%s/^\([ <tab>]*\)/<tab>\1/<enter>, &LT;标签&gt;和&lt; enter&gt;是标签并输入密钥。

这样做可能有更优雅的方法,但这样的事情是一件很快的事情。

答案 8 :(得分:0)

对于评论,你可以使用VISUAL BLOCK选择(Ctrl-V)并选择行的开头,然后按Shift-I并写一个#。按Esc后,所有行都会得到#。

答案 9 :(得分:0)

我通常的解决方案是:

<ESC>
<q><a> => start a macro and save it as macro a
<^> => to get to the start of the line
<i> => insert mode
<#> => Add the #
<ESC> => End insert mode
<down> => Move to the next line
<q> => End macro

然后一次:

<[at]><a> => repeat macro a

然后重复&lt; [at]&gt;&lt; [at]&gt; (重复上一次执行的宏)直到所有行都被注释。您可以按住&lt; [at]&gt;让键盘重复完成剩下的工作。

BTW:如果没有stackoverflow将其转换为“&gt; blockquote”,你如何在这里写一个[at]符号?

要缩进:

[shift] + [v] => line select mode
[down] => until all lines to indent are selected

然后:

[>] => indent once

或:

[2..x][>] => indent 2..x levels

答案 10 :(得分:0)

如果您使用的是Python(或其他使用#作为评论的语言),则可以更快速地评论多行:

  1. 从行首开始输入视觉阻止模式(Ctrl+v)。
  2. 根据需要(j多次)向下。
  3. r,然后按#
  4. ,用#替换空格

    要取消注释,请执行相同操作,但对于第三步,请将其替换为空格。