J'essaie d'améliorer le code de cette réponse pour demander une confirmation avant de créer le répertoire manquant, voici ce que j'écris:
function! CreateDirectoryAskConfirmation(path)
if !isdirectory(a:path)
echohl Question
echo "Create directory " . a:path . "?"
echohl None
let response = nr2char(getchar())
if response ==? "y"
call mkdir(a:path, "p")
endif
endif
endfunction
autocmd BufWritePre * call CreateDirectoryAskConfirmation(expand("<afile>:p:h"))
Une chose me manque: lorsque je n'appuie pas y
à l'invite, j'aimerais que Vim abandonne l'écriture pour ne pas avoir l'erreur E212: Can't open file for writing
et je n'ai pas besoin d' appuyer sur une autre touche pour faire disparaître le message d'erreur. Il existe un moyen d'y parvenir?
:
n'est jamais nécessaire pour les commandes.silent
afin que vous n'obteniez pas de message si vous ne l'utilisez pasautogroup
. J'ai également corrigé un autre problème que j'ai remarqué::w another_name
ne fonctionnait pas (ça ne fonctionne pas).write
il suffit d'écrire dans le nom de fichier actuel (comme lorsque vous tapez:write
) et:write another_filename
ne fonctionnera pas (il utilisera toujours le nom de fichier d'origine).bufype
paramètre pour obtenir le type de tampon. N'hésitez pas à modifier le message avec un correctif (ou si vous ne le faites pas, je le ferai la semaine prochaine).