2014-01-25 119 views
1

我复制本中.vimrcVim的功能似乎并没有被认可

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> 

这似乎并没有工作。当我使用<leader>c,我得到这个:

E117: Unknown function: g:ClearAllButMatches

任何想法,为什么它的发生?

注:

  1. 我有我的来源的.vimrc几次。
+0

的可能重复。[VIM:怎样只保留在文件中选定的文本(http://stackoverflow.com/questions/ 21523160/vim-how-to-retain-only-the-selected-text-in-a-file) –

回答

4

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

+0

试过了,但无济于事! –

+0

你尝试了什么?我刚刚从你的映射中删除了'g:',一切正常。尽管你可能想在替代命令的末尾加上'e'标志。你可能会考虑一个不同的范围,即'%'(整个缓冲区)。 – Ben

+0

看起来好像函数和映射是在同一个文件中定义的。要检查,请尝试使用':verbose map c'和':verbose function ClearAllButMatches'并仔细阅读“Last set from”行。 – benjifisher