Vim 如何将光标移动到字符串的末尾?

How do you move the cursor to the end of a string in Vim?

假设我正在 Vim 中编辑 JavaScript 的这一行:

var opener = 'As Gregor Samsa awoke one morning from uneasy dreams he found himself transformed in his bed into a gigantic insect';

如果我的光标在 Gregor 中的 G 上,我如何将它移动到 insect 中的 t 上?

我不是在谈论移动到 的末尾。我说的是移动到 JavaScript string 的末尾,封装在单引号中。 (我知道我可以用 /'h 来做到这一点,但我想知道是否有更通用的命令——也许像 %。)

使用 e 到 Gregor 的末尾,使用 $ 到行的末尾。

vi'<Esc>,它进入可视化模式,选择包括当前字符串的内部,光标位于选择的末尾 - 然后离开可视模式。

不知道有没有更好的办法

最简单的方法是t',但这仅在字符串在同一行结束并且字符串中没有转义引号时才有效。

实现这一点的最干净方法就像@hobbs已经指出的那样使用视觉模式select整个(内部)文本对象(vi'<Esc>).使用 o(在点击 <Esc> 之前)您还可以切换此 selection 的结尾。

您可以为此使用映射,例如:

:noremap [ vi'o<Esc>

:noremap ] vi'<Esc>

最后还有一个来自 Tom McDonald 的插件 (https://github.com/tommcdo/vim-ninja-feet) 可以完全解决您的问题。

我认为最简单的方法就是 f',因为在这个标签之前我们几乎看不到另一个 '。它更方便,尽管不像 % 用于 ({