С $TERM='screen-256color' под tmux клавиши HOME и END не работают. Почему?

У меня tmux настроен так, что $TERM правильно установлено на screen-256color. Это работает нормально, и цвета установлены правильно, однако это не позволяет мне отправлять ключи HOME и END на терминал, которые вместо этого печатаются как F\n и H\n.

Я должен добавить, что home работает в irssi, но не в vim. Домой вроде посылает (По словам Ctrl+v <HOME>), ^[OH

Возможно, стоит добавить, что я прекрасно знаю о возможности использовать ^ и $ для перехода к началу и концу строк, однако $ идет не в конец, а предпоследний символ, и я предпочитаю использовать HOME и END (как я могу с другими настройками $TERM).

Может ли кто-нибудь объяснить, почему это так, и как я могу это исправить?

В качестве частичного исправления я установил привязки клавиш vim для сопоставления нажатия клавиш <Home> и <End> с <Esc>OH и <Esc>OF. Это не идеально, но работает на данный момент! Подробнее см. на странице https://github.com/jvc26/dotfiles/blob/master/.vimrc. .

Спасибо!


person jvc26    schedule 22.12.2011    source источник


Ответы (3)


Приведенное выше решение сопоставления не влияет на командный режим или визуальный режим. Ниже приведено более идеальное решение, пока либо 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
person Flowchartsman    schedule 12.03.2012
comment
нет ли способа исправить $, идущий до конца? - person sheki; 19.09.2012
comment
Где-то зарегистрирована ошибка, которую я могу отследить? - person Josiah; 01.10.2013

В качестве исправления я установил привязки клавиш 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
person jvc26    schedule 26.02.2012

Также можно установить привязки клавиш в .inputrc, как описано в archlinux Home_and_End_keys_not_working или .zshrc как на zshwiki/zle/bindkeys. Этот другой вопрос stackoverflow содержит несколько дополнительных полезных советов home-end-keys-do -не работает в tmux

person here    schedule 21.01.2014