Estoy tratando de mejorar el código de esta respuesta para pedir confirmación antes de crear el directorio que falta, esto es lo que escribo:
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"))
Una cosa que me falta: cuando no presiono y
el mensaje, me gustaría que Vim cancele la escritura para no obtener el error E212: Can't open file for writing
y no necesito presionar otra tecla para que desaparezca el mensaje de error. Hay una manera de lograr esto?
:
nunca es necesario para los comandos.silent
para que no recibas un mensaje si no estás usando estoautogroup
. También solucioné otro problema que noté::w another_name
no funcionó (no funciona).write
simplemente escribirá en el nombre de archivo actual (al igual que cuando escribe:write
), y:write another_filename
no funcionará (seguirá utilizando el nombre de archivo original).bufype
configuración para obtener el tipo de búfer. Siéntase libre de editar la publicación con una solución (o si no lo hace, lo haré la próxima semana).