リモートサーバー上のvim / nanoのSSH文字化け


18

...そしてそれは私を狂気に駆り立てています。

基本的に(これは過去2、3か月にわたって発生しています)、いくつかの異なるCentOSサーバー(1つのLinode、別のVPS、およびシェルアクセスを持つ共有ホスト)にログインし、5.5、5.7、および6を実行していますターミナルを使用してOS X Lionを実行しているMac。

基本的に:

$ ssh username@example.com

[remote-host] $ nano somefile.txt

ファイルの編集を開始したら、矢印キーを使用してカーソルの周りを移動するか、削除を開始してからもう一度入力すると、カーソルが少し飛び回ります。ファイルを保存して再度開くと、カーソル、実際には、明確な理由なしに一列に飛び回っています。

「これはneofのテキストです」などの結果になります。(カーソルが狂ったエディタに)「これはテキスト行です」と入力したとき。

構成ファイルの編集に関しては大きな問題です。1行を編集し、保存して閉じ、その行が正しいことを確認するために再度開く必要があることが多いためです...そして別の行を編集するため... 。

Linode Lish Shell VimとNanoのレンダリングの問題を発見しました:行が表示されない/カーソル位置が間違っていますが、それが特にlishを参照しているので、それが多く関連しているのかわかりません。


1
@geerlingguyさん、この質問に対する答えを数年前に投稿しました。あなたの名前は私にとっては何の意味もありませんでしたが、今は定期的にあなたの作品を使用しています。皆さんのすべての貢献に感謝します!
-dbenton

1
@dbenton-私はあなたを助けます、あなたは私を助けます、私たちは幸せなコミュニティです:)
geerlingguy

回答:


14

[ 更新: Mac OS X Mountain Lion 10.8の時点で、TerminalはBacktabエスケープシーケンスをサポートし、この問題を排除しています。]

それらのサーバー上のnanoのバージョンは、カーソルを1文字左に移動するときにバックタブ(ESC [Z)シーケンスを送信することがありますが、ターミナルはこのシーケンスをサポートしないため、nanoはカーソルが移動していないときにカーソルが移動したと見なしますtおよびカーソルの現在位置に関するその考えは、端末と同期していません。

私が推測できない理由のために、nanoは左に移動するときにBacktabを送信し、カーソルはタブストップの1文字右にあります。同様に、IIRCは、右に移動するとTab(Control-I)を送信し、カーソルはタブストップの左側の1文字になります。同じ文字シーケンスを使用して常に左/右に移動するのではなく、タブストップの周りでこれを行う理由はわかりません。Mac OS X Lion 10.7に同梱されているnanoのバージョンはこれを行いません。

Nanoは、cbt機能がサポートされているとterminfoが言った場合にのみこれを行います。Terminalのデフォルトのterminfo xterm-256colorはで、この機能を宣言し、Backtabシーケンスにマップします。回避策は、TERM環境変数を、この機能を宣言しないものに設定することです。これは、呼び出す前のローカルマシンsshまたはリモートホスト上のシェルスタートアップファイルで実行できます。これを設定するとxterm-color、ピンチで実行されますが、他の重要な動作(256色、BCE、代替画面コンテンツの保存など)が無効になるため、お勧めできません。(より重いアプローチは、リモートホスト上のxterm-256color(またはxterm)terminfoファイルをカスタマイズして削除することcbtです。)

リモートホストのカスタマイズ(何らかの方法)が推奨されるため、カスタマイズはローカルまたは他のリモートホストに適用されませんが、最も簡単な回避策はxterm-colorxterm-256color次の代わりに使用するターミナル設定を変更することです:

[ターミナル]> [設定]> [設定]> [プロファイル]> [詳細]> [ターミナルを次のように宣言]

既存の設定プロファイルを複製し、カスタマイズして、それらのリモートホストに接続するときにのみ使用することをお勧めします。


xterm-colorの設定は確実に機能します-リモートホスト上のterminfoファイルをカスタマイズする方法について詳しく説明してください。リンクはありますが、私はおそらくこの記事に
時々戻っ

1
@geerlingguy 既存のterminfo定義の変更。ソースファイルのcbt=\E[Zエントリを削除し.tiます。
TachyonVortex

これは助けになりました。xterm-256colorからxtermにオプションを設定すると、以前のように選択、コピーなどができるようになりました。(このオプションをどのように、または誰が変更したかはわかりません)。ありがとう!
スペースバイカー

8

私はこれと同じ問題を抱えていました。他のソリューションの中でも特に、リモートサーバーの環境変数を推奨するこのスレッドを見つけました。

export TERM=xterm-color

これを〜/ .bash_profileに追加すると、問題が解決しました。このソリューションはシンプルで、特定のホスト上の特定のユーザーにのみ影響を与えるという利点があります。


2

MobaXTermプログラムでも同じ問題が発生しました。問題の原因は、PuTTYを使用するときにNanoでテンキーを有効にするために使用した-Kキーでした。MobaXTermでわかったように、-Kは不要で(numpadはデフォルトで機能します)、矢印キーがないと正しく機能し、ランダムにゴミを挿入しません。


1

CentOSをゲストOSとして実行しているOSX 10.7.4

OSX端末の設定、設定、詳細設定内

Declare terminal as:xterm-color
Strict VT-100 keypad behaviour - TICKED!

これ以上の問題はありません:)


「VT-100キーパッドの動作」設定は、このQ&Aとはまったく関係がなく、結果に影響を与えないことに注意してください。
クリスページ

1

MobaXtermのユーザー向け。-Kを使用していないにもかかわらず、まだ問題が発生している場合。/ etc / nanorcファイルで次の行がコメント化されていることを確認してください。

#rebinddeleteを設定

#rebindkeypadを設定


0

可能性の高い問題は、はい、ローカルマシンとサーバーの両方が、nanoを搭載したUNIXシステム上にありますが、それらのnanoバージョンは異なる可能性があることです。

export TERM=xterm-color

-1

あなたが得るものが「これはneofテキストです」であり、あなたがタイプしたものが「これはテキストの行です」(私はあなたの報告が正しいと仮定しなければなりません)なら、 ? 林檎?)。nanoはcontrol + keysを使用して「ジャンプ」し、入力した文字数より少ないため、a)文字が消えるb)a)b)になることを推論するものがないことから現れる制御シーケンス

また、いくつかの不快なホットキー/マクロ/ whatnotプログラムがあるかもしれません。これはサーバーフォールトではなくスーパーユーザーに属していると思われますが、誰かが現実的なSSHにバインドされた答えを持っている可能性があります。


単純に入力しているときよりも、矢印キーを使用して行を前後に移動するときに頻繁に発生します。しかし、それはかなりランダムに見えます。クリスの提案をすぐに試して、それが機能するかどうかを確認しますが、答えてくれてありがとう!
geerlingguy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.