【问题标题】:Cannot remap % to %v in .vimrc but can inside vim无法在 .vimrc 中将 % 重新映射到 %v 但可以在 vim 中
【发布时间】:2013-11-19 17:40:09
【问题描述】:

我想将% 重新映射到v% 以选择匹配大括号(括号等)内的文本,但我只能在vim 中而不是.vimrc 中执行此操作。

我可以在 vim 中这样做:

noremap % v%

nnoremap % v%

(我真的不知道有什么区别,但目的是仅在正常模式下更改映射)

但是当我在.vimrc 中这样做时,我没有得到想要的效果

我的:noremap

   î           *@:call AutoPairsJump()<CR>
   ð           *@:call AutoPairsToggle()<CR>
n  <C-L>       * :nohlsearch<CR><C-L>
o  %           * v:<C-U>call <SNR>15_Match_wrapper('',1,'o') <CR>
v  %           * :<C-U>call <SNR>15_Match_wrapper('',1,'v') <CR>m'gv``
n  %           * :<C-U>call <SNR>15_Match_wrapper('',1,'n') <CR>
   Q             <Nop>
n  R           * R<C-R>=<SNR>19_feedPopup()<CR>
x  S             <Plug>VSurround
o  [%          * v:<C-U>call <SNR>15_MultiMatch("bW", "o") <CR>
v  [%            <Esc>[%m'gv``
n  [%          * :<C-U>call <SNR>15_MultiMatch("bW", "n") <CR>
o  ]%          * v:<C-U>call <SNR>15_MultiMatch("W",  "o") <CR>
v  ]%            <Esc>]%m'gv``
n  ]%          * :<C-U>call <SNR>15_MultiMatch("W",  "n") <CR>
n  a           * a<C-R>=<SNR>19_feedPopup()<CR>
v  a%            <Esc>[%v]%
n  cs            <Plug>Csurround
n  ds            <Plug>Dsurround
n  gx            <Plug>NetrwBrowseX
x  gS            <Plug>VgSurround
o  g%          * v:<C-U>call <SNR>15_Match_wrapper('',0,'o') <CR>
v  g%          * :<C-U>call <SNR>15_Match_wrapper('',0,'v') <CR>m'gv``
n  g%          * :<C-U>call <SNR>15_Match_wrapper('',0,'n') <CR>
n  i           * i<C-R>=<SNR>19_feedPopup()<CR>
n  ySS           <Plug>YSsurround
n  ySs           <Plug>YSsurround
n  yss           <Plug>Yssurround
n  yS            <Plug>YSurround
n  ys            <Plug>Ysurround
n  <Plug>NetrwBrowseX * :call netrw#NetrwBrowseX(expand("<cWORD>"),0)<CR>
v  <Plug>VgSurround * :<C-U>call <SNR>16_opfunc(visualmode(),visualmode() ==# 'V' ? 0 : 1)<CR>
v  <Plug>VSurround * :<C-U>call <SNR>16_opfunc(visualmode(),visualmode() ==# 'V' ? 1 : 0)<CR>
n  <Plug>YSurround * :<C-U>set opfunc=<SNR>16_opfunc2<CR>g@
n  <Plug>Ysurround * :<C-U>set opfunc=<SNR>16_opfunc<CR>g@
n  <Plug>YSsurround * :<C-U>call <SNR>16_opfunc2(v:count1)<CR>
n  <Plug>Yssurround * :<C-U>call <SNR>16_opfunc(v:count1)<CR>
n  <Plug>Csurround * :<C-U>call <SNR>16_changesurround()<CR>
n  <Plug>Dsurround * :<C-U>call <SNR>16_dosurround(<SNR>16_inputtarget())<CR>
n  <Plug>SurroundRepeat * .

我的.vimrchttp://pastebin.com/qhUYzS9W

【问题讨论】:

    标签: vim mapping keymapping


    【解决方案1】:

    这一行给出了它:

    n  %           * :<C-U>call <SNR>15_Match_wrapper('',1,'n') <CR>
    

    matchit.vim 插件会覆盖您的映射。 (:verbose nmap % 也会告诉你的)。

    由于插件不提供替代的&lt;Plug&gt; 映射,它是一个非此即彼的选择:保留您的映射(并删除插件脚本及其扩展匹配),或为您的映射选择另一个键。

    【讨论】:

    • 通过将let g:loaded_matchit = 1 放入您的~/.vimrc 文件来禁用matchit.vim。
    • @PeterRincker:由于默认情况下未安装 matchit(但需要复制或明确来源),您也可以将其删除。
    • 我一定是几年前安装的。我只是忘记了。谢谢,很高兴知道。
    猜你喜欢
    • 2015-01-14
    • 1970-01-01
    • 2013-05-25
    • 2011-11-30
    • 1970-01-01
    • 2010-09-12
    • 2014-12-30
    • 1970-01-01
    • 2018-11-04
    相关资源
    最近更新 更多