2008-09-17 24 views
12

Uno de los mejores consejos para el uso vim que he aprendido hasta ahora ha sido que uno puede presionar Ctrl +C o Ctrl +[ lugar de la tecla Esc . Sin embargo, yo utilizo un teclado Dvorak por lo Ctrl +[ es un poco fuera de su alcance para mí, así que yo utilizo sobre todo Ctrl +C. Ahora he leído en alguna parte que estas dos combinaciones de teclas en realidad no tienen exactamente el mismo comportamiento y que es mejor usar Ctrl + [. No he encontrado ningún problema hasta ahora, así que me gustaría saber cuál es exactamente la diferencia entre los dos.¿Cuál es la diferencia entre <C-C> y <C-[> en vim?

Respuesta

13

De acuerdo con la documentación de Vim, Ctrl +C no comprueba para las abreviaturas y no activa el evento InsertLeave AutoCommand mientras Ctrl +[ hace.

Una opción es utilizar el siguiente para volver a asignar Ctrl +C

inoremap <C-c> <Esc><Esc> 
+0

¿Qué significa eso? –

+1

'inoremap ' es una sintaxis válida, '[...]' no lo es. – ZyX

+0

decir, ¿por qué necesitas 2 escapes? – doubleDown

1

Como resultado, <C-[> es exactamente idéntica a la Esc, que son el mismo personaje. Así que no hay necesidad de preguntarse sobre ninguna diferencia allí. :)

+1

La pregunta es acerca de la diferencia entre C- [y CC aunque, * no * la diferencia entre C- [y Esc – doubleDown

3

Respuesta extremadamente tardía, pero tuve la misma pregunta y encontré un ejemplo práctico que ayuda a explicar la diferencia, ¿por qué no?

Si se selecciona un bloque visual y luego cambia con c o añadir algo al final de la misma con A, si luego salir con <Esc>, el mismo cambio se producirá en todas las líneas del bloque visual (que es realmente útil! Ver :help v_b_A); si sale con <C-c>, esto no sucede, solo una línea obtiene el cambio. Probablemente haya otras cosas similares que no me di cuenta que me faltaba con <C-c> ...

+0

Sí, y me acabo de dar cuenta de que https://github.com/myusuf3/numbers.vim/ depende de la tecla 'Esc'. –

+1

Otra diferencia es cuando se encuentra en la ventana de comandos abierta ('q:' desde el modo normal o '' desde el modo de comando). En ese modo, '' saldrá del modo insert/visual (como ''), mientras que '' lo llevará de regreso al modo comando. –

Cuestiones relacionadas