【发布时间】:2012-05-07 14:34:34
【问题描述】:
我经常在 vim 中导航 f x 以查找下一个出现的字符 'x',
但忽略在我要编辑的单词和开始光标位置之间有一个包含“x”的单词(或多个单词)。
所以我必须再次f x,这有点烦人,因为有一个不错的按钮.,它确实重复了最后一个命令。那么有没有办法通过一个按钮来重复f x。
【问题讨论】:
我经常在 vim 中导航 f x 以查找下一个出现的字符 'x',
但忽略在我要编辑的单词和开始光标位置之间有一个包含“x”的单词(或多个单词)。
所以我必须再次f x,这有点烦人,因为有一个不错的按钮.,它确实重复了最后一个命令。那么有没有办法通过一个按钮来重复f x。
【问题讨论】:
重复f的命令是;(分号); ,(逗号)反转搜索方向。
【讨论】:
. 有什么有用的理由吗?这是我期望的命令。
f 和;)映射到与重复编辑(.)不同的字符是有意义的。这使您可以快速搜索和更改搜索结果。如果你想用* 替换一些+,你可以这样做(跳过一些字符并替换其他字符):f+r*;.;;.;.;;;.
,作为leader。
, 并且仍然有反向搜索。无论如何,现在我是 vim-easymotion 的快乐用户。
自从我问这个问题以来已经过去了 - 现在我使用vim-easymotion,这使得; 的需求几乎没有必要。
此插件允许直接跳转到某个字母 - 触发插件会使屏幕上除所有“x”之外的所有字母变为灰色 - 并且这些字母被替换为红色字母,您可以按该字母直接跳转到它。
【讨论】:
要添加到@Jeremiah Willcock 答案,我们可以将计数添加到f 命令以转到第n 次出现[count]f{char}。例如
2fx => 转到第二次出现的x [如果可用]
类似地,我们可以对; 和, 使用相同的计数器。例如
2; => 转到最后一次搜索的第二次出现[如果可用]2, => 转到最后一次反向搜索的第二次出现[如果可用]
这在与c{motion}(change) 或d{motion}(delete) 一起使用时非常有用。例如
如果我们想更改或删除第三次出现的字符,我们可以这样做
c3fx => 更改为第三次出现的字符 x(包括)d3fx => 删除第三次出现的字符 x(包括)
【讨论】: