- vim的tab自动补全无法正常工作。输入
:e <Tab>
时,会输出:e ^I
而不是建议文件名。标签也是同样的问题(:tj
)。关闭并重新打开vim可以解决此问题,但代价是失去vim状态。
- R无法生成图形。我启用了X11转发(ssh -X -Y
)。关闭并重新打开没有帮助。我无法故意重现这个问题,通常在重新连接之间长时间没有网络连接,并且通常分离是突然的(网络连接中断)。
:e <Tab>
时,会输出:e ^I
而不是建议文件名。标签也是同样的问题(:tj
)。关闭并重新打开vim可以解决此问题,但代价是失去vim状态。
- R无法生成图形。我启用了X11转发(ssh -X -Y
)。关闭并重新打开没有帮助。Vim标签自动补全:
这是与screen/tmux终端仿真器有关的问题。如果在您的shell(例如bash)中可以使用选项卡,那很可能是由于shell的功劳; 它知道为您映射控制序列,而vim则不知道。据推测,您可以以类似的方式在vim中修复此问题,但然后您将在其他交互式程序中遇到此问题。
我无法对tmux发表意见,但对于screen,您应该查看更新您的~/.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终端仿真。也许LinuxQuestions.org上关于screen、vimrc和bashrc的答案可以进一步帮助。
X11转发:
当您首次启动screen时,$DISPLAY被继承。例如,我在我的电视服务器上利用此功能;我在本地启动屏幕(DISPLAY=localhost:0
),然后通过SSH连接到它时,我在电视上弹出有关X的所有内容。显然,这根本不是您的用例;我只是试图让您了解它的工作原理,以便您能够了解解决方案。
如果您正在重新连接到由旧SSH连接启动的屏幕/tmux会话,则可能会幸运地将其连接到相同的X显示器(SSH默认为localhost:10.0,然后每次找到冲突时递增),但听起来似乎不是您的情况。 (“localhost”部分是可选的,如“.0”部分。对于您的目的来说,这些都不重要。DISPLAY=:10
与 DISPLAY=localhost:10.0
相同)
在连接到屏幕/tmux会话之前,请查看您的$DISPLAY。
$ echo $DISPLAY
localhost:10.0
然后,登录到screen/tmux并将$DISPLAY设置为之前所看到的内容。
$ screen -r
$ export DISPLAY=localhost:10.0
echo $DISPLAY
命令。如果它们不同(我怀疑是这样的),则使用setenv
或export
将其设置为正确的值。<TAB>
键到开发版本中的有趣操作(如清除历史记录),所以也许在重新附加后,tmux拥有该事件而不是vim。