从Vim的帮助文档(请参阅::help 'path'):


'path'字符串(Unix上的默认值:“ .,/usr/include,,”)

-相对于目录进行搜索的当前文件,请使用:

:set path=.


-要在当前目录中进行搜索,请在两个逗号之间使用空字符串:

:set path=,,
.和,,在“路径”选项中没有区别。它们都表示当前目录。

我不明白为什么我们需要将.,,都放在path选项中。 :set path=.:set path=,,有什么区别?

#1 楼

“当前目录”和“当前文件的目录”是两个不同的东西。

默认情况下,“当前目录”是启动Vim的目录。您问Vim :pwd是什么,并用:cd:lcd或通过设置autochdir选项来更改它。如果您从不更改它,则它将保持不变,直到关闭当前会话为止。

“当前文件的目录”正是它声称的样子。如果当前文件在“当前目录”中,则两者具有相同的值。如果当前文件在另一个目录中,则它们具有不同的值。

为了使path有用,必须使用.,,来解决这两种情况。

示例:

$ cd /foo/bar/baz
$ vim filename
:pwd                   -->  /foo/bar/baz
:echo expand("%:p:h")  -->  /foo/bar/baz
:e ../file
:pwd                   -->  /foo/bar/baz
:echo expand("%:p:h")  -->  /foo/bar


#2 楼

当前文件的目录和当前目录是两个完全不同的东西(有时可能具有相同的值)。

考虑:

cd /tmp; vim /etc/bash.bashrc


除非设置了autochdir(或类似的设置),否则当前目录为/tmp,但当前文件的目录为/etc