【问题标题】:Vim: Search in Files Short-cut KeyVim:在文件中搜索快捷键
【发布时间】:2011-05-09 18:09:54
【问题描述】:


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

问候,
拉菲德

【问题讨论】:

    标签: vim findinfiles


    【解决方案1】:

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

    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>
    

    【讨论】:

    • 您好@rshdev,也许您可​​能希望看到:help 'cedit' 以避免所有那些&lt;left&gt;s(请参阅我的回答中的第二个映射并且不考虑语法突出显示)。
    • 感谢@Benoit 不错的选择
    【解决方案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突出显示的文本。

    【讨论】:

    • 不错的选择。 ack也很整洁。
    • 谢谢。上面的 $Bhhi 是什么意思?
    • @Rafid:在命令行上试试(前面是 CTRL+F)。这是编辑命令行的绝妙技巧。
    • 谢谢。这真的很好。我想知道从理论上讲,一个人需要多长时间才能知道 vim 的所有命令和组合键!可能有些技巧连 Vim 的创造者都不知道!
    • 其实那个 东西是由'cedit'设置控制的(:help 'cedit')
    【解决方案3】:

    如果您在normal mode 中按F3,以下内容将带您进入命令行,该命令行预先填充有vimgrep

    :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

    【讨论】:

    • 你确定第一个是正确的吗? vimgrep 需要一个文件名,这基本上是我的问题。我知道如何进行映射,但问题是如何将光标放在中间。例如,如果我想在所有文件中搜索 hello,我会写:":vimgrep /hello/ *"。那么如何在 vim 中创建一个写入上述命令的映射,却将我放在两个斜杠之间?
    • 是的,我确信它是正确的,它留下了一个不完整的命令行。不过,我无法预测您要搜索哪些目录。将添加到我的答案中。
    • 谢谢,现在可以使用了。在问之前我应该​​想到 :-)
    • 加双星使其成为recursive:nmap &lt;F3&gt; :vimgrep /&lt;C-R&gt;&lt;C-W&gt;/ **&lt;CR&gt;
    猜你喜欢
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 2015-04-13
    • 2013-09-25
    • 1970-01-01
    相关资源
    最近更新 更多