【发布时间】:2011-04-13 19:04:26
【问题描述】:
假设我在 (g)Vim 中有这个简单的文本:
a b c
a b c
a b c
a b c
a b c
更改为可视块选择模式后,如何选择整个第 3 列? Ctrl+V G 选择整个文本。我正在寻找用于选择整个列选择的键盘快捷键(如果存在)。
谢谢。
【问题讨论】:
标签: vim
假设我在 (g)Vim 中有这个简单的文本:
a b c
a b c
a b c
a b c
a b c
更改为可视块选择模式后,如何选择整个第 3 列? Ctrl+V G 选择整个文本。我正在寻找用于选择整个列选择的键盘快捷键(如果存在)。
谢谢。
【问题讨论】:
标签: vim
我敢肯定,我不是唯一一个来这里寻找解决更普遍问题的方法的人。说我有:
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 Word 中的可视块选择(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.
【讨论】:
如果你在第一行的开头,你可以这样做:
ww ............... jump to the third column
Ctrl-v } ......... jump to the end of paragraph
如果你在输入之后有一个空行,那么:
gE ............... goes back to the end of third column
【讨论】:
选择列的简单方法可以使用插件vis.vim
进入视觉模式,选择列ctrl+v,然后你可以用它做任何你想做的事情
使用 V、v 或 Ctrl+V 来直观地标记某个区域。然后键入:B cmd(此命令将显示为: :'<,'>B cmd)
然后该命令将仅应用于视觉选择的区域。
例如:
使用ctrl-v 选择一列,然后仅对该列进行替换。
Ctrl-V ..move.. :B s/pattern/becomes/
使用 Ctrl-V 选择一列,然后将外部过滤器应用于该列:
Ctrl-V ..move.. :B !sort
【讨论】:
CTRL-V 进入块选择模式(允许您选择矩形文本块)。在 gvim 中,这与 Windows 的粘贴快捷方式冲突,因此您可以使用 CTRL-Q 代替。
不幸的是,CTRL-Q [G] 没有做你想做的事情,因为 [G] 运动在文件中线性移动,所以你仍然需要依靠 a 使用计数[j] 议案。您可以避免通过使用非常大的计数(例如 9999)来避免确切知道文件的大小。所以完整的命令是 CTRL-Q [9999j]。
唉,我不知道有什么方法可以避免丑陋的计数。
编辑:哦,我读你的问题太快了,错过了你已经提到你对视觉块模式的新认识。我想这是一个相当无用的答案,那么,对不起!
【讨论】:
G 转到最后一行,但如果设置了startofline 或compatible(启用startofline)选项,则将光标移动到第一个非空白位置。如果要保持同一列,请在进入可视块模式之前设置nosol,然后点击G。
来自startofline的手动输入:
当“on”时,下面列出的命令会将光标移动到该行的第一个非空白处。关闭时,光标保持在同一列中(如果可能)。这适用于命令:CTRL-D、CTRL-U、CTRL-B、CTRL-F、“G”、“H”、“M”、“L”、gg,以及命令“d”、“>" 带有逐行运算符,"%" 带有计数和缓冲区更改命令(CTRL-^、:bnext、:bNext 等)。
【讨论】:
compatible,请确保 set nosol 出现在该行之后。
} 一起使用的东西?