Teclas desordenadas en vim cuando se ejecuta dentro de tmux

9

He estado jugando con tmux y me encanta. Sin embargo, hay un problema molesto al ejecutar vim dentro de él.

De alguna manera, las teclas de flecha se reasignan, pero solo en ciertos momentos, como al activar Command-T, si trato de desplazarme hacia abajo en la lista de archivos, el comando se cancela y me lanzan al modo de inserción, y dependiendo de la tecla de flecha Presioné, se inserta una A, B, C o D.

Si uso las flechas para moverme a través de un búfer, por ejemplo, funcionan correctamente.

¿Algunas ideas?

¡Gracias!

Ivan
fuente
1
¿Qué hay $TERMafuera tmux? ¿Qué hay de adentro? Parece que algo está sucediendo con los modos de aplicación y teclado normal.
Pausado hasta nuevo aviso.
Fuera de tmux: xterm, dentro: pantalla ... así que si ejecuto TERM=screen vimveo el mismo comportamiento, ¿entonces debo arreglar la pantalla?
Ivan

Respuestas:

13

Simplemente agregué set -g default-terminal "xterm"a mi .tmux.conf

Esto hizo que tmux usara xterm en lugar de la pantalla, por lo que la vida es hermosa y no necesito preocuparme por pisar las teclas.

Zee
fuente
55
Mejor así set -g default-terminal "xterm-256color". De lo contrario, no pude notar cuando estaba en modo visual debido a los colores limitados.
Macario
1
Tuve que combinar esto con set -g xterm-keys on.
Dan Stahlke
44
Vale la pena señalar que la página de manual de tmux dice que nunca se configure default-terminal. No estoy seguro de cuáles son las ramificaciones.
Dan Stahlke
1
Dada la advertencia que default-terminalno debe establecerse, quizás haya una mejor solución desde el lado vim: enlace .
Dan Stahlke
No funciona en mi caso ...
Blaszard
6

Finalmente encontré mi respuesta aquí: cuando ejecuto la pantalla en OSX, command + r desordena las teclas de flecha en vim en todas las pantallas

Lo extraño es que solo agregué UNA asignación a mi archivo .vimrc:

map <Esc>[B <Down>

Pero esa asignación única hace que TODAS las teclas de flecha funcionen correctamente ...

Ivan
fuente
De alguna manera ... esta fue la única solución que funcionó para mí en Centos 6.3
Patryk
Esto no tiene absolutamente ningún sentido para mí, pero agregar una sola asignación parece arreglar todas las claves para mí también. Aún más extraño (al menos para mí) el mapeo directo para la pulsación de tecla en el modo de inserción no lo arregla ( map ^[A <Up>funciona presionando Ctrl + V <Up> y eliminando el O, map ^[OA <Up>presionando Ctrl + V <Up> y dejando el O doesn 't). No lo entiendo ... pero lo que sea. Mis llaves ahora funcionan. Gracias.
ND Geek
1

En caso de que alguien se enoje con estas soluciones que no funcionan.

Compruebe que en realidad no está utilizando el complemento tmux + vim + AutoClose vim. ¡El cierre automático asigna algo que hace que tenga caracteres ABCD insertados en la línea anterior!

Acabo de borrar el complemento y está funcionando bien ahora

txomon
fuente
¡Gracias! Esto fue para mí. Terminé usando este autoclose-plugin en su lugar. Proporciona una funcionalidad similar.
ollpu
0

Command-T hace algo tonto al mapear cuando se ejecuta en una terminal. Omite la asignación si $ TERM es vt100 * o xterm *, pero esa no es una buena solución.

graywh
fuente
0

Para aquellas personas que desean mover el cursor en modo de línea de comando, eche un vistazo a esta publicación de blog. Terminé agregando ocho líneas en mi vimrc;

" Needed for tmux and vim to play nice
" Needed for tmux and vim to play nice
map <Esc>[A <Up>
map <Esc>[B <Down>
map <Esc>[C <Right>
map <Esc>[D <Left>

" Console movement
cmap <Esc>[A <Up>
cmap <Esc>[B <Down>
cmap <Esc>[C <Right>
cmap <Esc>[D <Left>
frbl
fuente