像 'iw' Action-6ren">
gpt4 book ai didi

vim - 允许在 vim map 中自定义运动?

转载 作者:行者123 更新时间:2023-12-04 01:03:13 25 4
gpt4 key购买 nike

我有以下映射,允许从 yank 缓冲区粘贴一个单词。 (cpw = 更改粘贴词):nmap <silent> cpw "_cw<C-R>"<Esc>我想做的是允许如下命令:

  • cpiw (在单词中更改粘贴 -> 像 'iw' Action )
  • cpaw (改变粘贴一个词 -> 像'aw' Action )

  • 对于任何运动 {m} cp{m}
    这是否可以在映射中允许,所以我不必为我想要使用的每个运动编写 nmap?
    提前致谢。
    编辑:错字修复。我的解决方案如下
    在仔细研究 map-operator 之后,我成功地制作了一个完全符合我想要的功能。对于任何有兴趣的人,如下所示:
    "This allows for change paste motion cp{motion}
    nmap <silent> cp :set opfunc=ChangePaste<CR>g@
    function! ChangePaste(type, ...)
    silent exe "normal! `[v`]\"_c"
    silent exe "normal! p"
    endfunction
    编辑 - 可能更好的新版本。
    "This allows for change paste motion cp{motion}
    nmap <silent> cp :set opfunc=ChangePaste<CR>g@
    function! ChangePaste(type, ...)
    if a:0 " Invoked from Visual mode, use '< and '> marks.
    silent exe "normal! `<" . a:type . "`>\"_c" . @"
    elseif a:type == 'line'
    silent exe "normal! '[V']\"_c" . @"
    elseif a:type == 'block'
    silent exe "normal! `[\<C-V>`]\"_c" . @"
    else
    silent exe "normal! `[v`]\"_c" . @"
    endif
    endfunction

    最佳答案

    有一种方法可以定义自定义运算符,请参阅 :help :map-operator详情。

    关于vim - 允许在 vim map 中自定义运动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5357448/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com