Vim 可视模式:选择光标下的当前块

Vim 可视模式:选择光标下的当前块

考虑到我们有当前数据:

ID     NAME          AGE 
1      Joan          29
2      Peterson      16
3      Hunt          47
4      Wenche        12
5      Kennedy       29
6      Lottie        31

并且光标位于 上NNAME我该如何选择文本,以便如果|是可视块的分隔符,则选择应该是这样的

ID    |NAME    |     AGE 
1     |Joan    |     29
2     |Peterson|     16
3     |Hunt    |     47
4     |Wenche  |     12
5     |Kennedy |     29
6     |Lottie  |     31

每个元素后面的尾随空格与宽度匹配Peterson是没有必要的,但如果存在的话,我需要一种快速的方法来突出显示当前块。

答案1

将光标放在 上NNAME我只需执行以下操作,而不必太在意打高尔夫球:

<C-v>}hhhhhhhh

textobj-column 插件正是你想要的。神奇地。

答案2

有一些脚本可以使这变得更容易,但是假设您想使用原始 vim,这是我最广为人知的方法来做到这一点:

a. 确保文件的最后一行充满空格,如下所示:

"______________________________________"

然后转到“名称”中的第一个字母 N。点击ctrl-v, w, 999999j即可选择该列。

如果您的文件以换行符结尾,则最后一行需要充满空格,因为可视模式无法选择尚未创建的文件部分。如果最后一行是可行的内容,则不需要这样做。ctrl-v+w选择一个单词,然后999999j简单地将光标“向下”移动 99999 行(如果文件较小,则更少)。

注意:您将看到这是整个列的选择,空格与您所述的略有不同(但您说这并不重要)。据我所知,如果您希望列与最大单词的末尾对齐,而不是与下一个单词的开头对齐,则需要手动找到最大单词大小,选择可视长度,然后执行类似 的操作99999j

答案3

以下是一种方法:

  1. 首次使用control-v进入视觉块模式
  2. 然后输入2j向下两行到Peterson条目
  3. 使用小写字母将e块选择移动到单词末尾Peterson
  4. 4j将选择向下移动到最后四行的类型

编辑:如果您确实坚持避免使用“神奇数字”,您可以按照这里描述的方式进行操作: https://stackoverflow.com/questions/3736678/how-do-you-select-a-whole-column-in-visual-block-mode

  1. :set nosol(这样G命令就不会在可视块选择中回到第一行)
  2. control-v
  3. /P(你说没有神奇的数字,但没有禁止搜索字母——如果空格不是很重要你可以忽略这一点)
  4. e(转至单词末尾)
  5. G(将块选择移至底部)

其他提示:

  • 如果您稍后需要重新选择同一个块,您可以输入gv
  • v用于字符视觉模式和V行视觉模式,而control-v上面用于块视觉模式

有用的参考资料(除互联网外):

  • 德鲁·尼尔的书写Practical Vim得非常好

答案4

与 ygoncho 的答案相同,但没有“神奇数字”

Ctrl-V、W、G

G 直接跳到文件的最后一行,而不需要多次按下“9”

相关内容