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
Другие вопросы по тегам