考虑到我们有当前数据:
ID NAME AGE
1 Joan 29
2 Peterson 16
3 Hunt 47
4 Wenche 12
5 Kennedy 29
6 Lottie 31
并且光标位于 上N
,NAME
我该如何选择文本,以便如果|
是可视块的分隔符,则选择应该是这样的
ID |NAME | AGE
1 |Joan | 29
2 |Peterson| 16
3 |Hunt | 47
4 |Wenche | 12
5 |Kennedy | 29
6 |Lottie | 31
每个元素后面的尾随空格与宽度匹配Peterson
是没有必要的,但如果存在的话,我需要一种快速的方法来突出显示当前块。
答案1
答案2
有一些脚本可以使这变得更容易,但是假设您想使用原始 vim,这是我最广为人知的方法来做到这一点:
a. 确保文件的最后一行充满空格,如下所示:
"______________________________________"
。
然后转到“名称”中的第一个字母 N。点击ctrl-v, w, 999999j
即可选择该列。
如果您的文件以换行符结尾,则最后一行需要充满空格,因为可视模式无法选择尚未创建的文件部分。如果最后一行是可行的内容,则不需要这样做。ctrl-v+w
选择一个单词,然后999999j
简单地将光标“向下”移动 99999 行(如果文件较小,则更少)。
注意:您将看到这是整个列的选择,空格与您所述的略有不同(但您说这并不重要)。据我所知,如果您希望列与最大单词的末尾对齐,而不是与下一个单词的开头对齐,则需要手动找到最大单词大小,选择可视长度,然后执行类似 的操作99999j
。
答案3
以下是一种方法:
- 首次使用
control-v
进入视觉块模式 - 然后输入
2j
向下两行到Peterson
条目 - 使用小写字母将
e
块选择移动到单词末尾Peterson
4j
将选择向下移动到最后四行的类型
编辑:如果您确实坚持避免使用“神奇数字”,您可以按照这里描述的方式进行操作: https://stackoverflow.com/questions/3736678/how-do-you-select-a-whole-column-in-visual-block-mode
:set nosol
(这样G
命令就不会在可视块选择中回到第一行)control-v
/P
(你说没有神奇的数字,但没有禁止搜索字母——如果空格不是很重要你可以忽略这一点)e
(转至单词末尾)G
(将块选择移至底部)
其他提示:
- 如果您稍后需要重新选择同一个块,您可以输入
gv
v
用于字符视觉模式和V
行视觉模式,而control-v
上面用于块视觉模式
有用的参考资料(除互联网外):
- 德鲁·尼尔的书写
Practical Vim
得非常好
答案4
与 ygoncho 的答案相同,但没有“神奇数字”
Ctrl-V、W、G
G 直接跳到文件的最后一行,而不需要多次按下“9”