С $ TERM = 'screen-256color' в tmux ключи HOME и END не работают. Зачем? - PullRequest
22 голосов
/ 22 декабря 2011

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

Я должен добавить, что home, кажется, работает в irssi, но не vim.Похоже, что Home отправляет (согласно Ctrl+v <HOME>) ^[OH

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

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

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

Спасибо!

Ответы [ 3 ]

14 голосов
/ 13 марта 2012

Приведенное выше решение для картографирования не влияет на командный режим или визуальный режим. Следующее является более идеальным решением, пока 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 голосов
/ 21 января 2014

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

2 голосов
/ 26 февраля 2012

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