Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 根据ag结果中的相对目录缩减目录_Vim_Ag - Fatal编程技术网

Vim 根据ag结果中的相对目录缩减目录

Vim 根据ag结果中的相对目录缩减目录,vim,ag,Vim,Ag,如果使用ag搜索长路径目录,如a/long/long/long/path/to/project/,结果列表将包含长路径。是否有办法在结果列表中获得项目路径 ag测试a/long/long/long/path/to/project/的示例结果列表: a/long/long/long/path/to/project/test.txt: test..... a/long/long/long/path/to/project/js/test2.js: test: function() { 预期: tes

如果使用ag搜索长路径目录,如
a/long/long/long/path/to/project/
,结果列表将包含长路径。是否有办法在结果列表中获得项目路径

ag测试a/long/long/long/path/to/project/
的示例结果列表:

a/long/long/long/path/to/project/test.txt: test.....
a/long/long/long/path/to/project/js/test2.js: test: function() {
预期:

test.txt: test.....
js/test2.js: test: function() {
为什么我用指定的目录路径而不是
cd
进行搜索?我使用ag在vim中执行项目范围的搜索:找到项目路径并将其传递给vim命令,vim命令将使用
ag
搜索给定路径

解决方案

注:我使用
Plug'mhinz/vim grepper

function! VimGrepperConfig()
    function! s:ag_at_project_root(keyword)
        let root = s:find_root()
        if !empty(root)
            execute 'cd' root
            execute 'GrepperAg' a:keyword
            execute 'cd -'
        else
           execute 'GrepperAg' a:keyword
        endif
    endfunction
    command! -nargs=1 AgAtProjectRoot call s:ag_at_project_root('<args>')
    " ag search
    no <Leader>/ :AgAtProjectRoot 
endfunction
call VimGrepperConfig()
函数!VimGrepperConfig()
功能!s:ag_at_project_root(关键字)
设root=s:find_root()
如果!空(根)
执行'cd'根目录
执行'GrepperAg'a:关键字
执行'cd-'
其他的
执行'GrepperAg'a:关键字
恩迪夫
端功能
命令-nargs=1 AgAtProjectRoot调用s:ag\u在项目根(“”)
“ag搜索
否/:AgAtProjectRoot
端功能
调用VimGrepperConfig()

如果
ag
在quickfix窗口中生成其结果,您可以在quickfix窗口中执行
:cd{path}
以更新显示的路径。您可能需要
:cclose
:copen
qf窗口来查看简化操作


当我的
&makeprg
包含
(cd-build/path&&make-target)
等内容时,我经常在
:make
之后制作
如果
ag
在快速修复窗口中生成结果,则可以制作
:cd{path}
在快速修复窗口中更新显示的路径。您可能需要
:cclose
:copen
qf窗口才能查看简化操作


当我的
&makeprg
包含
(cd build/path&&make target)之类的内容时,我经常在
之后制作
cd.
:make

但是我的解决方案会邀请一个新问题。我在搜索后切换回上一个
pwd
,现在如果我从quickfix列表打开文件,它将在当前
pwd
创建一个新文件,而不是在project中打开文件。啊……但是我的解决方案会邀请一个新问题。我在搜索后切换回上一个
pwd
,现在如果我从q打开文件uickfix列表,它将在当前
pwd
创建一个新文件,而不是在project中打开文件。啊。。。