在tmux下使用$ TERM ='screen-256color',HOME和END键不起作用。为什么?

时间:2011-12-22 12:54:02

标签: bash terminal tmux

我已将tmux设置为$TERM正确设置为screen-256color。此工作正常,并且颜色设置正确,但是它阻止我将HOMEEND键发送到终端,而是将其打印为F\nH\n

我应该补充一点,家庭似乎在irssi工作,但不是vim。 Home似乎发送(根据Ctrl+v <HOME>),^[OH

值得一提的是,我很清楚能够使用^$移动到行的开头和结尾,但是$不会去结束,而不是倒数第二个字符,我更喜欢使用HOMEEND(正如我可以在其他$ TERM设置下)。

任何人都可以解释为什么会这样,以及我如何解决它?

作为部分修复,我设置vim键绑定以将<Home><End>按键映射到<Esc>OH<Esc>OF。这不是理想的,但暂时起作用!有关详细信息,请参阅https://github.com/jvc26/dotfiles/blob/master/.vimrc

谢谢!

3 个答案:

答案 0 :(得分:14)

上述映射解决方案不会影响命令模式或可视模式。以下是更理想的解决方案,直到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

答案 1 :(得分: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

答案 2 :(得分:2)

也可以像Home_and_End_keys_not_working上的解释一样设置.inputrc中的键绑定,如zshwiki/zle/bindkeys.zshrc上所述。此其他stackoverflow问题还有一些其他有用的提示home-end-keys-do-not-work-in-tmux