Comment définir le répertoire de travail / actuel dans Vim?

109

Ainsi, lorsque je veux créer un nouveau fichier en utilisant la commande: e, je ne veux pas spécifier le chemin complet, juste le nouveau nom de fichier. Cela peut-il être fait?

Fred
la source

Réponses:

144

Comme déjà suggéré, vous pouvez utiliser autochdir, qui passera au répertoire du fichier que vous avez ouvert, l'autre option est

:cd mydirectory

ce qui changera le répertoire. Cela peut être un chemin absolu ou relatif, donc :cd ..va monter d'un niveau. Ou vous pouvez utiliser :cd %:hqui changera également dans le répertoire dans lequel se trouve le fichier actuel, mais sans définir autochdir.

:cd

changera de répertoire vers votre répertoire personnel (ou sous Windows, imprimera le répertoire courant).

:cd -

changera le répertoire vers le répertoire précédent que vous avez visité.

falstro
la source
13
si vous utilisez plusieurs fenêtres, vous pouvez même utiliser: lcd pour changer de répertoire pour la fenêtre actuelle uniquement.
Inutile
1
@Useless: intéressant ... Je ne pense pas que j'aurais jamais voulu ça, mais je suppose que c'est une question de goût. Merci pour l'info.
falstro
3
J'essaie de comprendre ce que signifie%: h, une aide?
Michael
10
@Michael se %traduit par le nom du fichier courant, y compris le chemin, :ajoute un modificateur, hest head, c'est-à-dire le chemin jusqu'au dernier séparateur de chemin, c'est-à-dire excluant le nom du fichier lui-même.
falstro
@falstro, savez-vous comment: la commande cd peut s'appliquer à toutes les fenêtres dans les mêmes instances vim en cours d'exécution? Ex: lors de l'utilisation de split: sp
mgouin
15

De plus, si vous parcourez le système de fichiers avec l'explorateur de fichiers netrw, vous pouvez définir le répertoire actuel en appuyant sur la touche c.

Dave Kirby
la source
utilisez également set autochdirpour rendre l' 'c' keyeffet dans le shell, afin que vous puissiez utiliser !command args sous le répertoire modifié.
pimgeek
9

Essayez d'ajouter set autochdirà votre .vimrc. Si vous souhaitez le modifier une seule fois, utilisez :cd(ou :cd!pour le forcer).

John Feminella
la source
1
l'aide dit que cela casse certains plugins (je ne sais pas lesquels), j'ai donc pris la précaution d'ajouter un mappage dans mon .vimrc: cnoremap cd. lcd %:p:het à la nnoremap ,cd :cd %:p:h<CR>:pwd<CR>place
ErichBSchulz
utilisez également 'c' keydans l'explorateur de fichiers netrw pour accompagner cela.
pimgeek
3

Je ne sais pas ce qui ne va pas avec vim. Je veux que le répertoire dans lequel je lance vim soit le répertoire courant.

J'ai suivi le conseil sur autochd ci-dessus et mis cela à noautcd dans mon .vimrc.

Je ne l'ai pas encore fait, mais je suis sur le point de démarrer vim comme ça à partir de maintenant:

vim —cmd 'cd `pwd`'

Cela le fera coller au répertoire actuel!

McUsr
la source
2

En netrw:plus d'appuyer sur la ctouche pour définir le répertoire courant, vous pouvez également mettre:

let g:netrw_keepdir= 0

dans votre .vimrc; cela signifie que netrwle répertoire de navigation restera le même que le répertoire actuel.

Chip Campbell
la source
Cela semble avoir un comportement équivalent à: lcd pour chaque changement de dossier netrw. Avez-vous une idée de la façon dont ce paramètre pourrait être l'équivalent d'un: cd à la place (changer le répertoire pour toutes les fenêtres)? Merci!
mgouin
1

L'ajout de ceci à mon .vimrcchange automatiquement le répertoire de travail de Vim dans le fichier actuel:

autocmd BufEnter * silent! :lcd%:p:h
Matthias Braun
la source
3
set autochdirfait ça aussi :-)
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功