L'opzione 'percorso' predefinita di Vim è ridondante?


10

Dal documento di aiuto di Vim (vedi:) :help 'path':

Stringa 'percorso' (impostazione predefinita su Unix: " .,/usr/include,,")

-Per cercare in relazione alla directory del file corrente, usare:

:set path=.

-Per cercare nella directory corrente utilizzare una stringa vuota tra due virgole:

:set path=,,

Sembra che .e ,,non hanno alcuna differenza di opzione 'path'. Entrambi significano la directory corrente.

Non riesco a capire perché dobbiamo mettere entrambe .e ,,l'opzione path. Qual è la differenza tra :set path=.e :set path=,,?

Risposte:


14

"Directory corrente" e "directory del file corrente" sono due cose diverse.

La "directory corrente" è per impostazione predefinita la directory in cui è stato avviato Vim. Chiedi a Vim di cosa si tratta :pwde lo cambi con :cdo :lcdo impostando l' autochdiropzione. Se non lo cambi mai, rimarrà lo stesso fino alla chiusura della sessione corrente.

La "directory del file corrente" è esattamente ciò che afferma di essere. Se il file corrente si trova nella "directory corrente", entrambi hanno lo stesso valore. Se il file corrente si trova in un'altra directory, hanno valori diversi.

Per pathessere utile, è necessario affrontare questi due scenari con .e ,,.

Esempio:

$ 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

La directory del file corrente e quella corrente sono due cose completamente diverse (che a volte possono avere lo stesso valore).

Ritenere:

cd /tmp; vim /etc/bash.bashrc

A meno che non abbia autochdirimpostato (o qualcosa di simile), la directory corrente è /tmp, eppure la directory del file corrente è /etc.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.