调整视觉选择的另一端


14

我认为这将通过提供“切换”当前选择项的功能,使vim的视觉选择功能甚至超过鼠标的效率:

图解说明(|应代表光标(Vim使光标在其所处字符的左侧),并[text]代表选定的文本,只是假装它们占据了零宽度。[ ]看起来灰色的空间背景与该字符立即以下|是绿色):

从...开始

Some |text here
Some second line of text
Some more text in the third line 

v2j; 请注意,该m字符包含在选择中(现在光标将突出显示该字符):

Some [text here
Some second line of text
Some |m]ore text in the third line 

10l

Some [text here
Some second line of text
Some more text |i]n the third line 

在这一点上,我可能会决定我要开始从其他位置进行选择。例如,"Some"在第一行中包含。

在典型的编辑器/ IDE中,我别无选择。我可能不得不将手移到鼠标上,使用传统方法选择文本通常太痛苦了,通过跳字Ctrl和上/下翻页的使用确实有所帮助,但是无论如何,我必须做出承诺在开始选择之前,到达选择的终点之一。

因此,在Vim中,我非常希望能够通过击中一个神秘的绑定来获取当前状态并将其带入此状态:

Some [|text here
Some second line of text
Some more text i]n the third line 

然后我可以点击^<Home>(在没有前导空格的情况下,两者都要做)将其转换为

[|Some text here
Some second line of text
Some more text i]n the third line 

说我再次改变主意,我想调整另一端!

[Some text here
Some second line of text
Some more text |i]n the third line 

命中e

[Some text here
Some second line of text
Some more text i|n] the third line 

美丽!现在,我可以使用此选择执行下一步操作。

那么,这个神秘的绑定是什么?

同样,对于某些最常用的移动命令,到另一行键的一组替代绑定可能会更加有效,并且这些绑定(在可视模式下)始终会移动选择的另一端。因此,在该可视模式选择操作中,如果将选择的另一端的移动键设置为“ yuio”(由于我们有此需要,可能只是一个选择,所以可能不是一个好选择y),我们可以键入

v2j10l5ye

而不是

v2j10lX^Xe

嘿,您知道吗,这还不是很大的改进。只是给X功能。:)

我正在寻找的完美答案:

  • 嘿,抬头 :help some_awesome_vim_feature_that_just_does_this
  • 喂看 https://github.com/awesome_user/vim_plugin_that_does_this
  • 喂看 :help vimscript_functions_that_allow_mutation_of_visual_selections

我对Vim的迷恋还很陌生,所以在谈到Vimscript时我非常环保,老实说,我想远离尝试学习另一种语言,因此希望我不会被迫将其构建为一个插件。


好的。现在我不知道这里发生了什么(问题被忍者从SO转移到SU了),但是我最初将其发布在SO上,我真的希望它留在那儿。恕我直言,以非程序员,程序员只用不完在乎这么多有关文本编辑。当然,所有vim用户都可以通过学习它的工作方式而受益,我只是认为它会吸引更多的眼球,并且有更好的机会在该插件开发人员所在的地区得到解答。
史蒂文·卢

有时您会阅读:help吗?:help visual-mode包含您可能需要的有关可视模式的所有信息,包括o
romainl

我有时确实读过它,但是可能大概是在写出我的想法的同时。与猜测帮助字符串是什么相比,确定任务更为明确。
史蒂文·卢

学习胜于猜测。赫珀特的答案教了你件事,你能给他们起个名字吗?
romainl

是的,我的意思是有很多东西要学习,但是我已经忘记了O资本O的功能,但是我会记住o。您指的第二件事可能是:help更多使用。而且我使用它的时间比刚开始时要多。
史蒂文·卢

Answers:


49

我不确定我是否真正了解您想要什么,但是也许是这样的:

:help v_o

基本上,在视觉上突出显示文本时,您可以按o,它将跳到视觉区域的另一个“末端”,而无需对其进行修改。


2
废话,是的!!!这甚至比我希望的还要好,因为它已经绑定到一个密钥,所以X实际上是o
史蒂文·卢

1
我还要指出,右键单击鼠标(如果将终端配置为将其传递到Vim)将使它巧妙地将当前可视选择的最接近的一端调整到光标所在的位置。由于它不会丢弃选择对象另一端的位置,因此它使调整选择区域的方法减少了很多痛苦。
史蒂文·卢

@StevenLu:还是没有扔掉。您可以o再次点击并返回。
2013年

@StevenLu这应该是一个可以接受的答案,因为它不仅解决了您的问题,提出了很多反对意见,而且也正是我在第一个Google结果中所需要的,并且实际上是任何人提交的唯一答案...
金登

是的,我想我从来没有接受过它,因为它发布得太快了,以至于当时我还不被允许这样做,而且自此以来,我已经很开心地使用了Vim功能近五年了,不需要提醒自己关键是,因为它非常容易记住。
史蒂文·卢
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.