Vim:在行尾选择矩形块

时间:2018-12-20 19:30:54

标签: vim

如何在Vim中选择超出行尾的矩形文本块?

假设我有

aa
bbb
cc
dddd
ee

我想选择一个在所有行上扩展四个字符的矩形块。如果_被认为是空格,那么我想要:

aa__
bbb_
cc__
dddd
ee__

矩形可视块C-v仅延伸到最后选择的行的末端:

rectangular select which extends beyond the end of the line

在Emacs中,我可以使用C-x <SPC>rectangle-mark-mode)做我想做的事情。 ;)

2 个答案:

答案 0 :(得分:6)

具有参差不齐的边框的逐块可视模式

要将块状视觉选择扩展到所有覆盖行的末尾,可以按$将Vim切换到“参差不齐的边框”选择模式。 :help v_b_A中提到了这个“技巧”:

  

通过逐块选择,A {string}将{string}附加到   块的每一行上的块。有一些不同的行为   由于行长不同,所以块RHS不是笔直的:

     
      
  1. 使用$创建区块   在这种情况下,字符串将附加到每行的末尾。
  2.   
  3. 使用{move-around}创建了区块   在这种情况下,字符串将附加到每行的代码块末尾,并插入空格以填充到代码块末尾列。
  4.   

虚拟编辑

解决此问题的另一种方法是通过'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)