【问题标题】:With $TERM='screen-256color' under tmux, HOME and END keys don't work. Why?在 tmux 下使用 $TERM='screen-256color',HOME 和 END 键不起作用。为什么?
【发布时间】:2011-12-22 12:54:02
【问题描述】:

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

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

值得补充的是,我很清楚使用^$ 移动到行首和行尾的能力,但是$ 没有走到最后,而是倒数第二个字符,我更喜欢使用HOMEEND(因为我可以在其他 $TERM 设置下使用)。

谁能解释一下为什么会这样,我该如何解决?

作为部分修复,我将 vim 键绑定设置为将 <Home><End> 按键映射到 <Esc>OH<Esc>OF。这并不理想,但暂时有效!详情请见https://github.com/jvc26/dotfiles/blob/master/.vimrc

谢谢!

【问题讨论】:

    标签: bash terminal tmux


    【解决方案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 键绑定设置为将 &lt;Home&gt;&lt;End&gt; 按键映射到 &lt;Esc&gt;OH&lt;Esc&gt;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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-12
        • 2013-02-28
        • 1970-01-01
        • 2017-03-21
        • 1970-01-01
        • 2013-12-03
        • 2018-02-14
        • 1970-01-01
        相关资源
        最近更新 更多