gpt4 book ai didi

r - 重新连接到 tmux/screen 后键盘 IO 损坏

转载 作者:行者123 更新时间:2023-12-04 12:42:29 25 4
gpt4 key购买 nike

通过 ssh 重新附加屏幕或 tmux session 后,我通常会遇到两个问题:

  • vim 选项卡完成已损坏。 :e <Tab>生产 :e ^I而不是建议文件。标签相同 ( :tj )。关闭并重新打开 vim 可以解决这个问题,但代价是失去 vim 状态。
  • R 不能生成图形。我启用了 X11 转发( ssh -X -Y )。关闭和重新打开无济于事。

  • 我无法通过关闭 ssh 窗口并重新连接来故意重现该问题。通常在重新连接之间长时间没有网络连接后会观察到问题,并且通常分离是突然的(网络连接丢失)。

    最佳答案

    Vim 选项卡完成:

    这是 screen/tmux 终端模拟器的问题。如果选项卡在您的 shell 中工作(例如 bash),这可能是 shell 的功劳;它知道为你映射控制序列,而 vim 不知道。据推测,您可以以类似的方式在 vim 中解决此问题,但随后您会在其他一些交互式程序中遇到此问题。

    我无法与 tmux 交谈,但对于屏幕,您应该查看更新您的 ~/.screenrc。我的,从 Redhat 附带的默认值(我不再使用......)复制,包括:

    #xterm understands both im/ic and doesn't have a status line.
    #Note: Do not specify im and ic in the real termcap/info file as
    #some programs (e.g. vi) will not work anymore.
    termcap xterm hs@:cs=\E[%i%d;%dr:im=\E[4h:ei=\E[4l
    terminfo xterm hs@:cs=\E[%i%p1%d;%p2%dr:im=\E[4h:ei=\E[4l

    请注意该评论,它可能表明您的问题。

    另一个对 vi 的引用,可能来自也可能不是来自 Redhat 的 screenrc,是:
    # Yet another hack:
    # Prepend/append register [/] to the paste if ^a^] is pressed.
    # This lets me have autoindent mode in vi.
    register [ "\033:se noai\015a"
    register ] "\033:se ai\015a"
    bind ^] paste [.]

    希望其中一个或两个会有所帮助,否则我已经为您指明了正确的方向,以研究您需要什么来纠正您的屏幕/tmux 终端仿真。或许是 screen, vimrc, and bashrc的答案在 LinuxQuestions.org 上可以提供更多帮助。

    X11转发:

    首次启动屏幕时,将继承 $DISPLAY。例如,我在我的电视服务器上利用了这一点;我在本地启动屏幕( DISPLAY=localhost:0 ),然后当我通过 SSH 连接到它时,我对 X 所做的任何事情都会在电视上弹出。显然,这根本不是您的用例;我只是想告诉您它是如何工作的,以便您了解解决方案。

    如果您重新连接到由旧的 SSH 连接启动的 screen/tmux session ,您可能很幸运并将其连接到同一个 X 显示器(SSH 默认为 localhost:10.0,然后每次发现冲突时都会增加),但是听起来不像是发生在你身上。 (“localhost”部分是可选的,“.0”部分也是可选的。这些对您的目的来说应该无关紧要。 DISPLAY=:10DISPLAY=localhost:10.0 相同)

    在连接到 screen/tmux session 之前,请查看您的 $DISPLAY。
    $ echo $DISPLAY
    localhost:10.0

    然后,登录 screen/tmux 并将 $DISPLAY 设置为您之前看到的内容。
    $ screen -r
    $ export DISPLAY=localhost:10.0

    我不认为 screen 或 tmux 足够聪明,可以走得更远(想想我的电视服务器示例;这并不总是需要的,并要求 screen/tmux 测试 $DISPLAY,然后根据其可用性采取行动有点多),因此您必须手动执行此操作。

    (如果你像我一样在 ~/.bashrc 中添加 screen -r >/dev/null 2>&1,这可能会很烦人。我不会遇到这个问题,因为我尽量避免 X11 转发,因为它像糖蜜一样慢,当然无法幸免于 SSH 断开连接。)

    关于r - 重新连接到 tmux/screen 后键盘 IO 损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11340995/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com