Перепутались ключи в vim при запуске внутри tmux


9

Я играл с tmux и мне это нравится. Однако при запуске vim внутри него возникает досадная проблема.

Каким-то образом клавиши со стрелками перераспределяются, но только в определенные моменты времени, например, при запуске Command-T, если я пытаюсь прокрутить список файлов вниз, команда отменяется, и меня бросают в режим вставки, и в зависимости от клавиши со стрелкой Я нажал, A, B, C или D вставлен.

Если я использую стрелки для перемещения, например, через буфер, они работают правильно.

Любые идеи?

Спасибо!


1
Что $TERMснаружи tmux? Как насчет внутри? Похоже, что-то происходит с приложением и обычными режимами клавиатуры.
Приостановлено до дальнейшего уведомления.

Снаружи tmux: xterm, inside: screen ... так что, если я запускаю, TERM=screen vimя вижу то же самое поведение, поэтому я должен исправить экран?
Иван

Ответы:


13

Я просто добавил set -g default-terminal "xterm"в свой .tmux.conf

Это заставило tmux использовать xterm вместо экрана, так что жизнь прекрасна, и мне не нужно беспокоиться о том, как надо нажимать на клавиши.


5
Лучше вот так set -g default-terminal "xterm-256color". В противном случае я не мог заметить, когда в визуальном режиме из-за ограниченных цветов.
Макарио

1
Я должен был объединить это с set -g xterm-keys on.
Дэн Шталке

4
Стоит отметить, что на странице man для tmux сказано, что никогда не устанавливается default-terminal. Я не уверен, каковы последствия.
Дэн Шталке

1
С учетом предупреждения, которое default-terminalне следует устанавливать, возможно, существует лучшее решение со стороны vim: ссылка .
Дэн Штальке

Не работает в моем случае ...
Blaszard

6

Наконец, я нашел свой ответ здесь: при запуске экрана в OSX команда + r портит клавиши со стрелками в vim на всех экранах

Странно то, что я только добавил ОДНО сопоставление в мой файл .vimrc:

map <Esc>[B <Down>

Но это единственное отображение заставляет ВСЕ клавиши со стрелками работать должным образом ...


Почему-то ... это было единственное решение, которое работало для меня на Centos 6.3
Patryk

Это не имеет никакого смысла для меня, но добавление одного сопоставления, кажется, исправит все ключи для меня. Даже незнакомый (по крайней мере, мне), прямое сопоставление для нажатия клавиш в режиме вставки не исправляет это ( map ^[A <Up>работает от нажатия Ctrl + V <Up> и удаления O, map ^[OA <Up>от нажатия Ctrl + V <Up> и выхода из O «т). Я не понимаю ... но что угодно. Мои ключи теперь работают. Спасибо.
ND Geek


1

Просто на случай, если кто-то разозлится из-за того, что это решение не работает.

Убедитесь, что вы на самом деле не используете плагин tmux + vim + AutoClose vim. Автоматически закройте карты, что приведет к вставке символов ABCD в предыдущую строку!

Я просто стер плагин, и теперь он работает нормально


Спасибо! Это было для меня. В итоге я использовал этот плагин autoclose . Это обеспечивает аналогичную функциональность.
ollpu

0

Command-T делает что-то глупое, отображая при запуске в терминале. Он пропускает отображение, если $ TERM равен vt100 * или xterm *, но это не очень хорошее решение.


0

Для тех людей, которые хотят переместить курсор в режиме командной строки, посмотрите этот пост в блоге. В итоге я добавил восемь строк в свой 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>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.