我认为这将允许 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 还很陌生,说实话我不想尝试学习完后还有语言,所以希望我不会被迫将其构建为插件。
答案1
我不确定我是否真正理解你想要什么,但也许是这样的:
:help v_o
基本上,当文本在视觉上突出显示时,您可以按下它o,它就会跳转到可视区域的另一个“端”而不对其进行修改。