vim: определить команду для grep + copen + добавочный поиск
Я хотел бы определить пользовательскую команду для выполнения следующих шагов: grep текущего слова, copen, инкрементный поиск слова grep. Вот команда, которую я использую:
nmap <C-p> :execute "grep! -Irn " . shellescape(expand("<cword>")) . " ."<cr>:copen<cr>:g/<cword>/<cr>
Но второе слово расширяется до текущего слова после открытия окна быстрого исправления. Как я могу использовать слово, которое раньше использовал grep?
1 ответ
Решение
Так же, как вы получили <cword>
в grep
:
nmap <C-p> :execute "grep! -Irn " . shellescape(expand("<cword>")) . " .\<cr>:copen\<cr>:g/" . expand("<cword>"). "/\<cr>"<cr>
Некоторые мысли:
- Установите регистр поиска вместо
:g
, Например:let @/ = "foo"
- использование
nnoremap
- использование
escape()
чтобы сделать его более устойчивым. Увидеть:h escape(
- Может быть, использовать
:vimgrep
, Увидеть:h :vimg
- Это аналогичные проблемы, решаемые с помощью следующих плагинов: Visual Star, Ack.vim и Ag.vim