首页 > 解决方案 > Vim:选择超过行尾的矩形块

问题描述

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

假设我有

aa
bbb
cc
dddd
ee

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

aa__
bbb_
cc__
dddd
ee__

矩形可视块C-v仅延伸到所选最后一行的末尾:

超出行尾的矩形选择

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

标签: vim

解决方案


具有参差不齐的边框的块状视觉模式

要将逐块视觉选择扩展到所有覆盖行的末尾,您可以按$将 Vim 切换到“不规则边框”选择模式。这个“技巧”在以下位置提到:help v_b_A

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

  1. 块是用 $ 创建的。在这种情况下,字符串被附加到每行的末尾。
  2. 块是用 {move-around} 创建的。在这种情况下,字符串被附加到每一行的块的末尾,并且插入空格以填充到块的末尾列。

虚拟编辑

解决此问题的另一种方法是通过以下'virtualedit'选项:

:set virtualedit=all

这使得光标移动可以访问行尾之后的空间,因此您可以根据需要扩展选择范围。拉动该文本将插入空白填充以形成一个矩形块,因此行为与上述替代方法不同。


推荐阅读