Чи надлишковим є варіант "Vim" за замовчуванням?


10

З довідкового документа Vim (див. :help 'path':):

Рядок 'шлях' (за замовчуванням у Unix: " .,/usr/include,,")

-Для пошуку відносно каталогу поточного файлу використовуйте:

:set path=.

-Для пошуку в поточному каталозі використовуйте порожній рядок між двома комами:

:set path=,,

Здається, що .і ,,немає різниці у варіанті "шлях". Вони обидва означають поточний каталог.

Я не можу зрозуміти, чому нам потрібно ставити і те, .і інше ,,. У чому різниця між :set path=.і :set path=,,?

Відповіді:


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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.