Vim:在视觉模式下选择文本块的更快方法

时间:2011-09-13 18:52:25

标签: vim

我已经使用vim很长一段时间了,并且我知道在可视模式下选择文本块就像 SHIFT + V 一样简单并且向上移动箭头键或者逐行下行,直到我到达我想要选择的文本块的末尾。

我的问题是 - 在视觉模式中有更快的方法来选择文本块,例如通过 SHIFT + V ,然后指定我在其中的行号希望选择停止? (例如,通过:35,其中35是我想要选择的行号 - 这显然不起作用所以我的问题是找到如果可以做类似的事情......)

16 个答案:

答案 0 :(得分:189)

除了其他人所说的内容之外,您还可以使用模式搜索扩展您的选择。

例如, v / f o o 将从您的中选择当前位置到下一个“foo”的实例。例如,如果你真的想要扩展到第35行的“foo”的 next 实例,只需按 n 将选择扩展到下一个实例,依此类推

更新

我不经常这样做,但我知道有些人会广泛使用标记进行视觉选择。例如,如果我在第5行并且我想选择第35行,我可能会按 m a 将标记a放在第5行,然后 3 5 移动到第35行。 Shift + v 进入线性视觉模式,最后` a 选择回标记a

答案 1 :(得分:104)

G                       Goto line [count], default last line, on the first
                        non-blank character linewise.  If 'startofline' not
                        set, keep the same column.
                        G is a one of jump-motions.

V35G实现了您的目标

答案 2 :(得分:78)

Vim是一种语言。要真正了解Vim,您必须了解语言。许多命令都是动词,vim也有对象和介词。

V100G
V100gg

这意味着“选择当前行直至并包括第100行。”

文本对象是很多权力所在。他们引入了更多具有介词的对象。

Vap

这意味着“选择当前段落”,即选择当前段落及其后面的空白行。

V2ap

这意味着“选择当前段落和下一段。”

}V-2ap

这意味着“转到当前段落的末尾,然后直观地选择它和前一段。”

将Vim理解为一种语言将帮助您从中获得最佳利润。

选择关闭后,您可以与其他命令结合使用:

Vapd

使用上面的命令,您可以选择一个段落并将其删除。将d更改为y进行复制,或更改为c进行更改,或更改为p进行粘贴。

一旦你了解了所有这些命令如何协同工作,那么你最终不需要在视觉上选择任何东西。您可以使用dap命令删除段落,而不是直观地选择然后删除段落。

答案 3 :(得分:36)

v35G将选择从光标到第35行的所有内容。

v会将您置于选择模式,35指定您希望G转到的行号。

你也可以使用v}来选择下一段开头的所有内容。

答案 4 :(得分:14)

用于选择行数:

shift + v 9j - 选择10行

答案 5 :(得分:7)

Shift+V n jShift+V n k

这将选择当前行和下一行/前一行n行。我发现它非常有用。

答案 6 :(得分:6)

v 35 j

添加最少30个字符的文字

答案 7 :(得分:4)

答案 8 :(得分:3)

v%

将选择整个区块。

同时玩:

v}vpvs

见帮助:

:help text-objects

列出了选择字母,单词,句子,段落,块等的不同方法。

答案 9 :(得分:3)

您始终只需使用前面的数字来重复操作:

  • 在可视模式下,键入 3 5 ,光标将向下移动35次,选择接下来的35行
  • 在正常模式下:
    • 删除35行 3 5 d d
    • 粘贴35次 3 5 p
    • 撤消35更改 3 5 u

答案 10 :(得分:1)

}表示将光标移动到下一段。所以,使用v}选择整个段落。

答案 11 :(得分:1)

您可以按vi}选择光标当前位于{}括号内的块。

你在这个街区内的位置并不重要(只要确保你在最外层)。您也可以将{更改为包含)]对的任何内容。

答案 12 :(得分:0)

用于视觉选择全部: 键入Esc以确保您处于正常模式

:0 

输入ENTER转到文件的开头

vG

答案 13 :(得分:0)

知道可以派上用场:

为了选择相同数量的行,例如使用1v 你应该做一些修改才能使用1v,blockwise或linewise。

今天我从here看到了这个惊人的提示:

 :5mark < | 10mark > | normal gvV
 :5mark < | 10mark > | normal gv

您还可以重置视觉块边界:

m< .......... sets the visual mode start point
m> .......... sets the visual mode end point

答案 14 :(得分:0)

简单只需按 Shift v 行号 gg

示例:您当前的第41行 只需按 Shift v 41 gg

答案 15 :(得分:0)

我在缩进模式下将其与折叠一起使用:

v 在块上的任意位置打开可视模式

za za 两次切换