web-dev-qa-db-ja.com

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

...そしてそれは私を狂気にさせている。

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

基本的に:

$ ssh [email protected]

[remote-Host] $ nano somefile.txt

ファイルの編集を開始したら、矢印キーを使用してカーソルを移動するか、削除を開始してからもう一度入力すると、カーソルが少しジャンプし、ファイルを保存して再度開くと、カーソルwas、実際、明確な理由なしに、行のあちこちを飛び越えます。

「これはneofテキストです」のようなものを受け取ることになります。 (カーソルが狂ったエディタに)「これはテキスト行です」と入力したとき。

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

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

19
geerlingguy

[更新: Mac OS X Mountain Lion 10.8以降、ターミナルはBacktabエスケープシーケンスをサポートし、この問題を解消します。]

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

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

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

リモートホストをカスタマイズする(何らかの方法で)ことをお勧めします。したがって、カスタマイズはローカルまたは他のリモートホストに適用されませんが、最も簡単な回避策は、xterm-colorではなくxterm-256colorを使用するようにターミナル設定を変更することです。

「ターミナル」>「設定」>「設定」>「プロファイル」>「詳細」>「ターミナルを次のように宣言する」

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

16
Chris Page

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

export TERM=xterm-color

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

8
dbenton

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

2
Tooluka

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

#rebinddeleteを設定

#rebindkeypadを設定

1
cleartext

CentOSがゲストOSとして実行されているOSX 10.7.4

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

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

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

1
Jarrod

ありそうな問題は、はい、ローカルマシンとサーバーの両方がnanoを備えたUNIXシステム上にありますが、これらのnanoバージョンは異なる場合があります。

export TERM=xterm-color
0
boulder_ruby