在vim中缩小两个空格选择(可视模式)?

ale*_*nco 15 vim editor indentation batchedit

说我有这个代码:

var users = [
  { name: 'TJ', email: 'tj@earnboost.com' },
  { name: 'Loki', email: 'loki@earnboost.com' },
  { name: 'Jane', email: 'jane@earnboost.com' }
  ];
Run Code Online (Sandbox Code Playgroud)

我想在变量中选择三行(在可视模式下)并将其缩进两个空格:

var users = [
    { name: 'TJ', email: 'tj@earnboost.com' },
    { name: 'Loki', email: 'loki@earnboost.com' },
    { name: 'Jane', email: 'jane@earnboost.com' }
  ];
Run Code Online (Sandbox Code Playgroud)

我怎样才能在vim中实现这一目标?

Mic*_*ker 16

如果你sw是两个,你可以直观地选择三行(V)并做一个>.您还可以选择一个空格和三行(ctrl-v)的列,s用三个空格命中并替换所述空格,然后点击esc,这三条线将受益于这些改进.还有更多我确定的方法.通常情况下,您可以执行此操作>并将其sw设置为代码中所需的缩进.

  • 我必须首先使用`set sw = 2`来获得两个空格,以防万一有人不知道如何设置空格宽度:) (2认同)

Kri*_*ofe 8

在可视模式下选择行后.输入":","'<,'>"将自动添加,然后输入标准I和两个空格(空格键).

:'<,'>norm I<space><space>
Run Code Online (Sandbox Code Playgroud)


Fat*_*lan 5

这里特殊照顾的朋友都:le:ri:

:[range]ri[ght] [width]                                 :ri :right  

     Right-align lines in [range] at [width] columns
     (default 'textwidth' or 80 when 'textwidth' is 0). 
     {not in Vi}

:[range]le[ft] [indent]                                 :le :left     

       Left-align lines in [range].  Sets the indent in the        
       lines to [indent] (default 0).  {not in Vi}
Run Code Online (Sandbox Code Playgroud)

因此,只需在视觉上选择您的行,然后执行上述之一,如:

:'<,'>ri 2
Run Code Online (Sandbox Code Playgroud)

要么

:'<,'>le 5
Run Code Online (Sandbox Code Playgroud)

(注意:该'<,'>部分由VIM自动创建,它是您可视化选择的内容)

  • 那不是缩进.它会破坏所选文本中现有的缩进级别. (5认同)