【问题标题】:vim repeat find next character 'x'vim 重复查找下一个字符 'x'
【发布时间】:2012-05-07 14:34:34
【问题描述】:

我经常在 vim 中导航 f x 以查找下一个出现的字符 'x', 但忽略在我要编辑的单词和开始光标位置之间有一个包含“x”的单词(或多个单词)。

所以我必须再次f x,这有点烦人,因为有一个不错的按钮.,它确实重复了最后一个命令。那么有没有办法通过一个按钮来重复f x

【问题讨论】:

    标签: vim repeat


    【解决方案1】:

    重复f的命令是;(分号); ,(逗号)反转搜索方向。

    【讨论】:

    • 您不能为此使用. 有什么有用的理由吗?这是我期望的命令。
    • @DanielKaplan 将新的映射,即搜索字符(f;)映射到与重复编辑(.)不同的字符是有意义的。这使您可以快速搜索和更改搜索结果。如果你想用* 替换一些+,你可以这样做(跳过一些字符并替换其他字符):f+r*;.;;.;.;;;.
    • 有没有办法重新映射这些命令?很多人用,作为leader。
    • @rk1 用 :let mapleader=" " 改变领导者(如果你想要一个空格)
    • @DrEval 当然,但我想保持我的领导为, 并且仍然有反向搜索。无论如何,现在我是 vim-easymotion 的快乐用户。
    【解决方案2】:

    自从我问这个问题以来已经过去了 - 现在我使用vim-easymotion,这使得; 的需求几乎没有必要。

    此插件允许直接跳转到某个字母 - 触发插件会使屏幕上除所有“x”之外的所有字母变为灰色 - 并且这些字母被替换为红色字母,您可以按该字母直接跳转到它。

    【讨论】:

      【解决方案3】:

      要添加到@Jeremiah Willcock 答案,我们可以将计数添加到f 命令以转到第n 次出现[count]f{char}。例如

      2fx => 转到第二次出现的x [如果可用]

      类似地,我们可以对;, 使用相同的计数器。例如

      2; => 转到最后一次搜索的第二次出现[如果可用]
      2, => 转到最后一次反向搜索的第二次出现[如果可用]

      这在与c{motion}(change) 或d{motion}(delete) 一起使用时非常有用。例如
      如果我们想更改或删除第三次出现的字符,我们可以这样做

      c3fx => 更改为第三次出现的字符 x(包括)
      d3fx => 删除第三次出现的字符 x(包括)

      【讨论】:

        猜你喜欢
        • 2011-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-25
        • 2011-01-18
        • 2017-03-31
        • 2022-11-23
        相关资源
        最近更新 更多