…这让我疯狂。
基本上(这在过去几个月里已经发生了),我login了几个运行5.5,5.7和6的CentOS服务器(一个Linode,另一个VPS,以及一个我可以访问shell的共享主机)运行OS X Lion的Mac,使用terminal。
基本上:
$ ssh [email protected] [remote-host] $ nano somefile.txt
一旦我开始编辑文件,如果我使用箭头键移动光标,或者开始删除,然后再次input,光标跳转一下,如果我保存文件并重新打开它,很明显光标是事实上,没有明显的原因,跳到一个地方。
我最终得到像“这是一个低本文”的东西。 当我input(对光标疯狂的编辑器)“这是一个文本行”。
编辑configuration文件是一个大问题,因为我经常需要编辑一行,保存并closures,然后重新打开,以确保行是正确的…然后编辑另一行…它变得非常烦人。
我find了Linode Lish Shell Vim和Nano渲染的麻烦:线条不显示/光标位置错误 ,但我不知道这是否涉及太多,因为这是专指利什。
[ 更新:从Mac OS X Mountain Lion 10.8开始,terminal支持Backtab转义序列,消除了这个问题。]
nano在这些服务器上的版本(s?)有时在将光标向左移动一个字符时会发送一个Backtab(ESC [Z)序列,但是Terminal不支持这个序列,所以nano认为当光标没有移动时, t和它对光标当前位置的想法与terminal不同步。
由于我无法理解的原因,当nano移动到左边并且光标是制表位右边的一个字符时,nano发送Backtab。 同样,IIRC在向右移动时发送一个Tab(Control-I),光标位于制表位左侧的一个字符处。 我不知道为什么它使用相同的字符序列,而不是总是左右移动。 随Mac OS X Lion 10.7发布的纳米版本不这样做。
Nano只在terminfo表示支持cbtfunction时才这样做。 terminal的默认terminfo是xterm-256color ,它声明了这个function并将其映射到Backtab序列。 解决方法是将TERM环境variables设置为不声明此function的东西。 您可以在调用ssh之前在本地计算机上执行此操作,也可以在远程主机上的shell启动文件中执行此操作。 将它设置为xterm-color将尽pipe不推荐,但会禁用其他重要的行为(例如256色,BCE,备用屏幕内容保存)。 (更重要的方法是定制远程主机上的xterm-256color (或xterm )terminfo文件以删除cbt 。)
build议自定义远程主机(这种或那种方式),所以自定义不适用于本地或其他远程主机,但最简单的解决方法是将terminal优先设置更改为使用xterm-color而不是xterm-256color :
terminal>首选项>设置> [configuration文件]>高级>将terminal声明为:
我build议复制现有的设置configuration文件,对其进行自定义,并且只有在连接到这些远程主机时才使用它。
我有这个相同的问题。 我发现这个线程推荐了其他解决scheme,在远程服务器上的一个环境variables:
export TERM=xterm-color
添加到〜/ .bash_profile解决了我的问题。 这个解决scheme很简单,而且只会影响特定主机上的特定用户。
我在MobaXTerm程序中遇到同样的问题。 问题的原因是使用PuTTY时,我用来在Nano中启用数字键盘的-K键。 正如我在MobaXTerm中发现的-K不需要(数字键盘默认工作),没有它箭头键正常工作,不会随机插入垃圾。
CentOS作为客户操作系统运行的OSX 10.7.4
在OSXterminal首选项,设置,高级
Declare terminal as:xterm-color Strict VT-100 keypad behaviour - TICKED!
没有更多的问题:)
对于MobaXterm的用户。 如果您没有使用-K并且仍然遇到问题。 确保在/ etc / nanorc文件中注释了以下行。
#设置rebinddelete
#设置rebindkeypad
可能的问题是,是的,你的本地机器和你的服务器都在具有nano的unix系统上,但是这些nano版本可能是不同的。
export TERM=xterm-color
如果你得到的是“这是一个新文本”,你input的是“这是一行文本”(我必须假定你的报告是正确的),那么你有一个片状的“控制”键,不pipe它在Mac上? 苹果?)。 因为nano使用control +键来“跳转”,而且你input的字符less于input的字符,所以我们有a)消失的字符b)控制序列从无到有的推演出a)变成b)是合乎逻辑的。
你也可能有一些令人讨厌的热键/macros/什么程序。 我怀疑这属于超级用户,而不是serverfault,但我会举行flagging,也许有人有一个现实的,SSH绑定的答案。