代码之家  ›  专栏  ›  技术社区  ›  Gökhan Sever

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

vim
  •  44
  • Gökhan Sever  · 技术社区  · 16 年前

    假设我在(g)vim中有这个简单的文本:

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

    切换到可视块选择模式后,如何选择整个第3列? Ctrl键 + V G 选择全文。我正在寻找一个键盘快捷键来选择整个列的选择,如果有的话。

    谢谢。

    4 回复  |  直到 7 年前
        1
  •  26
  •   Daniel Vandersluis    16 年前

    G 转到最后一行,但如果 startofline 或 compatible (使) 起始线 )设置选项。如果要保持同一列,请设置 nosol 在进入可视块模式之前,然后点击 G .

    从手动输入 起始线 :

    当“on”时,下面列出的命令将光标移动到行的第一个非空白处。关闭时,光标保持在同一列中(如果可能)。这适用于命令:ctrl-d、ctrl-u、ctrl-b、ctrl-f、“g”、“h”、“m”、“l”、g g,以及命令“d”、“<<”和“>>”,使用一个线条运算符,使用“%”和一个计数,以及缓冲区更改命令(ctrl-^、:bNext、:bNext等)。

        2
  •  44
  •   Hulk1991 moinudin    13 年前

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

    不幸的是, CTRL Q [g]不会做你想做的,因为[g]运动在文件中是线性移动的,所以你仍然需要依赖于使用计数的[j]运动。您可以避免使用非常大的计数(如9999)来确切地知道文件有多大。所以完整的命令是 CTRL Q [99 99 J]。

    唉,我不知道怎样才能避免丑陋的伯爵马上被砍下来。

    编辑:哦,我看你的问题太快了,错过了你已经提到你的新的关于视觉块模式。我想这是一个相当无用的答案,那么,对不起!

        3
  •  6
  •   Matthieu    12 年前

    选择列的简单方法可以使用插件 vis.vim

    转到可视模式,选择列 ctrl+v ,然后你可以用它做你想做的任何事

    使用 V , V 或 CTRL+V 以视觉方式标记某个区域。然后键入 :B cmd (此命令将显示为: :'<,'>B cmd )

    然后,该命令将仅应用于可视选定区域。

    例如:

    使用 ctrl-v 选择一列,然后对该列进行替换。

    粘贴 ..移动… :B s/pattern/becomes/

    使用 粘贴 若要选择列,请仅对该列应用外部筛选器:

    粘贴 ..移动… :B !sort

        4
  •  0
  •   Igid    7 年前

    我相信我不是唯一一个来这里寻找解决更普遍问题的人。说我有:

    Some text.
    
    one two three
    one two three
    one two three
    one two three
    one two three
    one two three
    
    Some more text.
    

    当光标位于“two”列的任何位置时,以下宏将选择该列的所有内容:

    <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.