Vim: Поиск в файлах быстрого доступа
Я использую vimgrep (или grep) для поиска в файлах внутри vim, но вижу, что писать каждый раз, когда я хочу выполнить поиск в vim, довольно неудобно. Любая идея о том, как сделать подходящую комбинацию клавиш для поиска в файлах?
С Уважением,
Рафид
3 ответа
Следующее приведет вас к командной строке, предварительно заполненной vimgrep
если вы нажмете F3 в normal mode
:
:nmap <F3> :vimgrep<space>
Если вы всегда хотите искать в текущем каталоге, попробуйте:
:nmap <F3> :vimgrep // *<left><left><left>
Если вы хотите сохранить еще больше нажатий клавиш, попробуйте выполнить поиск в текущем каталоге по слову под курсором:
:nmap <F3> :vimgrep /<C-R><C-W>/ *<CR>
Конечно, они могут быть помещены в ваш .vimrc
файл.
Встроенная справочная система Vim предоставляет много полезной информации по этому вопросу. Смотрите следующие разделы, чтобы объяснить, что я сделал:
:help :nmap
:help c_CTRL-R_CTRL-W
Не совсем элегантно, но я использую эти карты командной строки (потому что я уже использовал все функциональные клавиши с другими командами):
cmap vvv vimgrep // **/*.*<Left><Left><Left><Left><Left><Left><Left><Left>
cmap vvs vimgrep // **/*.sas<Left><Left><Left><Left><Left><Left><Left><Left><Left><Left>
Альтернатива решению Johnsyweb:
set grepprg=ack
nnoremap <F2> :grep<space>
nnoremap <F3> :noautocmd vimgrep // **/*<c-f>$Bhhi
nnoremap <S-F3> :noautocmd vimgrep /<C-R>// **/*<return>
xnoremap <F3> :<c-u>let tmp=@y<cr>gv"yy:noautocmd vimgrep /\V<c-r>=substitute(substitute(@y,'\','\\','g'),'/','\/','g')<cr>/ **/*<return>:let @y=tmp<cr>:unlet tmp<cr>
Это отобразит F2 для подтверждения использования регулярных выражений Perl), F3 для vimgrep без запуска autocmds (намного быстрее), shift-f3 для vimgrep текущего шаблона поиска и F3 в визуальном режиме для vimgrep текущего выделенного текста.