在 Vim 中相对于行尾移动

Move relative to the end of line in Vim

假设我有这样一个句子:

Block chain, the decentralised public ledger that records transactions on the bitcoin network.

如果我的光标在第一个单词的末尾,有没有办法相对于句子的末尾而不是从光标位置移动?想一想,右手边的第一个 c 是我想去的地方,有没有办法到达而不是先走到尽头然后使用 F 到达 c ($Fc).

如果你觉得$Fc3次击键太多......

运算符+目标字符已经有2笔画了。 我们可以动态捕获目标字符。但是为了让它变成 2 笔画,我们必须划掉一个普通模式键,我不知道你不用哪个,我的键盘上找不到,所以举个例子我用 <F6> 你可以随便改。

这个映射可以让你按<F6>c到那个地方,当然c可以是任何字符。

nnoremap <expr> <space> '$F'. nr2char(getchar())

如果目标字符,即 (c) 处于 EOL,这将不起作用。那么你可以做进一步的检查,例如如果您认为确实有必要,请编写自己的函数来完成。

个人认为不值得。习惯 $Fx.

是的,Vim 有(大量)相对于当前(光标)位置移动的运动:其中有 lwf。您可以通过许多动作轻松地重新定位光标:^0$gm。结合起来,这意味着您只需敲击几下键盘就可以到达几乎任何地方,并且可以很容易地记住每一个。

考虑到可用键的数量有限(开箱即用的 Vim 已经使用了其中的大部分!),以及您可以记住的内容有限,我认为这是一个完美的平衡。就此而言,我认为 $Fc 没什么好担心的(只是与其他编辑器进行比较!)

如果特定动作的低效率困扰着您,您始终可以编写自定义映射(并分配少数可用键之一),但这不能很好地扩展。