Vim:如何缩小视觉区域

4
假设我有以下文本:
使用Vim的可视模式,可以选择一些文本。如果光标位于“allows”中的“a”上,则键入vaw会切换到可视模式,然后选择“一个单词”(“allows”)。如果再次键入aw,则Vim还会选择“you”。假设我再这样做一次(突出显示“to”),然后意识到我走得太远了。
是否有一种方法来缩小/减少可视区域的大小(除了使用h、j、k、l键)?
我希望能够撤消我的最后一个命令(即让Vim将选择移回到我键入最后一个“aw”之前)或者使用运动/文本对象命令来减小可视区域的大小。

根据您的帖子和这个相关的帖子,我决定制作vim-visual-history插件,它可以记录以前的可遍历的视觉选择,包括[v]v[V]V。所以在您的情况下,您只需按[v即可返回一个选择。该插件正在开发中,但已经可以使用。 - mattb
2个回答

7

是的,您可以一直按 ge 直到它再次选择 allows


哎呀 - 我应该更仔细地查看运动命令并注意到你可以向后移动 :) - MikeTheTall
1
有没有一种方法可以通过文本对象向后移动? - MikeTheTall
@MikeTheTall 你是什么意思?你能举个例子吗? - Kent
1
这样怎么样:我有一个覆盖两个句子的可视选择。我键入“as”将其向右扩展一个句子,然后意识到我不想要第三个句子。有没有一种方法可以缩小选择范围并排除第三个句子?(有点像向左的“as”?) - MikeTheTall
@MikeTheTall,没有内置的方法来实现。在这种情况下,你不得不用?xx或者Tx - Kent
@MikeTheTall,看看我的visual-history插件,可以实现你想要的功能。另外,请参考下面的答案进行演示。 - mattb

0

根据您的帖子(以及这个),我决定制作vim-visual-history插件,它可以保留先前使用[v]v[V]V进行的可遍历记录。因此,在您的情况下,您只需执行[v即可返回一个选择。您可以继续按[v以进一步回溯,并使用]v再次向前移动。该插件适用于您的情况,以及使用文本对象等进行的选择。

[count][v : Reselect previous visual selection
[count]]v : Reselect next visual selection
[V : Reselect first visual selection
]V : Reselect last visual selection

enter image description here

你也可以给一个计数器,以便更快地跳转到历史记录中的某个位置:

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接