Я пытаюсь создать пользовательскую команду использовать vimgrep для поиска шаблона в данном шаблоне файла, какGVim аргументы пользовательских команд
:command -nargs=* Find :tabnew <bar> vimgrep /<arg1>/gj <arg2> <bar> cw <cr>
Как получить доступ аргументы arg1 и arg2?
Edit 1: Я придумал следующее решение
command! -nargs=* Find call VimFind(<f-args>)
function! VimFind(searchPattern,filePattern,...)
let searchCommand = 'vimgrep /'.a:searchPattern.'/gj '.a:filePattern.'|cw'
if a:0 > 0 && a:1 == 'n'
let searchCommand = 'tabnew|'.l:searchCommand
endif
execute l:searchCommand
endfunction
Есть уборщик способ сделать это?
Edit 2: Ах хорошо, вышеупомянутые ошибки функции и затем открывает новую вкладку, когда ничего не найдено
Ах! Я хотел бы открыть результаты на новой вкладке, опционально, на основе третьего параметра. Поместите вкладку между vimgrep и cw! как это работает? почему tabnew в начале дает ошибку, если vimgrep ничего не находит? – Rnet
Я уверен, что ошибка исходит от ': vimgrep'; однако сообщение об ошибке внутри функции длинное и уродливое, так что try..catch с ': echomsg' лучше. –