如何将git仓库的根目录设置为vi/vim查找路径?

4

我希望将vim文件搜索路径设置为包括git存储库根目录(可以通过git rev-parse --show-toplevel找到)。我无法弄清楚如何将此git命令的输出附加到.vimrc中的"set path=.,,**"。

谢谢!

2个回答

7
你可以使用这个命令:
let &path .= "," . system("git rev-parse --show-toplevel | tr -d '\\n'")

话虽如此,我通常从项目的顶级目录开始启动Vim,并且不改变工作目录,这样就减少了一个需要担心的设置。

请参见:help system():help :let


1
当Vim没有从git存储库启动时,它会出现错误。同时,在同时使用来自不同git存储库的多个文件时,它也不太有用(这本身是无用的,但这不是重点)。 :) - lcd047
@lcd047,所有的观点都是正确的。我有点假设OP已经有一些逻辑来找出他是否真的在一个git仓库中。 - romainl
感谢@romainl。我想知道是否可以使用打开文件的目录的repo根目录。 - hesham_EE
另外,我使用了以下代码: `set path=.,,** let &path .= "," . system("git rev-parse --show-toplevel | tr -d '\n'")`但是我希望在 git 仓库之后而不是之前有 ".,,**"。 - hesham_EE
1
这是我最终使用的代码:let &path .= system("git rev-parse --show-toplevel | tr -d '\\n'") . "/**" . ",./**" - hesham_EE

0

只需添加git目录一次,并检查错误。

function! MoshGitPath()
  let g:gitdir=substitute(system("git rev-parse --show-toplevel 2>&1 | grep -v fatal:"),'\n','','g')
  if  g:gitdir != '' && isdirectory(g:gitdir) && index(split(&path, ","),g:gitdir) < 0
    exe "set path+=".g:gitdir."/*"
  endif
endfunction
command! MoshGitPath :call MoshGitPath()
:MoshGitPath

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接