我使用vimgrep(或grep)来搜索vim中的文件,但是我发现每次想要在vim中进行搜索时都要编写它是非常不方便的。有关如何制作合适的快捷键来搜索文件的想法吗?
的问候,
Rafid
答案 0 :(得分:6)
如果您在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
答案 1 :(得分: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 regexps),F3到vimgrep没有触发autocmds(快很多),shift-f3到当前搜索模式的vimgrep,以及F3在可视模式下到当前vimgrep突出显示的文字。
答案 2 :(得分: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>