Vim:在文件中搜索快捷键
Vim:在文件中搜索快捷键,vim,findinfiles,Vim,Findinfiles,我使用vimgrep(或grep)来搜索vim中的文件,但我发现每次我想在vim中搜索时都要编写它是非常不方便的。你知道如何制作一个合适的快捷键来搜索文件吗 问候, Rafid如果在正常模式下按F3键,以下命令将带您进入命令行,预先填充vimgrep: :nmap <F3> :vimgrep<space> :nmap:vimgrep 如果始终希望搜索当前目录,请尝试: :nmap <F3> :vimgrep // *<left><left
我使用vimgrep(或grep)来搜索vim中的文件,但我发现每次我想在vim中搜索时都要编写它是非常不方便的。你知道如何制作一个合适的快捷键来搜索文件吗 问候,
Rafid如果在
正常模式下按F3键,以下命令将带您进入命令行,预先填充vimgrep
:
:nmap <F3> :vimgrep<space>
:nmap:vimgrep
如果始终希望搜索当前目录,请尝试:
:nmap <F3> :vimgrep // *<left><left><left>
:nmap:vimgrep//*
如果要保存更多按键,请尝试以下操作在当前目录中搜索光标下的单词:
:nmap <F3> :vimgrep /<C-R><C-W>/ *<CR>
:nmap:vimgrep//*
当然,这些可以放在.vimrc
文件中
Vim的内置帮助系统提供了许多关于这个主题的有用信息。请参阅以下部分来解释我所做的工作:
:帮助:nmap
:帮助c\u CTRL-R\u CTRL-W
约翰西韦布解决方案的替代方案:
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>
set grepprg=ack
nnoremap:grep
nnoremap:noautocmd vimgrep//***$Bhhi
nnoremap:noautocmd vimgrep//**/*
xnoremap:let tmp=@ygv“yy:noautocmd vimgrep/\V=substitute(substitute(@y,'\','\\','g'),'/','\/','\/','g')/***:let@y=tmp:unlet tmp
这将把F2映射到ack use Perl REGEPS,F3映射到vimgrep,而不触发autocmds(速度快得多),shift-F3映射到当前搜索模式的vimgrep,并且在视觉模式下将F3映射到当前高亮显示文本的vimgrep。不太优雅,但我使用这些命令行映射(因为我已经用其他命令使用了所有功能键):
cmap vvv vimgrep//****
cmap vvs vimgrep/***/.sas
<代码>你确定第一个是正确的吗?vimGrp期望文件名,这基本上是我的问题。我知道如何进行映射,但是问题是如何把光标放在中间。例如,如果我想在所有文件中搜索hello,我会写:“VimGRP/HELL/*”。“。那么,如何在vim中创建一个编写上述命令的映射,而将我置于两个斜杠之间呢?是的,我确信它是正确的,它留下了一个不完整的命令行。但是,我无法预测您要搜索的目录。应该添加到我的答案中。谢谢,它现在起作用了。我应该在询问之前考虑:-)添加一个双星,使其成为一个好的选择<代码>确认
也很整洁。谢谢。上面的$Bhhi是什么意思?@Rafid:在命令行上尝试它(前面加上CTRL+F)。这是一个编辑命令行的巧妙技巧。谢谢。真的很好。我想知道,从理论的角度来看,要知道vim的所有命令和组合键需要多长时间!可能有一些连Vim的创建者都不知道的技巧!实际上,这件事是由<代码> 'CEDIT '/COD>设置(<代码>:帮助> CEDIT '/CODE >)Hello @ RSDEDE,也许您可能希望看到<代码>:帮助'CEDIT '/CODE >避免所有的<代码> <代码> s(参见我的答案的第二个映射,不考虑语法高亮)。谢谢@班诺特尼斯替代方案
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>