Czy domyślna opcja „ścieżki” Vima jest zbędna?

10

Z dokumentu pomocy Vima (patrz :help 'path':):

„ścieżka” Ciąg (domyślnie w Uniksie: „ .,/usr/include,,”)

- Aby wyszukać względem katalogu bieżącego pliku, użyj:

:set path=.

-Aby wyszukać w bieżącym katalogu, użyj pustego ciągu między dwoma przecinkami:

:set path=,,

Wydaje się, że .i ,,nie ma różnicy w opcji „ścieżki”. Oba oznaczają bieżący katalog.

Nie rozumiem, dlaczego musimy postawić jedno .i drugie ,,na opcję ścieżki. Jaka jest różnica między :set path=.i :set path=,,?

Feng Yu
źródło

Odpowiedzi:

14

„Bieżący katalog” i „katalog bieżącego pliku” to dwie różne rzeczy.

„Bieżący katalog” jest domyślnie katalogiem, w którym uruchomiłeś Vima. Pytasz Vima, co to jest, :pwdi zmieniasz go za pomocą :cdlub :lcdlub poprzez ustawienie autochdiropcji. Jeśli nigdy go nie zmienisz, pozostanie bez zmian, dopóki nie zamkniesz bieżącej sesji.

„Katalog bieżącego pliku” jest dokładnie tym, za kogo się podaje. Jeśli bieżący plik znajduje się w „bieżącym katalogu”, oba mają tę samą wartość. Jeśli bieżący plik znajduje się w innym katalogu, mają one inne wartości.

Aby pathbyły użyteczne, należy rozwiązać te dwa scenariusze za pomocą .i ,,.

Przykład:

$ 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
romainl
źródło
7

Katalogu bieżącego pliku i katalogu bieżącym są dwie zupełnie różne rzeczy (które mogą, przy okazji, mają taką samą wartość).

Rozważać:

cd /tmp; vim /etc/bash.bashrc

O ile nie mam autochdir(lub czegoś podobnego) ustawionego, bieżącym katalogiem jest /tmp, ale katalogiem bieżącego pliku jest /etc.

muru
źródło