С $TERM = 'screen-256color' в tmux ключи HOME и END не работают. Зачем?
У меня tmux настроен с $TERM
, установленным на screen-256color
правильно. Это прекрасно работает, и цвета настроены правильно, однако это мешает мне отправлять клавиши HOME
и END
на терминал, которые вместо этого печатаются как F\n
и H\n
.
Я должен добавить, что дом, похоже, работает в irssi, но не vim. Кажется, что дом отправляется (согласно Ctrl+v <HOME>
), ^[OH
Возможно, стоит добавить, что мне хорошо известно, что можно использовать ^
и $
для перехода к началу и концу строк, однако $
не подходит к концу, а предпоследний и я предпочитаю использовать HOME
и END
(как я могу в других настройках $TERM).
Может кто-нибудь объяснить, почему это так, и как я могу это исправить?
Как исправление частично, я установил привязки клавиш vim для сопоставления клавиш <Home>
и <End>
на <Esc>OH
и <Esc>OF
. Это не идеально, но работает на данный момент! Подробнее см. https://github.com/jvc26/dotfiles/blob/master/.vimrc.
Спасибо!
Ответы
Ответ 1
Вышеописанное решение сопоставления не влияет на командный режим или визуальный режим. Следующее является более идеальным решением до тех пор, пока tmux или vim не исправят ошибку (поставьте .vimrc):
""""""""""""""
" tmux fixes "
""""""""""""""
" Handle tmux $TERM quirks in vim
if $TERM =~ '^screen-256color'
map <Esc>OH <Home>
map! <Esc>OH <Home>
map <Esc>OF <End>
map! <Esc>OF <End>
endif
Ответ 2
В качестве исправления я установил привязки клавиш vim для сопоставления клавиш <Home>
и <End>
на <Esc>OH
и <Esc>OF
.
" Handle TERM quirks in vim
if $TERM =~ '^screen-256color'
set t_Co=256
nmap <Esc>OH <Home>
imap <Esc>OH <Home>
nmap <Esc>OF <End>
imap <Esc>OF <End>
endif
Ответ 3
Также возможно установить привязки клавиш в .inputrc
, как описано в файле archlinux Home_and_End_keys_not_working или .zshrc
, как показано на zshwiki/zle/bindkeys. В этом другом вопросе stackoverflow есть несколько дополнительных полезных советов home-end-keys-do-not-work-in-tmux