Vimのデフォルトの「パス」オプションは冗長ですか?


10

Vimのヘルプドキュメントから(参照:):help 'path'

'path'文字列(UNIXのデフォルト: " .,/usr/include,,")

-現在のファイルのディレクトリを基準にして検索するには、次を使用します。

:set path=.

-現在のディレクトリを検索するには、2つのカンマの間に空の文字列を使用します。

:set path=,,

と思われる.,,「パス」オプションには差がありません。どちらも現在のディレクトリを意味します。

なぜ両方.,,パスオプションに入れる必要があるのか​​理解できません。違いは何である:set path=.とは:set path=,,

回答:


14

「現在のディレクトリ」と「現在のファイルのディレクトリ」は2つの異なるものです。

「現在のディレクトリ」は、デフォルトではVimを起動したディレクトリです。あなたはそれが何であるかをVimに尋ね:pwd、それを使って:cdまたはオプションを:lcd設定してそれを変更しautochdirます。変更しない場合は、現在のセッションを閉じるまで同じままです。

「現在のファイルのディレクトリ」は、まさにそのとおりです。現在のファイルが「現在のディレクトリ」にある場合、どちらも同じ値になります。現在のファイルが別のディレクトリにある場合、それらの値は異なります。

以下のためにpath有用であることが、でこれら2つのシナリオに対処するために必要である.,,

例:

$ 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

現在のファイルのディレクトリカレントディレクトリは(、機会に、同じ値を有していてもよい)2つの全く異なるものです。

検討してください:

cd /tmp; vim /etc/bash.bashrc

autochdir(または同様の)セットがない限り、現在のディレクトリは/tmpですが、現在のファイルのディレクトリは/etcです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.