Vim:如何在文件的右侧插入一列

  • 本文关键字:插入 一列 文件 Vim vim
  • 更新时间 :
  • 英文 :


我有一个这样的文件,''-'表示换行符。

aaaaaa¬
bb¬
cccccccc¬
ddddd¬

我知道我可以在视觉块模式下在左边插入一列并更改它对此,

eaaaaaa¬
ebb¬
ecccccccc¬
eddddd¬

但是,有没有什么简单的方法可以在任何指定列的右侧插入一列,使其看起来像这样?谢谢

aaaaaa              e¬
bb                  e¬
cccccccc            e¬
ddddd               e¬

以下是我能想到的最简单的方法:

gg                  " move the cursor to line 1
A          <Esc>    " append the desired number of spaces and leave insert mode
<C-v>               " start visual-block mode
G                   " expand the selection to the last line
re                  " replace the content of the visual selection with e

这需要:set virtualedit=block:set nostartofline。参见:help 'virtualedit':help 'startofline'

一个很好的方法是:

:%norm A e为文件中的每一行附加一个后面跟着"e"的空格(按照¬表示换行符的符号(:

aaaaaa e¬
bb e¬
cccccccc e¬
ddddd e¬

:%!column -t将通过调用外部程序进行筛选来将其全部对齐文件内容:

aaaaaa    e¬
bb        e¬
cccccccc  e¬
ddddd     e¬

:%norm $20i会将的列向右移动更多,你可以这样做(也就是说,对于每一行,转到末尾,并在e之前插入N个空格(插入20个额外空格:

aaaaaa                       e¬
bb                           e¬
cccccccc                     e¬
ddddd                        e¬

如果最后一列的宽度超过一个字符,则可以调整以上内容类似:%norm $b20i的命令(将"移回"到最后一列(。

如果您只想对文件的某些行执行上述操作,您可以简单地在命中CCD_ 12之前视觉地选择那些行并且省略CCD_。

我的解决方法如下:

  1. 在所有行的末尾添加足够的空间,以便以后使用视觉块模式:

    • 20A <ESC>
    • j.j.j.
  2. 使用视觉块模式将列插入空间中

  3. 再次删除尾部空格(:s/s*$//(

相关内容

  • 没有找到相关文章