5


我使用 vimgrep(或 grep)在 vim 中搜索文件,但我发现每次我想在 vim 中进行搜索时都必须编写它非常不方便。关于如何制作合适的快捷键来搜索文件的任何想法?

问候,
拉菲德

4

3 回答 3

8

vimgrep以下将带您进入命令行,如果您按F3in预填充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
于 2010-11-14T06:59:37.577 回答
2

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 映射到 ack 使用 Perl 正则表达式), F3 到 vimgrep 而不触发自动命令(快得多), shift-f3 到当前搜索模式的 vimgrep ,以及在可视模式下的 F3 到当前突出显示文本的 vimgrep。

于 2010-11-14T08:06:33.353 回答
2

不完全优雅,但我使用这些命令行映射(因为我已经使用其他命令使用了所有功能键):

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>
于 2010-11-14T14:19:28.720 回答