说我在(g)Vim中有这个简单的文字:
a b c
a b c
a b c
a b c
a b c
更改为可视块选择模式后,如何选择整个第3列? Ctrl + V G 选择全文。我正在寻找一个键盘快捷键来选择整个列选择(如果存在)。
感谢。
答案 0 :(得分:44)
CTRL-V 进入块选择模式(允许您选择矩形文本块)。在gvim中,这与Windows的粘贴快捷方式冲突,因此您可以使用 CTRL-Q 。
不幸的是, CTRL-Q [G]没有做你想做的事情,因为[G]动作在文件中线性移动,所以你仍然需要依赖于使用计数[j]动议。你可以通过使用一个非常大的计数来避免确切地知道文件有多大,比如9999.所以完整的命令是 CTRL-Q [9999j]。
唉,我不知道怎么回避这个丑陋的黑客计数。
编辑:哦,我读得你的问题太快了,错过了你已经提到过关于视觉模块模式的新内容。我想这是一个非常无用的答案,对不起!答案 1 :(得分:28)
G 转到最后一行,但如果startofline
或compatible
(启用startofline
),则将光标移动到第一个非空白位置选项已设定。如果要保留相同的列,请在进入可视块模式之前设置nosol
,然后点击 G 。
来自startofline
的手动输入:
当“打开”下面列出的命令时,将光标移动到该行的第一个非空白处。关闭时光标保持在同一列中(如果可能)。这适用于命令:CTRL-D,CTRL-U,CTRL-B,CTRL-F,“G”,“H”,“M”,“L”,gg,以及命令“d”,“&lt ;<”和“>>”使用linewise运算符,带有计数的“%”和缓冲更改命令(CTRL- ^,:bnext,:bNext等)。
答案 2 :(得分:6)
选择列的简便方法可以使用插件vis.vim
进入视觉模式,选择列ctrl+v
,然后你可以随心所欲地做任何事情
使用 V , v 或 Ctrl + V 以可视方式标记某个区域。然后键入:B cmd
(此命令将出现as::'<,'>B cmd
)
该命令将仅应用于视觉选择的区域。
例如:
使用ctrl-v
选择列,然后仅对该列进行替换。
Ctrl-V ..move .. :B s/pattern/becomes/
使用 Ctrl-V 选择列,然后将外部过滤器应用于该列:
Ctrl-V ..move .. :B !sort
答案 3 :(得分:0)
我确定我不是唯一一个寻求解决更普遍问题的方法的人。说我有:
Some text.
one two three
one two three
one two three
one two three
one two three
one two three
Some more text.
下面的宏将选择例如。光标在其中的任何位置时,所有“两个”列均会出现:
<C-v>iWmw{joO`woOmwoO}koO`w
<C-v>iW
可视块选择(当然可以为iw
,a"
等使用不同的宏)mw
在右边界设置标记{j
转到段落的开头假设您从中间某处开始,此时您的选择将如下所示,其中大写字母表示所选字符,$
表示光标:
Some text.
$NE Two three
ONE Two three
ONE Two three
one two three
one two three
one two three
Some more text.
oO
将光标切换到同一边(左)但另一端(底)的角:
Some text.
ONE Two three
ONE Two three
$NE Two three
one two three
one two three
one two three
Some more text.
`w
现在将使您回到正确的边界:
Some text.
one TWO three
one TWO three
one TW$ three
one two three
one two three
one two three
Some more text.
oOmwoO}koO`w
重复此过程,直到该段落的底部。
结果:
Some text.
one TWO three
one TWO three
one TWo three
one TWO three
one TWO three
one $WO three
Some more text.