Quickfix窗口中的Vim文件路径

Chr*_*oph 9 vim

我在Vim中创建了一个函数,为我编译了一些东西.它看起来像这样:

function! MyFunc(mode)
  lcd ./build
  pwd
  let &makeprg='the_command some_script_file'
  let &errorformat='some format'.','
  let &errorformat.='%-G%.%#'
  silent make
  lcd ..
  cwindow
endfunction
Run Code Online (Sandbox Code Playgroud)

我通常在项目目录中打开vim,然后我可以运行这个函数,cd进入构建,构建它,然后cd回来,所以我留在我的项目目录中.

但是,有时,当构建失败,并提出了quickfix窗口,它会显示出相对于我的项目目录(耶),但有时在同一个文件的文件名,它显示了绝对路径.构建脚本的输出始终显示相对路径,并且vim正确处理,即它找到正确的文件.

我怀疑路径处理是负责任的.我的问题是,问题是什么,是否有更好的方法来处理切换到构建目录并返回?我总是想要显示相对路径.

谢谢!!

Ing*_*kat 5

我认为这与lcd. 当从您的函数中打开 quickfix 窗口时,它将从当前窗口继承本地目录。但是,当从其他任何地方(或在运行您的函数之前)打开 quickfix 窗口时,它将保留全局工作目录。当出现不匹配时,Vim 必须显示绝对路径。

如果您确实需要使用:lcd,最好使用位置列表 ( :lmake),因为它也是窗口本地的。但是我会首先尝试使用 global :cd,因为无论如何切换只是暂时的,并且到目前为止您并不关心恢复实际的原始值。