Bash vs. Gnu-Bildschirm: Ersetzen Sie Strg-A durch Strg-Umschalt-A


44

Ich bin ein neuer Benutzer von GNU Screen. Ich benutze Bash schon sehr lange und möchte GNU Screen ausprobieren.

Wie Sie wissen, verwendet GNU Screen 'Ca' (Strg-A) als Befehlszeichen. Das Problem ist, dass dies die Zeilenbearbeitungsfunktion in Bash (und GNU Readline) beeinträchtigt, da Control-A in Bash an den Anfang der Zeile verschoben wird. "

Ich weiß, dass ich das Befehlszeichen auf eine andere Tastenfolge wie "^ Q" oder "` `" (Backtick) setzen kann, aber ich habe Probleme, eine andere Tastenfolge zu finden, die nicht bereits verwendet wird (^ Q wird vom Terminal verwendet) , backtick wird beim Schreiben von Shell-Skripten verwendet. Es scheint, dass das Befehlszeichen nur ein oder zwei Zeichen lang sein darf. Kann ich das GNU Screen-Steuerzeichen auf "Control-Shift-A" setzen?

(Ich kann noch nicht mehr als einen Hyperlink verwenden, daher kann ich keinen Link zur Bash-Dokumentation erstellen.)


5
Um bei der Verwendung screenauf anderen Systemen nicht desorientiert zu werden, sollten Sie sich am besten an die Standard-Tastenkombinationen halten oder diese zuerst erlernen. ^A aStandardmäßig wird die übliche ^ATastenkombination gesendet. Es ist etwas unpraktisch, wenn Sie diese Kombination häufig verwenden. Normalerweise benutze ich HOMEstattdessen den Schlüssel. Aber das funktioniert dann auch nicht immer.
Intuited

Keine Liebe hier zum Ctrl-Raum. Funktioniert super.
Wildcard

Antworten:


18

Das Problem bei Control- Shift- Aist, dass die meisten Terminal-Emulationsprogramme keinen anderen Code senden als den von Control- A, sodass der Bildschirm den Unterschied nicht erkennen kann.

Möglicherweise können Sie Cq verwenden stty -ixon, um die "Software-Flusskontrolle" auf dem tty zu deaktivieren. Normalerweise mache ich das, damit ich mit Cs in der Befehlszeile suchen kann.

Sie könnten C- ^ in Betracht ziehen, da es normalerweise ungebunden zu sein scheint. Es ist Control- Shift- 6auf US-Tastaturlayouts, aber es kann schwierig sein, auf anderen Layouts zu tippen.

Die meisten Leute benutzen niemals das tty-Steuerzeichen C- \, um SIGQUIT zu senden. Deaktivieren Sie dazu die tty-Funktion mit stty quit undefund binden Sie sie als Präfixschlüssel. Dies ist jedoch ein bisschen riskant, da Sie, wenn Sie C- \ an einer Stelle drücken, an der die Beenden-Taste nicht mit stty deaktiviert wurde , möglicherweise den Vordergrundprozess beenden , anstatt den Bildschirm zu aktivieren .

Ich bin vor einiger Zeit zu tmux gewechselt . Sein Standardwert ist Cb , weil es unter entwickelt Bildschirm und nicht störte Bildschirm ist Standard . Ich habe festgestellt, dass Cb für mich ziemlich gut funktioniert (ich benutze normalerweise die Pfeiltasten für die Bewegung einzelner Zeichen in der Shell-Befehlszeile - obwohl ich Mb und Mf benutze, um mich mit Worten zu bewegen).

Übrigens verwendet der Autor von tmux Ca in seinen primären Sitzungen und gibt Ca immer zweimal ein (ob in einer tmux- Sitzung oder nicht). Wenn Sie bereit sind, diese Gewohnheit zu übernehmen, scheint dies ein anständiger Kompromiss zu sein, da der zweite Ca in den meisten Emacs-ähnlichen Bearbeitungszusammenhängen ein No-Op sein sollte. Es würde nicht so funktionieren, wenn Sie häufig Programme / Kontexte außerhalb des Bildschirms verwenden, bei denen das zweite Ca kein No-Op wäre.

Standardmäßig ist Ca Ca an den anderen Befehl (zum zuletzt aktiven Bildschirm wechseln) im Bildschirm gebunden . Damit Ca Ca ein tatsächliches Ca sendet und Ca o die Fenster wechselt, geben Sie Folgendes in Ihr Feld ein .screenrc:

escape ^A^A
bind o other

2
Das hört sich gut an, dann wurde mir klar, dass beim zweimaligen Tippen von Ca in GNU Screen das zuvor angezeigte Fenster angezeigt wird. Vielleicht kann ich "Ca Ca" auf etwas anderes abbilden, obwohl ich mir nicht sicher bin, wie ich das machen soll. manual / screen.html # Other-Window
Stefan Lasiewski

1
@ Stefan Lasiewski: Hoppla, ich habe vergessen, dass Ca Ca nicht standardmäßig Ca sendet. Siehe den Zusatz am Ende der Antwort für eine Konfiguration, die bewirkt, dass Ca Ca Ca sendet und Ca o zum vorherigen Fenster wechselt.
Chris Johnsen

Funktioniert super! Ca Ca sendet ein tatsächliches Ca an die darunter liegende Hülle und Ca o 'wechselt zum' anderen 'Fenster. Um 'Ca' an Bash zu senden, drücke zweimal 'Ca'. Dies sollte ein No-Op außerhalb des Bildschirms sein und sollte keine Probleme verursachen.
Stefan Lasiewski

41

Keine Notwendigkeit für die Problemumgehung.
Verwenden Sie, um bei Verwendung von screen in bash an den Zeilenanfang zu springen

Control- A(loslassen und dann)A


Im Allgemeinen wird bei Konflikten zwischen Bildschirmsteuerzeichen und einer Bash-Verknüpfung die erste Bash-Verknüpfung durch Folgendes Controlersetzt Control:A

Ebenso für andere Verknüpfungen zur Zeilenbearbeitung.


danke, das habe ich jetzt nicht getan, obwohl es so einfach ist. in der Tat muss nichts neu konfiguriert werden. Ich mag deine Antwort am liebsten.
harald

+1 ty - das ist bei weitem die beste Option. Komischerweise habe ich beim Ausprobieren versehentlich Ca Ca getroffen und eine weitere großartige Combo gefunden.
kfmfe04

3

Ich benutze C- \ für Screen und kann es nicht genug empfehlen. Sie können beim Unfall eine beliebige andere Tastendefinition treffen, jedoch nicht generell C- \. Das ist es, was ich daran mag.


3

Ich benutze das .screenrc

escape ^bb

Beispiel: Zum Trennen geben Sie ein ctrl-b d


0

Ich benutze ctrl-_ (was auch mit ctrl + 7 und normalerweise mit ctrl + / möglich ist) mit screen / tmux.


0

Ich benutze die meiste Zeit Strg-Z, aber auch Strg-X für einige. Ich benutze den 'Stop'-Interrupt nicht so oft, aber wenn es gebraucht wird, kann ich ^ zz eingeben. Dadurch kann ich auch sekundäre Bildschirmsitzungen auf Remoteservern starten, die die Standard-Strg-A-Taste verwenden. Und wenn ich eine dritte Sitzung starte (auf einem dritten Server), kann ich Strg-x verwenden. Strg-x ist die Sperrbildschirmfunktion, die in vielen Umgebungen nicht so üblich ist (da der Bildschirm häufig in einem Terminalemulator ausgeführt wird).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.