SSH在远程服务器上使用vim / nano中的字符

Modified on: Tue, 26 Mar 2019 19:20:02 +0800

......这让我疯了。

基本上(过去几个月一直在发生这种情况),我登录了几个不同的CentOS服务器(一个Linode,另一个VPS,以及我有shell访问权限的共享主机),运行5.5,5.7和6 ,从运行OS X Lion的Mac上,使用终端。

基本上:

$ ssh username@example.com

[remote-host] $ nano somefile.txt

一旦我开始编辑文件,如果我使用箭头键移动光标,或者开始删除,然后再次键入,光标会跳转一下,如果我保存文件并重新打开它,很明显事实上,光标,无缘无故地在一条线上跳跃。

我最终得到的结论是“这是一个新文本。”当我输入(对于光标疯狂的编辑器)“这是一行文字。”

在编辑配置文件时,这是一个很大的问题,因为我经常需要编辑一行,保存并关闭,然后重新打开以确保该行是正确的...然后编辑另一行......它是变得很烦人。

我发现Linode Lish Shell Vim和Nano渲染问题:线条没有出现/光标位置错误,但我不知道知道这是否有多大关系,因为那特别指的是lish。

最佳答案

[更新:从Mac OS X Mountain Lion 10.8开始,终端支持Backtab转义序列,消除了此问题。]

这些服务器上nano的版本(s?)有时会在将光标向左移动一个字符时发送Backtab(ESC [Z]序列,但终端不支持此序列,因此nano认为光标移动时它没有,它对光标当前位置的想法与终端不同步。

由于我无法理解的原因,nano向左移动时发送Backtab,光标是制表位右侧的一个字符。类似地,IIRC,当向右移动时它发送一个Tab(Control-I),并且光标是制表位左侧的一个字符。我不知道为什么它会在制表位周围这样做,而不是总是使用相同的字符序列左/右移动。 Mac OS X Lion 10.7附带的nano版本没有这样做。

Nano仅在terminfo表示支持cbt功能时执行此操作。终端的默认terminfo是xterm-256color,它声明了此功能并将其映射到Backtab序列。解决方法是将TERM环境变量设置为不声明此功能的环境变量。您可以在调用ssh之前在本地计算机上执行此操作,也可以在远程主机上的shell启动文件中执行此操作。将其设置为xterm-color会在紧要关头做,但不建议这样做,因为它会禁用其他重要行为(例如256色,BCE,备用屏幕内容保留)。 (更重要的方法是在远程主机上自定义xterm-256color(或xterm)terminfo文件以删除cbt。)

建议自定义远程主机(以这种或那种方式),因此自定义不适用于本地或其他远程主机,但最简单的解决方法是将终端首选项设置更改为使用xterm-color

  

终端>偏好>设置> [个人资料]>高级>将终端声明为:

我建议复制现有的设置配置文件,对其进行自定义,并在连接到这些远程主机时仅使用它。

作者:,Chris Page

相关问答

添加新评论