我有一个这样的文件,''-'表示换行符。
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¬
的列向右移动更多,你可以这样做(也就是说,对于每一行,转到末尾,并在e之前插入N
个空格(插入20个额外空格:
aaaaaa e¬
bb e¬
cccccccc e¬
ddddd e¬
如果最后一列的宽度超过一个字符,则可以调整以上内容类似:%norm $b20i
的命令(将"移回"到最后一列(。
如果您只想对文件的某些行执行上述操作,您可以简单地在命中CCD_ 12之前视觉地选择那些行并且省略CCD_。
我的解决方法如下:
-
在所有行的末尾添加足够的空间,以便以后使用视觉块模式:
20A <ESC>
j.j.j.
-
使用视觉块模式将列插入空间中
-
再次删除尾部空格(
:s/s*$//
(