Apakah opsi 'jalur' default Vim berlebihan?

10

Dari dokumen bantuan Vim (lihat :help 'path':):

String 'path' (default pada Unix: " .,/usr/include,,")

-Untuk mencari relatif ke direktori file saat ini, gunakan:

:set path=.

-Untuk mencari di direktori saat ini gunakan string kosong antara dua koma:

:set path=,,

Tampaknya .dan ,,tidak ada perbedaan dalam opsi 'path'. Keduanya berarti direktori saat ini.

Saya tidak mengerti mengapa kita harus meletakkan keduanya .dan ,,ke opsi path. Apa perbedaan antara :set path=.dan :set path=,,?

Feng Yu
sumber

Jawaban:

14

"Direktori sekarang" dan "direktori file saat ini" adalah dua hal yang berbeda.

"Direktori saat ini" secara default adalah direktori di mana Anda memulai Vim. Anda bertanya kepada Vim tentang apa itu :pwddan mengubahnya dengan :cdatau :lcdatau dengan mengatur autochdiropsi. Jika Anda tidak pernah mengubahnya, itu akan tetap sama sampai Anda menutup sesi saat ini.

"Direktori file saat ini" persis seperti yang diklaimnya. Jika file saat ini ada di "direktori saat ini", keduanya memiliki nilai yang sama. Jika file saat ini ada di direktori lain, mereka memiliki nilai yang berbeda.

Agar pathbermanfaat, perlu untuk membahas kedua skenario dengan .dan ,,.

Contoh:

$ 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
sumber
7

The direktori file saat ini dan direktori saat ini adalah dua hal yang sama sekali berbeda (yang mungkin, pada kesempatan, memiliki nilai yang sama).

Mempertimbangkan:

cd /tmp; vim /etc/bash.bashrc

Kecuali saya memiliki autochdir(atau yang serupa) set, direktori saat ini /tmp, namun direktori file saat ini /etc.

muru
sumber