【问题标题】:How to use vim easy motion plugin movements with y/c/d commands?如何通过 y/c/d 命令使用 vim easy motion 插件动作?
【发布时间】:2020-02-14 07:08:13
【问题描述】:

我在 vim 中使用 easymotion 插件 (https://github.com/easymotion/vim-easymotion)。 如果你在 VIM 中使用 f/F 运动(带有 easymotion 插件),当有多个匹配时,easy motion 会突出显示所有可能的位置,这样你就可以轻松地跳转到你想要的位置。

但它不适用于 y/c/d 命令,我该如何实现呢? 我在下面提供了一个示例以进行说明:

This is some line.

假设我正在 vim 中处理上述行,光标位于“This”中的 i 处。如果我在 vim 中执行“yfs”,我希望通过简单的动作来标记光标右侧的三个“s”。这样,我可以轻松地拉/更改/删除到我想要的 s。

提前致谢!

【问题讨论】:

    标签: vim plugins


    【解决方案1】:

    你可以,在你的 .vimrc 中使用这样的东西:

    " Find next occurence of a char using easymotion
    map  <Leader>f <Plug>(easymotion-bd-f)
    nmap <Leader>f <Plug>(easymotion-overwin-f)
    

    现在您可以执行y&lt;Leader&gt;fs 之类的操作,它将突出显示三个 s 字符。选择一个然后会从光标的位置拉到该字符。

    如果这不起作用

    这意味着存在使用相同组合的其他键绑定。您可以使用:map 进行检查,然后查找您尝试映射到easy-motion 的组合键。从您的.vimrc 中删除该键绑定或删除创建该绑定的插件应该可以解决问题。

    如果是 YankRing 插件劫持了 y/c/d 击键,您可以将以下内容添加到您的 vimrc 以防止它这样做(查看:h yankring 了解更多信息):

    let g:yankring_zap_keys = ''
    

    【讨论】:

    • 这很酷,我不知道这是可能的。然后我会删除我的答案
    • 是的,这确实很方便!但是,就像 vim 中的所有内容一样,在您的 .vimrc 中进行正确设置是一个问题。
    • 很有效,但是是否可以只用 f (即没有 )来做到这一点?因为使用 使得击键序列非常大。我尝试从映射中删除 (如下所示),但这不适用于 y/c/d 命令。 ``` map f (easymotion-bd-f) nmap f (easymotion-overwin-f) ``
    • 嗯,我做了同样的事情,它对我有用,你尝试重新启动 vim 吗?甚至可能打开一个新终端。 .vimrc 文件在编辑时不会自动刷新。
    • 接受你的回答,你是摇滚桑德!感谢您在堆栈溢出方面对 vim 社区的贡献。
    猜你喜欢
    • 2013-09-29
    • 2014-04-20
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多