Créer un nouveau fichier dans le répertoire du fichier ouvert dans vim?

93

Je me trouve dans la position où je veux créer un nouveau fichier dans le même répertoire que celui dans lequel se trouve le fichier ouvert. Comment créer un nouveau fichier dans le répertoire du fichier ouvert dans vim? De plus, y a-t-il un endroit où je peux apprendre ces choses par moi-même? Googler n'a pas aidé.

Dawg
la source
Parlez-vous de vim, l'éditeur de texte sous Linux?
ianaz

Réponses:

173

À partir de Vim, de nouveaux fichiers sont créés comme les fichiers existants sont modifiés, via des commandes telles que :edit filenameou :split filename. Pour les conserver sur le disque, vous devez (éventuellement taper le contenu et) les conserver via :write.

Comme une invite de commande, Vim a une notion de répertoire courant (le :pwdrépertorie). Tous les chemins de fichiers lui sont relatifs. Vous n'avez pas besoin de dupliquer le chemin vers votre fichier actuel, il y a quelques raccourcis intéressants pour eux: %fait référence au fichier courant, :hest un modificateur pour son répertoire, moins le nom du fichier (cp. :help filename-modifiers) Donc,

:e %:h/filename
:w

créera un nouveau fichier nommé filename dans le même répertoire que le fichier actuellement ouvert et l'écrira.

Alternativement, certaines personnes aiment Vim pour toujours passer au répertoire du fichier actuel. Cela peut être configuré en plaçant

:set autochdir

dans votre ~/.vimrcfichier (qui est lu au démarrage de Vim). Ensuite, ci-dessus devient simplement

:e filename
:w

Enfin, Vim a un excellent intégré :help. Apprenez à naviguer et à le rechercher!

Ingo Karkat
la source
2
autochdirest floconneux, malheureusement, et j'ai trouvé que je ne pouvais pas compter dessus. Au lieu de cela, j'ai mis un autocmd dans mon vimrc:autocmd BufEnter * silent! lcd %:p:h:gs/ /\\ /
dash-tom-bang
1
Dawg aimerait voter votre réponse aussi mais Dawg n'a pas le représentant nécessaire. Merci pour l'explication bien écrite!
Dawg
14

vous devriez essayer avec le plugin "nerdtree". Dans la fenêtre nerdtree, vous avez tapé la touche m et les choix d'opération de fichier vous seront affichés

Harris
la source
11

Si vous souhaitez créer un nouveau fichier et l'afficher également dans la fenêtre à côté de votre fichier actuel, vous pouvez essayer ceci:

:vsp newfile

Le vspsignifie vertical split, et il divise l'écran en deux, l'un montrant votre fichier actuel, l'autre montrant votre nouveau fichier (fonctionne également avec juste sp, qui est une division horizontale).

Selon le commentaire de @ MartinLyne ci-dessus, cela créera le fichier dans le répertoire du fichier dans lequel vous avez ouvert vim. Pour régler cela, vous pouvez modifier le répertoire de travail actuel comme suit:

:cd %:p:h

Cette commande remplace le répertoire de travail actuel par le répertoire du fichier actif, ce qui signifie que l'exécution de la vspcommande (ou de l'une des commandes ci-dessus) créera le fichier dans ce répertoire.

RocketDonkey
la source
2

Lorsque vous avez ouvert vim dans un emplacement inexistant comme $ vim /etc/<some_folder/<next_folder>/file.cfg

puis pour créer un nouveau répertoire en étant à l'intérieur de vim, lancez simplement en mode normal :! mkdir -p /etc/<some_folder/<next_folder>et enregistrez votre doc comme d'habitude :w :x ZZ(ce que vous voulez)

c'est ça

matson kepson
la source
1

C'est pour Gvim! Entrez ceci pour voir le répertoire actuel.

:cd

puis changez-le avec

:cd desktop/somefolder

puis enregistrez ou créez un nouveau fichier là-bas

:enew asd.cpp

maintenant voir à nouveau le fichier

:cd
Le flash
la source
0

Je suis assez en retard à la fête, mais une autre option est d'ouvrir NERDtree avec :Eou :Explore(ou ses alternatives de fractionnement :Vexplore/ :Sexplore== :Vex/ :Sex).

Dans NerdTree, vous pouvez créer un nouveau fichier avec %et taper le nom. Il ouvrira automatiquement le fichier et le créera après l'avoir :wenregistré.

Mazunki
la source