2014-01-25 82 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