2014-01-25 4 views
1

Я скопировал это, чтобы .vimrc:функция Vim, кажется, не признается

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-keep-only-the-selected-text-in-a-file) –

ответ

4

Удалить g: из отображения или добавить его к имени функции

+0

Пробовал, но безуспешно! –

+0

Что вы пробовали? Я просто удалил «g:» из вашего картографирования, и все работало отлично. Хотя вы, вероятно, захотите поставить флаг 'e' в конце вашей подстановочной команды. И вы можете рассмотреть другой диапазон, который '%' (весь буфер). – Ben

+0

Похоже, что функция и отображение определены в одном файле. Чтобы проверить это, попробуйте ': verbose map c' и': verbose function ClearAllButMatches' и внимательно прочитайте строки «Последний набор из». – benjifisher

Смежные вопросы