微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

……这让我疯了.

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

基本上:

$ssh username@example.com

[remote-host] $nano somefile.txt

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

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

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

我发现Linode Lish Shell Vim and Nano rendering troubles: lines not appearing / cursor positions wrong,但我不知道这是否有多大关系,因为那是特别指的是lish.

[更新:自Mac OS X Mountain Lion 10.8起,终端支持Backtab转义序列,消除了此问题.]

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

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

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

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

Terminal > Preferences > Settings > [profile] > Advanced > Declare terminal as:

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

原文地址:https://www.jb51.cc/vim/386061.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐