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=,,?

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

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.