在Vim

时间:2017-03-13 21:44:20

标签: vim indentation copy-paste paste auto-indent

我在Vim的putting文字时遇到了麻烦。

假设我想将/* Comment */行粘贴到$('table').append行...

下面
/* Comment */

for (var i=1; i<=lineLength ; i++) {
    $('table').append('<tr></tr>');
    for (var j=1; j<=lineLength; j++) {
    $('table tr:nth-last-child(1)').append('<td></td>');
    }
}

在大多数文本编辑器中,我的工作流程是

  1. 选择/* Comment */,点击剪切。
  2. 将光标移动到第一行代码的末尾,然后点击返回。
  3. 文本编辑器自动缩进,我只是点击粘贴。
  4. /* Comment */
    
    for (var i=1; i<=lineLength ; i++) {
        $('table').append('<tr></tr>');
        | <==Pipe is position of cursor before paste; pasted lines are inserted here.
        for (var j=1; j<=lineLength; j++) {
        $('table tr:nth-last-child(1)').append('<td></td>');
        }
    }
    

    但是对于vim,似乎我必须这样做:

    1. 转到/* Comment */行,点击dd
    2. 转到$('table').append行,点击p
    3. 新代码:

      for (var i=1; i<=lineLength ; i++) {
              $('table').append('<tr></tr>');
      /* Comment */. <== Comment is not correctly indented.
              for (var j=1; j<=lineLength; j++) {
              $('table tr:nth-last-child(1)').append('<td></td>');
              }
          }
      
      1. 手动修复错误的缩进代码。
      2. 当我使用o开始一个新行时,Vim会自动缩进,所以它似乎也应该将putting处理到一个新行....是否有一个命令可以让我put具有正确缩进的新代码行?

3 个答案:

答案 0 :(得分:3)

您可以使用// <Fills> Fill fill0 = new Fill(); // Default fill Fill fill1 = new Fill( new PatternFill( new ForegroundColor() { Rgb = new HexBinaryValue() { Value = "DCDCDC" } } ) { PatternType = PatternValues.Solid }); Fills fills = new Fills(); // appending fills fills.Append(fill0); fills.Append(fill1); CellFormat _0_default = new CellFormat() { FontId = 0, FillId = 0, BorderId = 0 }; // Default style : Mandatory | Style ID =0 CellFormat _1_header = new CellFormat() { FontId = 1, FillId = 1, ApplyFill = true }; //HEADER CellFormats cellformats = new CellFormats(); cellformats.Append(_0_default); cellformats.Append(_1_header); ]p粘贴当前行的缩进级别。请注意,这仅适用于寄存器的内容是按行的方式。见[p

如果您想使用:h ]p和朋友,但总是希望它是直线的,那么我建议您查看Tim Pope的unimpaired.vim插件。它还提供]p / >p映射,将一个缩进级别粘贴得更深/更浅,以及粘贴然后重新缩进的<p / =p,类似于{{ 1}}。

答案 1 :(得分:2)

答案 2 :(得分:0)

:nnoremap p p='] 与其他答案相同,但击键次数更少。无需视觉选择。