2012-07-26 42 views
6

He estado haciendo una transición a GVim últimamente, porque me parece más estético y un poco más rápido que vim en la terminal. Tengo este muy mal hábito que estoy tratando de romper. Cuando solía vim desde la línea de comandos de mi flujo de trabajo fue la siguiente:Forzar GVim para avisar antes de cerrar

vim filename.txt 
# make some edits 
ZZ 
# do other stuff 
vim otherfile.txt 
# make some edits 
ZZ 

Ahora, utilizando GVim, que terminan cerrando el editor con demasiada frecuencia. Me pregunto si hay una forma de forzar solo a GVim para que me pregunte o abra un búfer vacío cuando hago un :wq o ZZ. ¿Algunas ideas?

EDIT: Sé cómo reasignar claves, pero me pregunto si hay una forma de forzar a GVim a tener un comportamiento diferente cuando se llama a vim desde la línea de comandos.

Respuesta

6

llamar a una función en ZZ y si solo queda una pestaña y ventana, solicite que se cierre o no (el valor predeterminado es cerrar). Ver :help confirm().

nnoremap ZZ :call QuitPrompt()<cr> 

fun! QuitPrompt() 
    if has("gui_running") && tabpagenr("$") == 1 && winnr("$") == 1 
     let choice = confirm("Close?", "&yes\n&no", 1) 
     if choice == 1 | wq | endif 
    else | wq | endif 
endfun 
6

Poner lo siguiente en su vimrc podrían utilizarse para desactivar por completo el acceso directo ZZ completo:

nnoremap ZZ <Nop> 

O bien, podría volver a asignar al comportamiento estándar de :q:

if has("gui_running") 
    nnoremap ZZ :q 
    nnoremap :wq :q 
endif 
+0

que pueda hacer eso, pero todavía me gusta la posibilidad de llevar a vim en la línea de comandos, hacer una edición rápida y ZZ. – jfocht

+0

Si ese es el caso, simplemente rodéelo con 'if has (" gui_running ") ... endif' – sybkar

2

Añadir esto en su .vimrc:

set confirm 
Cuestiones relacionadas