所以我正在浏览vim中的文件.我意识到我正在寻找的功能是另一个文件.所以我 :! ack-grep "function tracking" ../
去寻找它,我看到我需要检查文件"../../tracking/api/ etc etc"一些非常长的文件名.我现在正在做的是试图记住这个文件,键入fg
以返回到vim,然后:e"那个很长的文件名".我想知道是否有更简单的方法来做到这一点?
例如,vim -addtab <some file>
一旦我使用ack-grep找到我正在寻找的内容,我可以从命令行执行某些操作,然后当我fg
回到vim时,该文件将在一个选项卡中打开吗?
很棒,很多建议.我会像我一样全力以赴和评论.一旦我尝试了所有这些,我会选择最适合我的东西.
所以这就是我确定的功能:
function! s:NewTabGrep(...)
let args=split(a:1)
if len(args) == 2
let dir=args[1]
else
let dir='.'
endif
echom args[0] . " " . shellescape(dir)
tabnew | execute "r ! ack-grep ". shellescape(args[0]) ." ". shellescape(dir)
endfunction
com! -nargs=? GrepTab call s:NewTabGrep('<args>')
Run Code Online (Sandbox Code Playgroud)
这将执行搜索,并在新的vim选项卡中打开结果.然后我可以使用CtrlP打开最有趣的文件.感谢Merlin2011的灵感.
您可以:r ! ack-grep "function tracking" ../
将输出直接拉入vim
缓冲区,然后使用gf
导航到光标下的文件.
如果要在新选项卡中打开文件,可以Control-W, gf
在正常模式下执行.
更新:如果希望命令的输出显示在新选项卡中,则可以执行以下操作,这将打开一个新选项卡,然后立即将命令的输出拉入其中.
:tabnew | r!ack-grep "function tracking" ../
Run Code Online (Sandbox Code Playgroud)