Vim的默认“路径”选项是否多余?


10

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

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

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

:set path=.

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

:set path=,,

似乎.,,“路径”选项没有区别。它们都表示当前目录。

我不明白为什么我们需要同时将.和放在,,路径选项中。:set path=.和之间有什么区别:set path=,,

Answers:


14

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

默认情况下,“当前目录”是启动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

7

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

考虑:

cd /tmp; vim /etc/bash.bashrc

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.