Próbuję ulepszyć kod z tej odpowiedzi, aby poprosić o potwierdzenie przed utworzeniem brakującego katalogu, oto co piszę:
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"))
Brakuje mi jednej rzeczy: kiedy nie naciskam y
na monit, chciałbym, aby Vim przerwał zapis, więc nie dostaję błędu E212: Can't open file for writing
i nie muszę naciskać innego klawisza, aby komunikat o błędzie zniknął. Jest sposób na osiągnięcie tego?
:
polecenie nigdy nie jest konieczne.silent
, abyś nie dostał wiadomości, jeśli jej nie używaszautogroup
. Naprawiłem również inny problem, który zauważyłem::w another_name
nie działał (nie działa).write
po prostu zapisze bieżącą nazwę pliku (tak jak podczas pisania:write
) i:write another_filename
nie będzie działać (nadal będzie używać oryginalnej nazwy pliku).bufype
ustawienia, aby uzyskać typ bufora. Edytuj post z poprawką (lub jeśli nie, zrobię to w przyszłym tygodniu).