在Vim [shift + v]中选择一行或多行,然后按:

时间:2015-05-13 15:16:08

标签: vim

如果我选择一行然后按:,光标正确地允许我输入一个命令,但它用:'<,'>填充命令栏,所以我必须删除回到冒号输入,例如FormatLines

我可以在vimrc中添加一行以防止垃圾'<,'>出现吗?

3 个答案:

答案 0 :(得分:3)

'<,'>表示&#34;从当前缓冲区中最后一个选定的可视区域的第一行或字符到当前缓冲区中最后一个选定的可视区域的最后一行或字符。&#34 ;

所以它不是&#34;垃圾&#34;,这意味着你在:之后输入的命令将在所选行上执行。选择多行时,它会更有用。

如果您只想在当前行上调用命令,请不要进入可视模式,只需按即可在当前行上运行。

请参阅:

答案 1 :(得分:3)

'<'>标记代表视觉选择的起点和终点。许多命令可以采用:s之类的行。因此,当您从可视模式通过:进入命令模式时,Vim会通过提供可视模式范围来帮助您。

如果您不想使用此范围,可以在按<esc>之前使用:返回正常模式。或者,您可以在命令行上按<c-u>以清除该行。就个人而言,如果你没有特别需要,我会建议你养成退出视觉模式的习惯。

如需更多帮助,请参阅:

:h '>
:h range

答案 2 :(得分:3)

它不是垃圾。此'<,'>是与视觉选择相等的范围。 Vim中的大多数ex命令(以:开头的命令,例如FormatLines命令)在一个范围内运行。这个自动范围告诉Vim在选定的行上运行命令。

我猜,如果你删除了这个范围,你的:FormatLines命令可能只在当前行或整个文件上运行,除非你在命令中以奇怪的方式获得范围本身。

如果您实际上不想要此自动范围,只需按 Ctrl + U 即可将其删除。但是你不想自动这样做,因为否则会做类似的事情&#34;在视觉选择上运行搜索/替换&#34; (:'<,'>s/pattern/replacement)或&#34;在选定的行上运行命令&#34; (:'<,'>g/^/MyCommand)除非你手动添加范围,否则不会起作用,这比在你需要这样做的极少数情况下手动删除它要大得多。