Ich versuche, den Code aus dieser Antwort zu verbessern , um vor dem Erstellen des fehlenden Verzeichnisses um Bestätigung zu bitten. Folgendes schreibe ich:
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"))
Eines fehlt mir: Wenn ich nicht y
an der Eingabeaufforderung drücke, möchte ich, dass Vim den Schreibvorgang abbricht, damit ich den Fehler nicht erhalte E212: Can't open file for writing
und keine andere Taste drücken muss, damit die Fehlermeldung verschwindet. Gibt es einen Weg, dies zu erreichen?
:
für Befehle niemals erforderlich.silent
damit Sie keine Nachricht erhalten, wenn Sie diese nicht verwendenautogroup
. Ich habe auch ein anderes Problem behoben, das mir aufgefallen ist::w another_name
hat nicht funktioniert (funktioniert nicht).write
nur in den aktuellen Dateinamen geschrieben wird (genau wie bei der Eingabe:write
) und:write another_filename
nicht funktioniert (es wird immer noch der ursprüngliche Dateiname verwendet).bufype
Einstellung verwenden, um den Puffertyp abzurufen . Fühlen Sie sich frei, den Beitrag mit einem Fix zu bearbeiten (oder wenn Sie dies nicht tun, werde ich nächste Woche).