Vim:搜索文件快捷键

发布于 2024-10-01 20:19:26 字数 122 浏览 0 评论 0原文


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

问候,
拉菲德

I use vimgrep (or grep) to search in files inside vim, but I see it's quite inconvenient to have to write that every time I want to make search in vim. Any idea on how to make a suitable short-cut key to search in files?

Regards,
Rafid

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

爱她像谁 2024-10-08 20:19:26

如果您在 正常模式 下按 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

The following will take you to the command-line, pre-populated with vimgrep if you press F3 in normal mode:

:nmap <F3> :vimgrep<space>

If you always wish to search the current directory, try:

:nmap <F3> :vimgrep // *<left><left><left>

If you want to save even more keypresses, try this to search the current directory for the word under the cursor:

:nmap <F3> :vimgrep /<C-R><C-W>/ *<CR>

Of course, these can be put into your .vimrc file.

Vim's inbuilt help system provides lots of useful information on this subject. See the following sections to explain what I have done:

  • :help :nmap
  • :help c_CTRL-R_CTRL-W
后知后觉 2024-10-08 20:19:26

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当前突出显示的文本。

An alternative to Johnsyweb's solution:

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>

This will map F2 to ack use Perl regexps), F3 to vimgrep with no autocmds triggered (a lot faster), shift-f3 to a vimgrep of the current search pattern, and F3 in visual mode to a vimgrep of the current highlighted text.

伪装你 2024-10-08 20:19:26

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

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>

Not exactly elegant but I use these command-line maps (because I've already consumed all of the function keys with other commands):

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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文