Vim 转到下一个搜索结果并直观地选择它

bey*_*kay 3 vim neovim coc.nvim

通常,如果我有一个像points.length - 1and 这样的代码表达式,我想用一个变量替换它(例如,命名,target_idx那么我将定义该变量:

int target_idx = points.length - 1;
Run Code Online (Sandbox Code Playgroud)

但现在我想用 替换所有points.length - 1实例target_idx。我知道我可以这样做:%s/points.length - 1/target_idx/g,但我对我的正则表达式不太有信心,并且不想错误地替换points.length - 11points+length - 1错误地替换。(我也知道非常神奇的搜索,但对它考虑/不考虑特殊字符的所有微妙之处也不是很有信心)

所以我想要的是能够搜索与points.length - 1via匹配的实例/points.length - 1,然后使用 遍历搜索结果n,然后将文本替换为target_idx

但由于搜索的文本可能包含空格或其他字符,因此我不能简单地更改为单词的末尾,cE因为这只会points.length在我的示例中发生变化。

是否存在到达搜索文本末尾的文本动作?

这样我就可以走了

  1. n
  2. c<special text motion here>
  3. target_idx
  4. 从 1 开始重复。

我正在使用安装了 CoC 的 neovim,因此我对插件或语言服务器替换的更深入的想法持开放态度,但这感觉应该是一个我只是不知道的简单文本动作。

Enr*_*lis 6

我想你可以去gn:help gn了解详情)。(gN向后搜索。)

\n

另一方面,您可以给出:s/\xe2\x80\xa6/\xe2\x80\xa6/标志c,以便它要求您确认每个替换(:help :s_flags了解详细信息)。

\n
\n

此外,您很可能可以利用.一次击键完成步骤 2 和 3(:help .了解详细信息)。在你的具体例子中,你第一次会这样做,

\n

/points\\.length - 1Entercf1target_idxEscape

\n

然后继续通过 进行下一场比赛n并通过 进行更改.

\n

:s我上面提到的带有标志的解决方案更快c,因为您只需按y/n而不是n/ n.

\n