Перепутались ключи в 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.