Verwenden von Strg-Pfeiltasten mit PuTTY und Bildschirm

33

Ich habe gesucht und konnte dafür nirgendwo eine Lösung finden. Ich verwende PuTTY von Windows aus, um eine Verbindung zu verschiedenen Servern herzustellen, auf denen ich bash und screen ausführe. Es scheint, als ob bash mit den Strg-Pfeiltasten funktioniert, um Wort für Wort in der Befehlszeile zu springen, aber innerhalb des Bildschirms funktioniert es nicht. Nicht auf dem Bildschirm, Strg-Links sendet "^ [OC und Strg-Rechts ist" ^ [OD ". Auf dem Bildschirm erhalte ich stattdessen" ^ [[C "und" ^ [[D ", was die Codes für nur zu sein scheint Gibt es eine Möglichkeit, auf dem Bildschirm Strg-Pfeiltasten zu erkennen, wenn PuTTY verwendet wird? (Zu Ihrer Information, ich kann mich nicht erinnern, dass dieses Problem bei der Verwendung von gnu-terminal unter Linux anstelle von PuTTY aufgetreten ist.)

UPDATE: Es scheint, dass PuTTY das Problem ist, da es nicht die Escape-Codes sendet, die dafür erforderlich sind. Ich gebe jetzt auf und benutze Cygwin + Mintty.

kbosak
quelle
Wow, Mintty ist großartig - ich habe schon seit einiger Zeit nach einem anständigen Terminal-Emulator für Windows gesucht. Dank dafür.
bläulich
Allerdings bekomme ich ^[[1;5Afür Ctrl-Up, was laut code.google.com/p/mintty/wiki/Keycodes#Cursor_keys
am

Antworten:

13

Bearbeiten:

Folgendes hat bei mir funktioniert:

  • Meine ~/.bashrcSets TERM=xterm(meine sind zufällig TERM=xterm-256colors) überschreiben die BildschirmeTERM=screen
  • Ich habe PuTTY> Terminal> Funktionen> Cursortastenmodus der Anwendung deaktivieren auf aktiviert gesetzt
  • Ich betrete tput smkxdie Bash-Eingabeaufforderung
  • Jetzt springen Strg-Pfeiltasten Wort für Wort

  • Zu Informationszwecken, wenn ich es tue:
    tput smkx | hexdump -c
    Ich bekomme
    0000000 033 [ ? 1 h 033 =
    und
    tput rmkx | hexdump -c
    gebe es mir
    0000000 033 [ ? 1 l 033 >

Ich denke, es gibt eine Möglichkeit, dies in etwas Besseres umzuwandeln, aber es ist das, was ich bisher habe und es scheint zu funktionieren.

Ursprüngliche Antwort:

Von info screen:

Jedes Fenster in einer Bildschirmsitzung emuliert ein VT100-Terminal, dem einige zusätzliche Funktionen hinzugefügt wurden. Der VT100-Emulator ist fest codiert, andere Terminaltypen können nicht emuliert werden.

Und VT100s haben keine Strg-Pfeiltastencodes.

Bis auf weiteres angehalten.
quelle
set -o vi(Wenn Sie diese Art von Person sind :)
MikeyB
1
@MikeyB: Wie hilft das (übrigens nicht)?
Bis auf weiteres angehalten.
Vielen Dank. Nicht die Antwort, auf die ich gehofft hatte, aber jetzt kann ich weitermachen und mit dieser Einschränkung leben oder eine andere Schlüsselbindung verwenden.
kbosak
1
@Dennis: Nun, es gibt Ihnen eine andere Möglichkeit, mit Vorwärts- und Rückwärtsbewegungen umzugehen, wenn Sie der Typ einer Person sind, die ihren Kopf darum wickeln kann. set -o viAktiviert den vi-Befehlszeilenmodus, sodass Sie ESCdie vi-Tasten drücken und verwenden können, um sich in der Befehlszeile zu bewegen und sie zu bearbeiten.
MikeyB
1
@ kbosak: Auch mit dieser Antwort bin ich nicht zufrieden. Deshalb habe ich es behoben . :-)
Bis auf weiteres angehalten.
23

Wie hier erwähnt , können Sie ~ / .inputrc eingeben:

"\eOD": backward-word
"\eOC": forward-word

Es hat bei mir funktioniert.

Fayer Michael
quelle
5
Dies funktionierte für mich und war weitaus einfacher als die akzeptierte Antwort.
Petrus Theron
Dies funktionierte auch für mich, während die akzeptierte Antwort nicht
Schiavini
+1 Kurze Antwort, die einfach funktioniert.
Adam Caviness
3
Stellen Sie sicher, dass $include /etc/inputrcder Anfang Ihrer .inputrcDatei steht, da sonst die systemweiten Bindungen nicht von readline gelesen werden und Schlüssel wie Home und End beschädigt werden.
James
1
Dies sollte die akzeptierte Antwort sein!
Shailen
4

Ich bin etwas überrascht, dass Sie Putty dazu gebracht haben, Strg-Pfeiltasten auch ohne Bildschirm richtig zu senden, da das bei mir nie funktioniert hat. Meine Lösung bestand darin, zur Verwendung von Alt-Pfeiltasten (Meta-Pfeiltasten) zu wechseln, von denen ich glaube, dass sie standardmäßig die gleiche Vorwärts- / Rückwärtswortbindung in Bash haben, obwohl ich ein paar zusätzliche Befehle für zsh ausgeben musste, um sie zu erkennen:

bindkey "^ [^ [[C" forward-word # Meta-RightArrow
bindkey "^ [^ [[D" Rückwärtswort # Meta-LeftArrow
Zed
quelle
Ich kann diesen Weg auch gehen. Die linke Strg-Taste ist so viel einfacher zu drücken als die Meta- oder Alt-Tasten (zumindest auf meiner Tastatur). Naja.
kbosak
4

Falls andere diese alte Frage wie ich finden, eine neuere Lösung:

Strg und Pfeiltasten funktionieren nicht in Kitt! Was mache ich?

putty kehrt die Richtung des Cursortastenmodus auf ctrl um, was für tmux etwas schwierig zu erkennen ist. Um die Strg-Tasten richtig einzustellen, ändern Sie die Terminfo-Einstellungen so, dass kUP5 (Ctrl-Up usw.) die angepassten Versionen sind, und deaktivieren Sie smkx / rmkx, damit tmux den Modus nicht ändert. Zum Beispiel mit dieser Zeile in .tmux.conf (vorausgesetzt, Sie haben TERM auf xterm gesetzt):

setze -g Terminal-Overrides

Beachten Sie, dass dies nur in tmux 1.2 und höher funktioniert.

http://stuff.mit.edu/afs/athena/project/bsd/src/tmux-1.3/FAQ

Collin Grady
quelle
0

Sie sollten in die Dokumentation von terminfo, ncurses, screen und putty schauen, wenn Sie richtig debuggen / konfigurieren möchten. Auch Bash-Verknüpfungen können mit inputrc konfiguriert werden. Schauen Sie in die Manpages von bash und suchen Sie nach inputrc.

Mircea Vutcovici
quelle
Ich glaube nicht, dass das Problem das ist, was in inputrc steht. Ich habe bereits mehrere mögliche Lösungen ausprobiert, bei denen Einträge in inputrc ohne Erfolg eingegeben wurden. Auch hier scheint es, dass der falsche Code für Strg-Pfeiltasten auf dem Bildschirm gesendet wird. Ich möchte auch nicht viel mehr Zeit damit verbringen, als ich es bereits habe, da es wirklich nur eine kleine Unannehmlichkeit ist.
Kbosak
0

Haben Sie die richtige Zeichenkodierung in Putty? Wenn Sie in UTF-8 eine Verbindung zu einem Server herstellen und sich Ihr Kitt im Standard-Zeichensatz befindet, werden in vim die Pfeiltasten geschrieben. Wenn sich Putty in UTF-8 befindet, können Sie den Cursor bewegen. Vielleicht ist es bei Ihnen auch so ...

Dom
quelle
Es ist überhaupt kein vi / vim-Problem und ich habe in PuTTY nur eine Option für den Zeichensatz gesehen, die nicht geholfen hat.
kbosak
Probieren Sie die verschiedenen Optionen unter Terminal-> Tastatur-> Funktionstasten und Tastatur aus. Übrigens, bei mir funktioniert Strg-Pfeil auch nicht in Bash, es funktioniert genauso wie ohne Strg.
Prof. Moriarty
Ja, ich habe so viele Optionen und Kombinationen ausprobiert, ohne Erfolg. Zu Ihrer Information, es gibt einige Einträge, die Sie in inputrc eingeben können, um mit den Strg-Pfeiltasten in bash zu helfen, aber sie helfen nicht, wenn Sie screen verwenden.
kbosak
0

In Ihrer Kittkonfiguration unter Terminal -> Funktionen gibt es einige Kontrollkästchen zum Deaktivieren. Möglicherweise möchten Sie versuchen, die Anwendungscursortasten oder den Anwendungstastenmodus zu deaktivieren. Manchmal versucht Putty, "zu intelligent" zu sein, und sendet Steuerzeichen, die nicht mit dem Server kompatibel sind.

tylerl
quelle
0

Ich verwende das Terminal> Tastatur> Funktionstasten> Xterm R6. Das hilft, wenn die Funktionstasten für die Top-Funktion (F4-Suche usw.) wie erwartet funktionieren.

Was ich herausgefunden habe ist, dass anstatt STRG + Pfeil, ALT + Pfeil stattdessen Wörter springt.

Dan
quelle