Vim功能似乎未被识别

Vim功能似乎未被识别,vim,command-line,Vim,Command Line,我将其复制到.vimrc中: 它似乎不起作用。当我使用c时,我得到以下信息: E117:未知函数:g:ClearAllButMatches 你知道为什么会这样吗 注: 我已经多次获取了我的.vimrc。 从映射中删除g:或将其添加到函数名从映射中删除g:或将其添加到函数名您尝试了什么?我刚从你的地图上删除了g:,一切都很好。尽管您可能希望在替换命令的末尾放置一个e标志。您可能会考虑一个不同的范围,即整个缓冲区。看起来函数和映射是在同一个文件中定义的。要检查这一点,请尝试:verbose map

我将其复制到.vimrc中:

它似乎不起作用。当我使用c时,我得到以下信息:

E117:未知函数:g:ClearAllButMatches

你知道为什么会这样吗

注:

我已经多次获取了我的.vimrc。
从映射中删除g:或将其添加到函数名

从映射中删除g:或将其添加到函数名

您尝试了什么?我刚从你的地图上删除了g:,一切都很好。尽管您可能希望在替换命令的末尾放置一个e标志。您可能会考虑一个不同的范围,即整个缓冲区。看起来函数和映射是在同一个文件中定义的。要检查这一点,请尝试:verbose map c和:verbose函数ClearAllButMatches,并仔细阅读行中的最后一组。您尝试了什么?我刚从你的地图上删除了g:,一切都很好。尽管您可能希望在替换命令的末尾放置一个e标志。您可能会考虑一个不同的范围,即整个缓冲区。看起来函数和映射是在同一个文件中定义的。要检查这一点,请尝试:verbose map c和:verbose函数ClearAllButMatches,并仔细阅读第行的最后一组。可能重复的可能重复的
function! ClearAllButMatches()
  let old = @c
  let @c=""
  %s//\=setreg('C', submatch(0), 'l')/g
  %d _
  put c
  0d _
  let @c = old
endfunction
vnoremap <leader>c :<c-u>call g:ClearAllButMatches()<cr>