4

在 Vim 中,我想直观地选择一些行,然后将注释掉的选择的副本粘贴到原始选择的上方或下方,具体取决于视觉选择是向上还是向下创建的。因此,如果我在第 100 行开始视觉模式并将光标向上移动 10 行,这将是一个向上的视觉选择,而如果我从第 100 行开始并将光标向下移动 10 行,它将是一个向下的选择。line("'<")并且line("'>")在两种情况下都是相同的,所以看起来 Vim 总是选择较小的数字作为选择的开始。有没有办法确定视觉选择是向上还是向下?

4

2 回答 2

2

当(在您的映射/命令中)您第一次通过 退出可视模式时<Esc>,您可以将光标 ( line('.')) 的位置/行与'<'>标记进行比较。然后只需使用标记(即使离开视觉模式,它们也会保留它们的值),或者通过:normal! gv.

于 2012-09-10T15:57:59.273 回答
0

您可以在开始选择之前打一个标记,在您离开选择时再打一个:

ma
V
jjj
<Esc>
mb

然后看看是否line("'a") < line("'b")

于 2012-09-10T16:03:51.683 回答