SSH-unklare Zeichen in vim / nano auf dem Remote-Server

18

... und es macht mich verrückt.

Grundsätzlich (dies geschah in den letzten paar Monaten) logge ich mich auf einigen verschiedenen CentOS-Servern ein (einem Linode, einem anderen VPS und einem gemeinsam genutzten Host, auf den ich Shell-Zugriff habe), auf denen 5.5, 5.7 und 6 ausgeführt werden Mac mit OS X Lion und Terminal.

Grundsätzlich:

$ ssh [email protected]

[remote-host] $ nano somefile.txt

Sobald ich mit dem Bearbeiten der Datei beginne, den Cursor mit den Pfeiltasten bewege oder mit dem Löschen beginne und dann erneut eingebe, springt der Cursor ein wenig herum. Wenn ich die Datei speichere und erneut öffne, ist es offensichtlich, dass der Cursor war In der Tat, ohne ersichtlichen Grund überall auf einer Linie herumzuspringen.

Am Ende bekomme ich Dinge wie "Dies ist ein neuer Text." Als ich eingetippt hatte (zum Cursor-verrückten Editor) "Dies ist eine Textzeile."

Es ist ein großes Problem, wenn ich Konfigurationsdateien bearbeite, da ich oft eine Zeile bearbeiten, speichern und schließen und dann wieder öffnen muss, um sicherzustellen, dass diese Zeile richtig ist. Dann bearbeite ich eine andere Zeile. Und es wird ziemlich nervig .

Ich fand Probleme beim Rendern von Linode Lish Shell Vim und Nano: Linien werden nicht angezeigt / Cursorpositionen sind falsch , aber ich weiß nicht, ob das viel zu tun hat, da es sich speziell um Lish handelt.

Geerlingguy
quelle
1
Hey @geerlingguy, ich habe vor Jahren eine Antwort auf diese Frage gepostet, als Ihr Name mir nichts bedeutete, aber jetzt verwende ich Ihre Arbeit regelmäßig. Vielen Dank für all Ihre Beiträge!
Dbenton
1
@ Dbenton - Ich helfe dir, du hilfst mir, wir sind eine glückliche Gemeinschaft :)
Geerlingguy

Antworten:

14

[ Update: Ab Mac OS X Mountain Lion 10.8 unterstützt Terminal die Backtab-Escape-Sequenz, wodurch dieses Problem behoben wird.]

Die Version (en?) Von nano auf diesen Servern sendet manchmal eine Backtab (ESC [Z) -Sequenz, wenn der Cursor um ein Zeichen nach links verschoben wird, das Terminal unterstützt diese Sequenz jedoch nicht. t und seine Vorstellung von der aktuellen Position des Cursors sind nicht mit dem Terminal synchron.

Aus unerfindlichen Gründen sendet nano beim Bewegen nach links ein Backtab, und der Cursor befindet sich ein Zeichen rechts von einem Tabulator. In ähnlicher Weise sendet IIRC beim Bewegen nach rechts einen Tabulator (Strg-I) und der Cursor befindet sich ein Zeichen links von einem Tabulator. Ich weiß nicht, warum dies bei Tabulatoren so ist, anstatt sich immer mit den gleichen Zeichenfolgen nach links / rechts zu bewegen. Die mit Mac OS X Lion 10.7 gelieferte Version von nano tut dies nicht.

Nano tut dies nur, wenn die Terminfo angibt, dass die cbtFunktion unterstützt wird. Die Standardeinstellung für Terminal lautet xterm-256color: Diese Funktion wird deklariert und der Backtab-Sequenz zugeordnet. Eine Problemumgehung besteht darin, die TERMUmgebungsvariable auf etwas festzulegen, das diese Funktion nicht deklariert. Sie können dies auf dem lokalen Computer vor dem Aufrufen sshoder in der Shell-Startdatei auf dem Remote-Host tun . Wenn Sie dies so xterm-coloreinstellen , wird dies zur Not empfohlen, da andere wichtige Verhaltensweisen (z. B. 256 Farben, BCE, Beibehaltung des alternativen Bildschirminhalts) deaktiviert werden. (Eine schwergewichtigere Methode besteht darin, die zu entfernende xterm-256color(oder xterm) terminfo-Datei auf dem Remote-Host anzupassen cbt.)

Das Anpassen des Remote-Hosts (auf die eine oder andere Weise) wird empfohlen, sodass die Anpassungen nicht lokal oder auf andere Remote-Hosts angewendet werden. Die einfachste Lösung besteht jedoch darin, die zu verwendende Terminal-Voreinstellung zu ändern, xterm-coloranstatt xterm-256color:

Terminal> Einstellungen> Einstellungen> [Profil]> Erweitert> Terminal deklarieren als:

Es wird empfohlen, ein vorhandenes Einstellungsprofil zu duplizieren, anzupassen und es nur zu verwenden, wenn Sie eine Verbindung zu diesen Remote-Hosts herstellen.

Chris Page
quelle
Die Einstellung von xterm-color funktioniert auf jeden Fall. Können Sie genauer erläutern, wie Sie meine terminfo-Datei auf dem Remote-Host anpassen? Ein Link würde reichen, aber ich werde wahrscheinlich ab und zu auf diesen Beitrag zurückkommen, um mich an diesen Tipp zu erinnern :)
geerlingguy
1
@geerlingguy Ändern einer vorhandenen Terminfo-Definition . Entfernen Sie den cbt=\E[ZEintrag in der .tiQuelldatei.
TachyonVortex
Dies hat mir geholfen, ich habe die Option von xterm-256color auf xterm gesetzt und jetzt kann ich auswählen, kopieren usw., wie ich es früher getan habe. (Ich weiß nicht wie oder wer diese Option geändert hat). Vielen Dank!
Spacebiker
8

Ich hatte das gleiche Problem. Ich fand diesen Thread , der unter anderem eine Umgebungsvariable auf dem Remote-Server empfahl:

export TERM=xterm-color

Das Hinzufügen zu ~ / .bash_profile löste das Problem für mich. Diese Lösung ist einfach und hat den Vorteil, dass nur ein bestimmter Benutzer auf einem bestimmten Host betroffen ist.

dbenton
quelle
2

Ich hatte das gleiche Problem im MobaXTerm-Programm. Ursache des Problems war die -K-Taste, mit der ich bei der Verwendung von PuTTY das Numpad in Nano aktiviert habe. Wie ich in MobaXTerm herausgefunden habe, wird -K nicht benötigt (NumPad funktioniert standardmäßig) und ohne es funktionieren die Pfeiltasten richtig und fügen keinen Müll nach dem Zufallsprinzip ein.

Tooluka
quelle
1

OSX 10.7.4 mit Centos als Gastbetriebssystem

In den OSX-Terminal-Einstellungen, Einstellungen, Erweitert

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

Keine weiteren Probleme :)

Jarrod
quelle
Beachten Sie, dass die Einstellung „Verhalten der VT-100-Tastatur“ in keinerlei Zusammenhang mit diesen Fragen und Antworten steht und sich nicht auf das Ergebnis auswirkt.
Chris Seite
1

Für Benutzer von MobaXterm. Wenn Sie -K nicht verwenden und das Problem weiterhin besteht. Stellen Sie sicher, dass die folgenden Zeilen in Ihrer / etc / nanorc-Datei auskommentiert sind.

# set rebinddelete

# rebindkeypad setzen

Klartext
quelle
0

Das wahrscheinliche Problem ist, dass sowohl Ihr lokaler Computer als auch Ihr Server auf Unix-Systemen mit Nano ausgeführt werden. Diese Nano-Versionen können jedoch unterschiedlich sein.

export TERM=xterm-color
boulder_ruby
quelle
-1

Wenn Sie "This is a neof text" erhalten und "This is a text line" eingeben (ich muss davon ausgehen, dass Ihr Bericht korrekt ist), dann haben Sie eine schuppige "Control" -Taste, was auch immer es auf dem Mac ist (Befehl) ? Apfel?). Weil nano Strg + Tasten zum "Herumspringen" verwendet und Sie weniger Zeichen als eingegeben haben, haben wir a) verschwundene Zeichen b) Kontrollsequenzen, die aus dem Nichts erscheinen, was darauf schließen lässt, dass a) zu b) logisch wird.

Möglicherweise haben Sie auch ein abscheuliches Hotkey- / Makro- / Whatnot-Programm. Ich vermute, dass dies zu Superuser und nicht zu Serverfault gehört, aber ich werde weiterhin darauf hinweisen, dass möglicherweise jemand eine realistische, SSH-gebundene Antwort hat.

chx
quelle
Es passiert, wenn ich mit den Pfeiltasten in einer Zeile vor und zurück gehe, häufiger als wenn ich nur tippe. Aber es scheint ziemlich zufällig zu sein. Ich werde Chris 'Vorschlag schnell ausprobieren, um zu sehen, ob er funktioniert, aber danke für die Antwort!
Geerlingguy