Frage Verwenden Sie Strg-Pfeiltasten mit PuTTY und Bildschirm


Ich suchte und konnte nirgendwo eine Lösung finden. Ich benutze PuTTY von Windows, um eine Verbindung zu verschiedenen Servern herzustellen, auf denen ich bash und screen ausführe. Es scheint, bash funktioniert gut mit Strg-Pfeiltasten, um Word-to-Word auf der Kommandozeile zu springen, aber innerhalb des Bildschirms funktioniert es nicht. Nicht im Bildschirm sendet ctrl-left "^ [OC und ctrl-right is ^ ^ [OD"]. Innerhalb von Screen I erhält man stattdessen "^ [[C] und" ^ [[D], was die Codes für nur zu sein scheint Die linken / rechten Pfeiltasten Gibt es eine Möglichkeit, Bildschirm zu erkennen, Strg-Pfeiltasten bei der Verwendung von PuTTY? (FYI, ich erinnere mich nicht, dieses Problem bei der Verwendung von Gnu-Terminal in Linux anstelle von PuTTY).

UPDATE: Es scheint, PuTTY ist das Problem, da es nicht die Escape-Codes sendet, die dafür notwendig sind, um zu funktionieren. Ich gebe jetzt auf und benutze Cygwin + Minze.


32
2018-04-07 14:36


Ursprung


Wow, Minty ist großartig - seit einiger Zeit suchen Sie nach einem anständigen Terminal-Emulator für Windows. Dank dafür. - blueyed
Ich bekomme jedoch ^[[1;5A für Ctrl-Up, das laut code.google.com/p/mintty/wiki/Keycodes#Cursor_keys - blueyed


Antworten:


Bearbeiten:

Folgendes hat für mich funktioniert:

  • Meine ~/.bashrc Sätze TERM=xterm (Meine ist zufällig TERM=xterm-256colors) überschreiben Bildschirm TERM=screen
  • ich setze PuTTY> Terminal> Funktionen> Modus für Anwendungs-Cursortasten deaktivieren zu überprüft
  • ich betrete tput smkx an der Bash-Eingabeaufforderung
  • Jetzt springen Strg-Pfeiltasten wortweise

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

Ich denke, es gibt eine Möglichkeit, dies etwas besser zu machen, 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 mit einigen   zusätzliche Funktionen hinzugefügt. Der VT100-Emulator ist fest codiert, kein anderer   Terminaltypen können emuliert werden.

Und VT100s haben keine Strg-Pfeil-Tastencodes.


14
2018-04-07 21:14



set -o vi (Wenn Sie diese Art von Person sind :) - MikeyB
@MikeyB: Wie hilft das (es übrigens nicht)? - Dennis Williamson
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
@Dennis: Nun, es gibt dir einen anderen Weg, mit dem Vorwärts / Rückwärts umzugehen, wenn du die Typoe der Person bist, die ihren Kopf darum wickeln kann. set -o vi Schaltet den vi-Befehlszeilenmodus ein, damit Sie treffen können ESC und benutze die vi Tasten um dich zu bewegen und deine Kommandozeile zu bearbeiten. - MikeyB
@ Kbosak: Ich bin auch nicht glücklich mit dieser Antwort. Das ist der Grund warum ich behoben. :-) - Dennis Williamson


Wie in. Erwähnt HierDu kannst ~ / .inputrc eingeben:

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

Es hat für mich funktioniert.


17
2018-04-19 12:29



Dies funktionierte für mich und war viel einfacher als die akzeptierte Antwort. - Petrus Theron
Das hat auch für mich funktioniert, während die angenommene Antwort nicht funktioniert hat - Schiavini
+1 Prägnante Antwort, die einfach funktioniert. - Adam Caviness
Stellen Sie sicher, zu haben $include /etc/inputrc an der Spitze deines .inputrc Datei, sonst liest readline die systemweiten Bindings nicht und Schlüssel wie Home und End brechen. - James
@ James: Danke! Ich hatte irgendwie eine ~/.inputrc mit nur einer kommentierten Zeile, und es war alles kaputt. Durch einfaches Löschen wurde das Problem behoben. Das nervt mich seit Jahren :) - naught101


Ich bin etwas überrascht, dass du Putty dazu gebracht hast, Strg-Pfeiltasten richtig zu senden, auch ohne den Bildschirm zu benutzen, denn das hat bei mir nie funktioniert. Meine Lösung war, auf alt-arrowkeys (Meta-Pfeiltasten) zu setzen, von denen ich glaube, dass sie in bash die gleiche Vorwärts- / Rückwärtswort-Bindung haben, obwohl ich ein paar zusätzliche Befehle geben musste, damit zsh sie erkennt:

Bindkey "^ [^ [[C" Vorwärts-Wort # Meta-RightArrow
Bindkey "^ [^ [[D] Rückwärtswort # Meta-LeftArrow

4
2018-04-07 22:11



Ich kann diesen Weg auch gehen. Die linke Strg-Taste ist so viel einfacher zu treffen als die Meta- oder Alt-Tasten (zumindest auf meiner Tastatur). Naja. - kbosak


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

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

Putty invertiert die Richtung der Cursor-Taste Modus auf Strg, die ein bisschen ist   schwer für tmux richtig zu erkennen. Um Strg-Tasten richtig zu bekommen, ändern Sie die   terminfo Einstellungen so kUP5 (Strg-Up etc) sind die angepassten Versionen und   Deaktivieren Sie smkx / rmkx, damit tmux den Modus nicht ändert. Zum Beispiel mit   Diese Zeile in .tmux.conf (vorausgesetzt, Sie haben TERM auf xterm gesetzt):

Legen Sie -g terminal-overrides fest   "xterm *: kLFT5 = \ eOD: kRIT5 = \ eOC: kUP5 = \ eOA: kDN5 = \ eOB: smkx @: rmkx @"

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


4
2018-06-25 00:50





Sie sollten in die Dokumentation von terminfo, ncurses, screen und putty schauen, wenn Sie richtig debuggen / konfigurieren wollen. Auch Bash Shortcuts können mit inputrc konfiguriert werden. Schauen Sie sich die man-Seiten von bash an und suchen Sie nach inputrc.


0
2018-04-07 14:45



Ich glaube nicht, dass das Problem darin liegt. Ich habe bereits mehrere mögliche Lösungen ausprobiert, bei denen Einträge in inputrc ohne Erfolg eingefügt wurden. Es sieht so aus, als ob der falsche Code an den Bildschirm für die Strg-Pfeiltasten gesendet wird. Ich möchte auch nicht viel mehr Zeit damit verbringen, als ich bereits habe, da es nur eine kleine Unannehmlichkeit ist. - kbosak


Hast du die richtige Zeichencodierung in Putty? Wenn Sie eine Verbindung zu einem Server in UTF-8 herstellen und Ihr Putty in Standard-Zeichensatz ist, werden in Vim die Pfeiltasten geschrieben. Wenn Putty in UTF-8 ist, können Sie den Cursor bewegen. Vielleicht ist es in deinem Fall genauso ...


0
2018-04-07 16:34



Es ist überhaupt kein vi / vim-Problem und ich habe nur eine Option in PuTTY für den Zeichensatz gesehen, die nicht geholfen hat. - kbosak
Probieren Sie die verschiedenen Optionen unter Terminal-> Tastatur-> Funktionstasten und Tastatur aus. BTW, für mich funktioniert Ctrl-Arrow auch nicht in der bash, es macht dasselbe wie ohne Strg zu drücken. - Prof. Moriarty
Ja, ich habe so viele Optionen und Kombinationen von Optionen ohne Glück versucht. Zu Ihrer Information, es gibt einige Einträge, die Sie in inputrc einfügen können, um mit den Strg-Pfeiltasten in bash zu helfen, aber sie helfen nicht bei der Verwendung des Bildschirms. - kbosak


In Ihrer Putty Konfiguration unter Terminal -> Features gibt es ein paar "disable" Checkboxen. Vielleicht möchten Sie versuchen, die Anwendungs-Cursortasten oder den Tastaturmodus der Anwendung zu deaktivieren - manchmal versucht Putty, "zu schlau" zu sein und sendet Steuerzeichen, die nicht mit dem Server kompatibel sind.


0
2018-04-09 00:08