Comment puis-je faire en sorte que Vim utilise un nom de fichier par défaut sans aucun nom de fichier?

17

J'ouvre rarement, voire jamais, vimsans nom de fichier. Souvent, je veux tester quelque chose, généralement un script rapide à jeter, et je les nomme généralement test.sh(ou une variante de celui-ci, comme test.py). Puis-je faire vimassumer un test.shnom de fichier si j'ai couru vimsans aucun nom de fichier? J'utilisais généralement des alias (comme vimspour vim test.shet vimppour vim test.py, ou :w test.shje fais le tout ), mais je me demande s'il y a un moyen de l'intérieur vim. Ce serait encore mieux si je peux restreindre cela à certains répertoires, comme /tmpou ~/dev.

muru
la source

Réponses:

10

Essayez de mettre cela à la fin de votre .vimrc (modifiez-le si nécessaire)

if @% == "" && getcwd() == "/tmp"
    :silent edit test.sh
endif

Cela vérifie si le nom de fichier actuel est vide (fait @%référence au nom de fichier actuel) et vérifie si le répertoire actuel de vim l'est /tmp. Vous pouvez également ajouter d'autres répertoires

(getcwd() == "/tmp" || getcwd() == "~/dev")

Il modifie ensuite silencieusement test.sh. Si ce fichier existe déjà, il le chargera. Sinon, vous commencerez un nouveau tampon avec ce nom et le fichier sera créé si vous l'écrivez.

J'ai fait silence pour supprimer le message suivant lors du démarrage:

"test.sh" [New File]
Press ENTER or type command to continue
John O'M.
la source
5

Une modification de la réponse de John peut être utile:

if @% == "" && getcwd() == "/tmp"
    :silent edit `=glob("test\.*", 1, 1)[0]`
endif

Cela ouvre le premier fichier qui commence par test..

Au lieu de simplement le premier fichier, si vous souhaitez également ouvrir d'autres fichiers correspondants, procédez comme suit:

if @% == "" && getcwd() == "/tmp"
    for i in glob("test\.*", 1, 1)
        :silent edit `=i`
    endfor
endif
user50136
la source