Vim: 如何在文件右侧插入一列
Vim: How to insert a column on the right side of a file
我有一个这样的文件,'¬'代表一个换行符。
aaaaaa¬
bb¬
cccccccc¬
ddddd¬
我知道我可以在可视块模式的左侧插入一列并更改它
对此,
eaaaaaa¬
ebb¬
ecccccccc¬
eddddd¬
但是,有什么简单的方法可以在任意指定列的右侧插入一列,使其看起来像这样吗?谢谢
aaaaaa e¬
bb e¬
cccccccc e¬
ddddd e¬
我的解决方法如下:
在所有行的末尾添加足够的空格以允许稍后使用可视块模式:
20A <ESC>
j.j.j.
...
使用可视块模式在空格内插入列
再次删除尾随空格(:s/\s*$//
)
这是我能想到的最简单的方法:
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
将 space 后跟 'e' 附加到文件中的每一行
(按照您的符号,其中 ¬
表示换行符):
aaaaaa e¬
bb e¬
cccccccc e¬
ddddd e¬
:%!column -t
将通过调用外部程序进行过滤使其全部对齐
文件内容:
aaaaaa e¬
bb e¬
cccccccc e¬
ddddd e¬
:%norm i
会将 e¬
的列向右移动更多,你可以这样做
(即对于每一行,走到最后,并在 e 之前插入 N
spaces)到
插入 20 个额外的 spaces:
aaaaaa e¬
bb e¬
cccccccc e¬
ddddd e¬
如果最后一列的宽度超过一个字符,您可以调整上面的内容
命令如 :%norm $b20i
(移动 'back' 到单词的开头
最后一列)。
如果你只想对文件的某些行执行上述操作,你可以简单地
在视觉上 select 命中 :
之前的那些行并省略 %
.
我有一个这样的文件,'¬'代表一个换行符。
aaaaaa¬
bb¬
cccccccc¬
ddddd¬
我知道我可以在可视块模式的左侧插入一列并更改它 对此,
eaaaaaa¬
ebb¬
ecccccccc¬
eddddd¬
但是,有什么简单的方法可以在任意指定列的右侧插入一列,使其看起来像这样吗?谢谢
aaaaaa e¬
bb e¬
cccccccc e¬
ddddd e¬
我的解决方法如下:
在所有行的末尾添加足够的空格以允许稍后使用可视块模式:
20A <ESC>
j.j.j.
...
使用可视块模式在空格内插入列
再次删除尾随空格(
:s/\s*$//
)
这是我能想到的最简单的方法:
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
将 space 后跟 'e' 附加到文件中的每一行
(按照您的符号,其中 ¬
表示换行符):
aaaaaa e¬
bb e¬
cccccccc e¬
ddddd e¬
:%!column -t
将通过调用外部程序进行过滤使其全部对齐
文件内容:
aaaaaa e¬
bb e¬
cccccccc e¬
ddddd e¬
:%norm i
会将 e¬
的列向右移动更多,你可以这样做
(即对于每一行,走到最后,并在 e 之前插入 N
spaces)到
插入 20 个额外的 spaces:
aaaaaa e¬
bb e¬
cccccccc e¬
ddddd e¬
如果最后一列的宽度超过一个字符,您可以调整上面的内容
命令如 :%norm $b20i
(移动 'back' 到单词的开头
最后一列)。
如果你只想对文件的某些行执行上述操作,你可以简单地
在视觉上 select 命中 :
之前的那些行并省略 %
.