it-swarm.cn

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

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

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

170
Calvin Cheng

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

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

更新

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

189
Jay
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实现了您的目标

104
bheeshmar

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

V100G
V100gg

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

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

Vap

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

V2ap

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

}V-2ap

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

将Vim理解为一种语言将帮助您获得最佳的里程数。

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

Vapd

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

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

77
kzh

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

v使您进入选择模式,35指定您想要G去的行号。

您也可以使用v},它将选择下一段开头的所有内容。

36
michaelmichael

用于选择行数:

shift + v 9j - 选择10行

14
mateusz.fiolka

Shift+V n jShift+V n k

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

7
Peng Zhang

第35 j节

添加最少30个字符的文字

6
µBio
4
Paul

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

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

v%

将选择整个块。

同时玩:

v}vpvs等.

见帮助:

:help text-objects

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

3
bjfletcher

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

1
mabeiyi

您可以按vi}选择光标当前所在的{}括号所围绕的块。

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

1
iggy

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

:0 

输入ENTER转到文件的开头

vG
0
Sergio Abreu

它可以派上用场了解:

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

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

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

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

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