¿Hay alguna manera de volver a enlazar: q en vim a un comando más complejo para evitar salir accidentalmente de vim?¿Cómo prevenir el abandono de vim accidentalmente?
Respuesta
¿A qué le tienes miedo? Vim no le permitirá salir (sin un modificador de comando !
, de todos modos) cuando todavía tiene cambios no guardados, por lo que lo único que perderá potencialmente es la posición de la ventana, el tamaño y tal vez la posición de la barra de tareas de GVIM.
De todos modos, para anular comandos internos como :q
, se puede utilizar el cmdalias plugin, así:
:Alias q if\ winnr('$')>1||tabpagenr('$')>1||confirm('Really\ quit?',\ "&OK\\n&Cancel")==1|quit|endif
Esto comprueba la última ventana (:q
no necesariamente salir de Vim), e inserta una confirmación .
El problema es que 'q' está muy cerca de'! '. – Qix
@Qix: ¡Pero normalmente necesita Shift para obtener el '!'; ni ': q1' ni': Q! 'a ningún daño. Si estás afectado por el dedo gordo, de todos modos no te divertirás mucho en Vim. –
Estaba siendo parcialmente gracioso. Esta fue la primera vez que he engordado digamos 'q!' En los pocos años que llevo usando Vim, lol. – Qix
Usted puede usar algo como esto para eliminar el comando :q
:
:cabbrev q <c-r>=(getcmdtype()==':' && getcmdpos()==1 ? 'echo' : 'q')<CR>
Esto abrevia q
a echo
en modo comando, pero no permite la abreviatura para desencadenar si el q
no está en la primera columna. De esta forma, edit q
no abreviará a edit echo
.
Lo que quiere es :close
. Actúa como :q
pero no le permitirá cerrar la última ventana:
http://vimdoc.sourceforge.net/htmldoc/windows.html#:close
Puede configurar un alias para el comando q
para asignar a close
:
cabbrev q <c-r>=(getcmdtype()==':' && getcmdpos()==1 ? 'close' : 'q')<CR>
Gracias @Paradoxial para este : truco de cabbrev
ConfirmQuit.vim: Proporciona un diálogo de confirmación cuando se intenta salir de vim
http://www.vim.org/scripts/script.php?script_id=1072
Adapté esto mediante el uso
autocmd bufenter c:/intranet/notes.txt cnoremap <silent> wq<cr> call ConfirmQuit(1)<cr>
Como sólo quería esto en esto para un archivo en particular
¡Gracias! Sin embargo, cualquier persona que use vim simple que utiliza ConfirmQuit.vim querrá eliminar el "if has (" gui_running ")" –
Lo sé, lo sé, es una pregunta muy antigua, pero tuve la misma pregunta hoy y encontré esta publicación primero. Desarrollé un guión corto para poner en .vimrc
function! ConfirmQuit(writeFile)
if (a:writeFile)
if (expand('%:t')=="")
echo "Can't save a file with no name."
return
endif
:write
endif
if (winnr('$')==1 && tabpagenr('$')==1)
if (confirm("Do you really want to quit?", "&Yes\n&No", 2)==1)
:quit
endif
else
:quit
endif
endfu
cnoremap <silent> q<CR> :call ConfirmQuit(0)<CR>
cnoremap <silent> x<CR> :call ConfirmQuit(1)<CR>
Espero que esto ayude a alguien.
¡Gracias! ¡No quería otro complemento! –
- 1. ¿Evita que vim abra archivos binarios accidentalmente?
- 2. Accidentalmente cometido el directorio .svn
- 3. puso accidentalmente en git
- 4. Cómo prevenir el evento ListBox.SelectedIndexChanged?
- 5. ¿Cómo prevenir el spoofing HTTP?
- 6. Jackson: cómo prevenir el campo de serialización
- 7. ¿Cómo prevenir el envío del formulario?
- 8. Cómo prevenir el restablecimiento del formulario HTML
- 9. ¿Cómo prevenir el desbordamiento del búfer memcpy?
- 10. prevenir el comportamiento de anclaje
- 11. ¿Cómo puedo dejar de registrar accidentalmente un archivo en TFS
- 12. Cómo evitar accidentalmente 'hg push' en lugar de 'hg qpush'?
- 13. Suprimió accidentalmente el código de un archivo Xaml. ¿Cómo agrego el código de nuevo?
- 14. Prevenir un accidente Atrás Examinar
- 15. Enlazar listas de abandono con JQuery en Asp.Net
- 16. rama accidentalmente creado con el nombre origin/master
- 17. Eliminado accidentalmente un elemento web, ¿cómo puedo recuperarlo?
- 18. ¿Cómo estoy sobrescribiendo accidentalmente al hacer referencia a estos punteros?
- 19. Código publicado accidentalmente para vivir. ¿Cómo evitar que ocurra nuevamente?
- 20. Cómo recuperar una carpeta eliminada accidentalmente en un repositorio SVN
- 21. ¿Cómo prevenir el código jQuery de demasiadas funciones de anidamiento?
- 22. ¿Cómo prevenir el secuestro de sesiones de tomcat?
- 23. Rails 3: abandono el envío de correo dentro de la acción de ActionMailer
- 24. Prevenir el conflicto de tuberías con nombre
- 25. Cómo prevenir la redefinición macro
- 26. ¿Cómo prevenir el retraso de desplazamiento en Safari Mobile (iPad)?
- 27. ¿Cómo prevenir el cierre de la ventana del navegador?
- 28. ¿Cómo prevenir el cierre automático de las llaves en ReSharper?
- 29. Cómo prevenir el escape automático de caracteres especiales en Python
- 30. ¿Cómo prevenir el error de redondeo en C++?
: q no es lo suficientemente complejo? Nunca lo golpeé accidentalmente ... –
Estoy de acuerdo con @EricJ. Tienes que escribir ':', luego 'q', luego presionar Enter. ¿Qué comando común que * no * abandona está cerca de eso? –
@KeithThompson - Bueno, 'q:' está cerca de eso, como una manera de hablar. No sé qué tan común es sin embargo. – Rook