Vim: Поиск в файлах ярлык - PullRequest
       33

Vim: Поиск в файлах ярлык

4 голосов
/ 14 ноября 2010


Я использую vimgrep (или grep) для поиска в файлах внутри vim, но вижу, что писать каждый раз, когда я хочу выполнить поиск в vim, довольно неудобно. Любая идея о том, как сделать подходящую комбинацию клавиш для поиска в файлах?

С уважением,
Рафид

Ответы [ 3 ]

6 голосов
/ 14 ноября 2010

Следующее приведет вас к командной строке, предварительно заполненной 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
2 голосов
/ 14 ноября 2010

Не совсем элегантно, но я использую эти карты командной строки (потому что я уже использовал все функциональные клавиши с другими командами):

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>
2 голосов
/ 14 ноября 2010

Альтернатива решению 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 текущего выделенного текста.

...