如何在Vim中选择超出行尾的矩形文本块?
假设我有
aa
bbb
cc
dddd
ee
我想选择一个在所有行上扩展四个字符的矩形块。如果_
被认为是空格,那么我想要:
aa__
bbb_
cc__
dddd
ee__
矩形可视块C-v
仅延伸到最后选择的行的末端:
在Emacs中,我可以使用C-x <SPC>
(rectangle-mark-mode
)做我想做的事情。 ;)
答案 0 :(得分:6)
要将块状视觉选择扩展到所有覆盖行的末尾,可以按$
将Vim切换到“参差不齐的边框”选择模式。 :help v_b_A
中提到了这个“技巧”:
通过逐块选择,A {string}将{string}附加到 块的每一行上的块。有一些不同的行为 由于行长不同,所以块RHS不是笔直的:
- 使用$创建区块 在这种情况下,字符串将附加到每行的末尾。
- 使用{move-around}创建了区块 在这种情况下,字符串将附加到每行的代码块末尾,并插入空格以填充到代码块末尾列。
解决此问题的另一种方法是通过'virtualedit'
选项:
:set virtualedit=all
这使光标移动后的行末尾的空间可以访问,因此您可以根据需要扩展选择范围。敲打该文本将插入空白填充以形成一个矩形块,因此其行为与上述替代方法不同。
答案 1 :(得分:0)
使用替代
:%s,^..$,&__,g | %s,^...$,&_,g
: ............ command
% ............ whole file
^ ............ begining of line
.. ........... two characters
$ ............ end of line
& ............ the whole search pattern
__ ........... (plus) the chars we want
g ............ globally
| ............ another command (this time for 3 chars)