如何在可视块模式下选择整列?

时间:2010-09-17 15:27:01

标签: vim

说我在(g)Vim中有这个简单的文字:

a  b  c
a  b  c
a  b  c
a  b  c
a  b  c

更改为可视块选择模式后,如何选择整个第3列? Ctrl + V G 选择全文。我正在寻找一个键盘快捷键来选择整个列选择(如果存在)。

感谢。

4 个答案:

答案 0 :(得分:44)

CTRL-V 进入块选择模式(允许您选择矩形文本块)。在gvim中,这与Windows的粘贴快捷方式冲突,因此您可以使用 CTRL-Q

不幸的是, CTRL-Q [G]没有做你想做的事情,因为[G]动作在文件中线性移动,所以你仍然需要依赖于使用计数[j]动议。你可以通过使用一个非常大的计数来避免确切地知道文件有多大,比如9999.所以完整的命令是 CTRL-Q [9999j]。

唉,我不知道怎么回避这个丑陋的黑客计数。

编辑:哦,我读得你的问题太快了,错过了你已经提到过关于视觉模块模式的新内容。我想这是一个非常无用的答案,对不起!

答案 1 :(得分:28)

G 转到最后一行,但如果startoflinecompatible(启用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

工作原理

    在Word中
  • <C-v>iW可视块选择(当然可以为iwa"等使用不同的宏)
  • 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.