2012-07-26 16 views
6

Ultimamente ho effettuato una transizione a GVim, perché trovo che sia più esteticamente gradevole e un po 'più veloce di quanto non lo sia nel terminale. Ho questa pessima abitudine che sto cercando di rompere. Quando ho usato vim dalla riga di comando il mio flusso di lavoro è stato così:Forza GVim a chiedere prima di chiudere

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

Ora utilizzando GVim, finisco per chiudere l'editor di gran lunga troppo frequentemente. Mi chiedo se c'è un modo per forzare solo GVim a richiedere o aprire un buffer vuoto quando faccio un :wq o ZZ. Qualche idea?

EDIT: So come rimappare le chiavi, ma mi chiedo se c'è un modo per forzare GVim ad avere un comportamento diverso da quando viene chiamato vim dalla riga di comando.

risposta

6

chiama una funzione su ZZ e se è rimasta una sola scheda e finestra, chiedere se chiudere o meno (l'impostazione predefinita è chiudere). Vedi :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

Mettere quanto segue nel vimrc potrebbe essere utilizzato per disattivare completamente il collegamento ZZ del tutto:

nnoremap ZZ <Nop> 

o si poteva rimappare il comportamento standard di :q:

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

posso farlo, ma mi piace ancora la possibilità di far apparire vim nella riga di comando, fare una modifica rapida e ZZ. – jfocht

+0

Se questo è il caso, basta circondarlo con 'if has (" gui_running ") ... endif' – sybkar

2

Aggiungi questo nel vostro Vimrc:

set confirm 
Problemi correlati