2011-12-13 17 views
10

Existe la opinión de que al trabajar en vim no debe usar la tecla Esc (use ctrl + c en su lugar) y no use las teclas de flecha (use h, j, k, l) en tu teclado. Pero es difícil no usar esas llaves. Pensé que hay una forma de desactivar esas claves en .vimrc, por lo que no habrá otra opción más que usar ctrl + c y hjkl.Cómo deshabilitar las teclas Esc y cursor en vim

He buscado un poco y he encontrado una solución en este link. Así que he insertado el siguiente en mi archivo .vimrc:

inoremap <Up>  <NOP> 
inoremap <Down> <NOP> 
inoremap <Left> <NOP> 
inoremap <Right> <NOP> 
inoremap <Esc> <NOP> 
noremap <Up>  <NOP> 
noremap <Down> <NOP> 
noremap <Left> <NOP> 
noremap <Right> <NOP> 
noremap <Esc> <NOP> 

Pero esto no funciona. Agregar esto a mi .vimrc rompe mi asignación a las teclas de función . El otro problema es que no bloquea la función de las teclas de flecha cuando presiono Abajo en el modo normal se realizan múltiples acciones: el cursor sube una línea, se crea la nueva línea y se inserta el carácter "B".

¿Cómo puedo desactivar en mi vim 7.2 las teclas del cursor y la tecla Esc sin romper nada más?

+8

Aunque puede ser que la opinión, que la opinión es simplemente errónea. 'Ctrl-c' no funciona de la misma manera que' Esc' o 'Ctrl- [' do. Puede que ya comprenda esto, pero en caso de que alguien que lea esto no lo haga, 'Ctrl-c' se salta el evento autoCAD' InsertLeave' y también expande cualquier abreviatura de modo de inserción pendiente. Esto significa que cualquier script que esté utilizando que dependa de estas funciones se romperá si comienza a usar 'Ctrl-c' para salir del modo de inserción en lugar de hacerlo correctamente. En resumen, es un mal hábito acostumbrarse y recomiendo encarecidamente que no lo haga. –

+0

@RandyMorris ¿tiene alguna duda sobre la reasignación de las teclas de flecha exclusivamente? – Robz

+0

@Robz en absoluto. Proporcionan una asignación duplicada de forma predeterminada, por lo que son un gran candidato para el mapeo de algo más útil. –

Respuesta

15

Si está utilizando vim en un terminal, no debería volver a correlacionar Escape. Debido a la forma en que se manejan las claves en vim (y probablemente en los terminales en general), la reasignación romperá todo tipo de claves que no tenía la intención de cambiar. Para ver lo que quiero decir, haz lo siguiente.

  1. Abra vim sin archivos de inicio: vim -u NONE --noplugin -N.
  2. Ingrese modo inserción.
  3. Presione Ctrl-v seguido de cualquiera de las teclas de función, como <F2>.

Observe la secuencia que se ingresa. Es muy probable que comience con ^[ que es un literal Escape.

Ahora abierta pruebe lo siguiente:

  1. :inoremap <esc> NO ESCAPE FOR YOU
  2. Entre en el modo de inserción.
  3. Presione cualquiera de las teclas de función, como <F2>.

Si la secuencia anterior mostró el carácter de escape como parte de la pulsación de la tecla <F2>, ahora verá nuestra nueva cadena impresa en la pantalla. De hecho, ahora que tiene la asignación, intente moverse utilizando las teclas del cursor. Probablemente notarás el mismo comportamiento extraño.

En conclusión, no reasigne el escape, casi le garantizo que tendrá consecuencias inesperadas.

6

Aquí hay una forma no geek de lograr lo que desea: arrugue las piezas de papel al tamaño de su pulgar y péguelas con cinta adhesiva en las teclas. En el momento en que tu dedo intenta alcanzarlos, te encontrarás con el papel. Se convertirán en un buen recordatorio. Guárdelos con cinta adhesiva hasta que deje de toparse con ellos.

+2

Esto supone que solo usa vim, algunos de nosotros también queremos cambiar entre otras aplicaciones. – ideasman42

3

Lo que tenía era estrecha:

inoremap <esc> <NOP> 
inoremap <Left> <NOP> 
inoremap <Right> <NOP> 
inoremap <Up> <NOP> 
inoremap <Down> <NOP> 
nnoremap <Left> <NOP> 
nnoremap <Right> <NOP> 
nnoremap <Up> <NOP> 
nnoremap <Down> <NOP> 

Esta línea le estaba causando problemas:

noremap <Esc> <NOP> 
+1

¡Gracias! Como veo, esto está muy cerca de lo que estaba buscando. Las teclas de flecha no funcionan (y esta es la acción deseada), pero la tecla "Esc" aún cambia del modo de inserción al modo normal. Y quiero eliminar este comportamiento. – bessarabov

Cuestiones relacionadas