Vim 转到下一个搜索结果并在视觉上 select
Vim go to next search result and visually select it
如果我有一个像 points.length - 1
这样的代码表达式并且我想用一个变量替换它(例如,命名为 target_idx
那么我将定义变量:
int target_idx = points.length - 1;
但现在我想将 points.length - 1
的所有实例替换为 target_idx
。我知道我可以做 :%s/points.length - 1/target_idx/g
,但我对我的正则表达式不太自信,不想错误地替换 points.length - 11
或 points+length - 1
。 (我也知道非常神奇的搜索,但我对它 does/doesn 不考虑特殊字符的所有微妙之处也不是很有信心)
所以我想要的是能够通过 /points.length - 1
搜索匹配 points.length - 1
的实例,然后用 n
浏览搜索结果,然后用 target_idx
.
但是因为搜索的文本可能有空格或其他字符,我不能简单地更改到单词 cE
的末尾,因为在我的示例中这只会更改 points.length
。
是否有文本移动到搜索文本的末尾?
所以我可以走了
n
c<special text motion here>
target_idx
- 从 1 开始重复。
我正在使用安装了 CoC 的 neovim,所以我愿意接受更深入的插件或语言服务器替换的想法,但这感觉应该是一个我不知道的简单文本动作。
我猜你可以选择 gn
(:help gn
了解详情)。 (gN
向后搜索。)
另一方面,您可以给 :s/…/…/
标志 c
,这样它会要求您确认每个替换(:help :s_flags
了解详情)。
此外,您很可能会利用 .
一次击键完成第 2 步和第 3 步(:help .
了解详情)。在你的具体例子中,你会第一次这样做,
/points\.length - 1
输入cf1target_idx
转义
然后继续通过 n 进行下一场比赛,并通过 ..
应用更改
我上面提到的带有 c
标志的 :s
解决方案更快(您只需按 y/n 而不是 n/n..
您已完成一半:
:%s/points.length - 1/target_idx/g
你只需要/c
标志:
:%s/points.length - 1/target_idx/gc
告诉Vim每次替换都要求确认。
见:help :s_flags
。
但您可能想查看 CoC 和您使用的特定语言服务器。也许他们提供 higher-level 重构命令。
如果我有一个像 points.length - 1
这样的代码表达式并且我想用一个变量替换它(例如,命名为 target_idx
那么我将定义变量:
int target_idx = points.length - 1;
但现在我想将 points.length - 1
的所有实例替换为 target_idx
。我知道我可以做 :%s/points.length - 1/target_idx/g
,但我对我的正则表达式不太自信,不想错误地替换 points.length - 11
或 points+length - 1
。 (我也知道非常神奇的搜索,但我对它 does/doesn 不考虑特殊字符的所有微妙之处也不是很有信心)
所以我想要的是能够通过 /points.length - 1
搜索匹配 points.length - 1
的实例,然后用 n
浏览搜索结果,然后用 target_idx
.
但是因为搜索的文本可能有空格或其他字符,我不能简单地更改到单词 cE
的末尾,因为在我的示例中这只会更改 points.length
。
是否有文本移动到搜索文本的末尾?
所以我可以走了
n
c<special text motion here>
target_idx
- 从 1 开始重复。
我正在使用安装了 CoC 的 neovim,所以我愿意接受更深入的插件或语言服务器替换的想法,但这感觉应该是一个我不知道的简单文本动作。
我猜你可以选择 gn
(:help gn
了解详情)。 (gN
向后搜索。)
另一方面,您可以给 :s/…/…/
标志 c
,这样它会要求您确认每个替换(:help :s_flags
了解详情)。
此外,您很可能会利用 .
一次击键完成第 2 步和第 3 步(:help .
了解详情)。在你的具体例子中,你会第一次这样做,
/points\.length - 1
输入cf1target_idx
转义
然后继续通过 n 进行下一场比赛,并通过 ..
应用更改我上面提到的带有 c
标志的 :s
解决方案更快(您只需按 y/n 而不是 n/n..
您已完成一半:
:%s/points.length - 1/target_idx/g
你只需要/c
标志:
:%s/points.length - 1/target_idx/gc
告诉Vim每次替换都要求确认。
见:help :s_flags
。
但您可能想查看 CoC 和您使用的特定语言服务器。也许他们提供 higher-level 重构命令。