L'option par défaut de «chemin» de Vim est-elle redondante?

10

Extrait du document d'aide de Vim (voir:) :help 'path':

'path' String (par défaut sous Unix: " .,/usr/include,,")

-Pour rechercher par rapport au répertoire du fichier courant, utilisez:

:set path=.

-Pour rechercher dans le répertoire courant, utilisez une chaîne vide entre deux virgules:

:set path=,,

Il semble que .et ,,n'ont aucune différence dans l'option «chemin». Ils signifient tous les deux le répertoire courant.

Je ne comprends pas pourquoi nous devons mettre les deux .et ,,l'option chemin. Quelle est la difference entre :set path=.et :set path=,,?

Feng Yu
la source

Réponses:

14

"Répertoire actuel" et "répertoire du fichier actuel" sont deux choses différentes.

Le "répertoire courant" est par défaut le répertoire dans lequel vous avez démarré Vim. Vous demandez à Vim de quoi il s'agit :pwdet le modifiez avec :cdou :lcdou en définissant l' autochdiroption. Si vous ne le modifiez jamais, il restera le même jusqu'à la fermeture de la session en cours.

Le "répertoire du fichier actuel" est exactement ce qu'il prétend être. Si le fichier courant se trouve dans le "répertoire courant", les deux ont la même valeur. Si le fichier actuel se trouve dans un autre répertoire, ils ont des valeurs différentes.

Pour pathêtre utile, il est nécessaire d'aborder ces deux scénarios avec .et ,,.

Exemple:

$ 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
la source
7

Le répertoire du fichier courant et le répertoire courant sont deux choses complètement différentes (qui peuvent, à l'occasion, avoir la même valeur).

Considérer:

cd /tmp; vim /etc/bash.bashrc

Sauf si j'ai autochdir(ou quelque chose de similaire) défini, le répertoire actuel est /tmp, mais le répertoire du fichier actuel l'est /etc.

muru
la source