2012-03-14 8 views
5

que estoy haciendo constantemente presente en vim: [hacer algo en la inserción o el modo normal], Esc: wsGuardar archivo después de cada edición, en vim

hago esto cientos de veces al día. En cambio, me gustaría perder el hábito y tener vim guardar en el archivo inmediatamente después de cualquier cambio en el búfer.

Todo se está ejecutando en un disco SSD, por lo que no espero que el rendimiento sea un problema.

Respuesta

2

No es que yo sepa, aparte de codificarlo (check out the VIM Wiki for a starting point). El archivo de intercambio de VIM casi hace lo que usted está pidiendo, para fines de recuperación.

Desde VIM man page;

El archivo de intercambio se actualiza después de escribir 200 caracteres o no cuando se tiene escrito nada durante cuatro segundos

parece que eso sería coger la mayoría de los caprichos. ¿Hay algún problema específico que estés tratando de evitar?

+0

Me gustaría ejecutar syntastic cada vez que cambio algo (de forma predeterminada se ejecuta al guardar) y me gustaría perder el hábito de guardar constantemente de forma manual. No me gustan los archivos de intercambio porque contaminan mi directorio de trabajo. Creo que podría ahorrar cada 1 segundo más o menos, pero parece innecesario. –

10

Añadir este simple mapeo a su ~/.vimrc:

inoremap <Esc> <Esc>:w<CR> 

para escribir el búfer de forma automática en cada <Esc> en el modo de inserción .

+4

Parece obvio, ahora que lo pienso, pero solo resuelve la mitad del problema. Puede editar el búfer sin tener que ingresar al modo insertar. –

+0

OMG Yo votaría esto 50 veces si pudiera –

2

El CursorHoldCursorHoldI y podría ayudar. De acuerdo con documentos:

|CursorHold|  the user doesn't press a key for a while 
|CursorHoldI|  the user doesn't press a key for a while in Insert mode 

Esos eventos se desencadenan única vez después de la inactividad y dependen de updatetime variable (por defecto: 4000ms). Para que pueda:

:au CursorHold <buffer> :update 

que actualizará archivo de búfer actual (es decir, guardar sólo si modificado) después del incumplimiento de 4 segundos de inactividad en el modo Normal.

Agregue autocomando para CursorHoldI si desea obtener el mismo comportamiento en el modo Insertar.

Cuestiones relacionadas