Chiavi incasinate in vim quando si esegue all'interno di tmux


9

Ho giocato con tmux e lo adoro. Tuttavia, c'è un fastidioso problema quando si esegue vim al suo interno.

In qualche modo i tasti freccia vengono rimappati, ma solo in determinati momenti, come quando si avvia Command-T, se provo a scorrere verso il basso l'elenco dei file, il comando viene annullato e mi viene lanciato in modalità di inserimento, e in base al tasto freccia Ho premuto, un A, B, C o D è inserito.

Se ad esempio utilizzo le frecce per spostarmi in un buffer, funzionano correttamente.

Qualche idea?

Grazie!


1
Cosa c'è $TERMfuori tmux? Che dire di dentro? Sembra che stia succedendo qualcosa con l'applicazione e le normali modalità della tastiera.
In pausa fino a nuovo avviso.

Fuori da tmux: xterm, dentro: screen ... quindi se corro TERM=screen vimvedo lo stesso comportamento, quindi devo sistemare lo schermo?
Ivan,

Risposte:


13

Ho semplicemente aggiunto set -g default-terminal "xterm"al mio .tmux.conf

Questo ha fatto sì che tmux usasse xterm invece dello schermo, quindi la vita è bella e non ho bisogno di preoccuparmi di calpestare i tasti.


5
Meglio così set -g default-terminal "xterm-256color". Altrimenti non potrei notare quando in modalità visiva a causa di colori limitati.
Macario,

1
Ho dovuto combinare questo con set -g xterm-keys on.
Dan Stahlke,

4
Vale la pena notare che la pagina man di tmux dice di non impostare mai default-terminal. Non sono sicuro di quali siano le conseguenze.
Dan Stahlke,

1
Dato l'avvertimento che default-terminalnon dovrebbe essere impostato, c'è forse una soluzione migliore dal lato vim: link .
Dan Stahlke,

Non funziona nel mio caso ...
Blaszard,

6

Finalmente ho trovato la mia risposta qui: quando eseguo lo schermo su OSX, command + r rovina i tasti freccia in vim su tutti gli schermi

La cosa strana è che ho aggiunto UN SOLO mapping al mio file .vimrc:

map <Esc>[B <Down>

Ma quella mappatura singola fa funzionare TUTTI i tasti freccia ...


In qualche modo ... questa è stata l'unica soluzione che ha funzionato per me su Centos 6.3
Patryk,

Questo non ha assolutamente senso per me, ma l'aggiunta di una singola mappatura sembra correggere anche tutte le chiavi per me. Anche più strano (almeno per me) la mappatura diretta del tasto premuto in modalità inserimento non lo risolve ( map ^[A <Up>funziona premendo Ctrl + V <Up> ed eliminando O, map ^[OA <Up>premendo Ctrl + V <Up> e lasciando O non 't). Non capisco ... ma qualunque cosa. Le mie chiavi ora funzionano. Grazie.
ND Geek,


1

Nel caso in cui qualcuno si arrabbi con queste soluzioni non funzionanti.

Verifica che non stai effettivamente utilizzando il plugin tmux + vim + AutoClose vim. La chiusura automatica mappa qualcosa che ti fa avere caratteri ABCD inseriti nella riga precedente!

Ho appena cancellato il plugin e ora funziona bene


Grazie! Questo è stato per me. Invece ho finito per usare questo plugin autoclose . Fornisce funzionalità simili.
ollpu,

0

Command-T fa qualcosa di stupido mappando quando si esegue in un terminale. Salta la mappatura se $ TERM è vt100 * o xterm *, ma questa non è una buona soluzione.


0

Per quelle persone che vogliono spostare il cursore in modalità riga di comando, dai un'occhiata a questo post sul blog. Ho finito per aggiungere otto righe nel mio 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>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.