Was ist die am wenigsten widersprüchliche Präfix- / Escape-Sequenz für screen oder tmux?

58420
Flow

Bildschirm geht mit Ctrl+ A. tmux hingegen verwendet - wie in screen entwickelt - Ctrl+B . Beide Tastatureingaben werden jedoch auch in Editoren, Shells usw. verwendet. Wenn Sie also einen dieser Tastenanschläge wählen, werden die Benutzererfahrung und die Funktionalität dieser Tools beeinträchtigt, wenn Sie sie in tmux oder screen verwenden.

Welches Präfix steht am wenigsten im Konflikt mit den Keybindings anderer Programme und Shells?

86
"Welche Konflikte stehen am wenigsten mit anderen Programmen?" hat nichts mit meinung zu tun. iconoclast vor 8 Jahren 4
Vergessen Sie nicht, nach dem Ändern von ~ / .tmux.conf den tmux-Server neu zu starten, damit die Änderungen wirksam werden (http://superuser.com/q/188491/105108). ks1322 vor 8 Jahren 0

20 Antworten auf die Frage

46
cjay

Ich denke, ^\(aka ^|) ist das Beste, wenn es auf Ihrem Tastaturlayout bequem positioniert ist. Seine Verwendung in anderen Programmen ist ziemlich selten:

  • Senden SIGQUITan einen Prozess
  • Abbruch für oder während Loops in einer Shell, wenn ^Cabgefangen wird
  • toggle-input-method in Emacs

Ich kenne keine andere Verwendung. Achten Sie darauf, Prozesse nicht versehentlich außerhalb tmuxoder screennach dem Gewöhnen daran zu beenden. Es ist mir aber nur einmal in ein paar Jahren passiert.

~/.tmux.conf

unbind-key C-b set -g prefix 'C-\' bind-key 'C-\' send-prefix 

~/.screenrc

escape ^|^| 
Ich habe dies versucht, aber tmux beschwert sich über die Verwendung von "C- \". Kann ich dem `\` irgendwie entkommen? Jason vor 11 Jahren 0
`set -g Präfix C - \\` wurde für 1.8 benötigt Elijah Lynn vor 10 Jahren 0
Um einen anderen Benutzer wissen zu lassen, sollten Sie in der tmux-Konfiguration anstelle von C- \ `` C- \ '`schreiben. gns-ank vor 10 Jahren 1
Vergessen Sie nicht, 'tmux source-file /path/to/tmux.conf' zu beenden, wenn Sie fertig sind, um die neuen Einstellungen auszuprobieren user72923 vor 9 Jahren 1
aber dann gewöhne ich mich an diesen Befehl, und wenn ich vergessen habe, dass ich auf dem Bildschirm bin, schicke ich versehentlich SIGQUITs ... Kache vor 9 Jahren 10
"Wenn sich das Tastaturlayout in einer günstigen Position befindet", ist dies standardmäßig nicht der Fall. Bedeutet das, dass es ein beliebtes Remapping gibt, das Sie verwenden, was C- \ praktisch macht? storypixel vor 7 Jahren 2
@storypixel Ich denke, es geht eher darum, nicht anzunehmen, was die Leute verwenden. Heutzutage führen einige Leute (wie ich) benutzerdefinierte Firmware auf ihren Tastaturen aus. henrebotha vor 5 Jahren 0
"C - \" ist ein furchtbarer Präfix-Schlüssel, da durch das Erstellen von Muskelgedächtnis versehentlich "SIGQUIT" gesendet wird, wenn Tmuxs verwendet werden, die nicht auf diese Weise konfiguriert sind. Wenn wir eine Prozesssteuerungs-Tastenkombination spiegeln, ist "Cz" eine viel günstigere Option. aparkerlue vor 5 Jahren 0
43
Ned Ruggeri

Für Leute, die Backtick als Flucht in tmux verwenden möchten, sollten Sie Folgendes hinzufügen:

unbind C-b set -g prefix ` bind-key ` send-prefix 

Letzteres ist wichtig, sonst können Sie keinen Backtick für andere Zwecke eingeben :-)

Backtick scheint eine gute Idee zu sein, bis Sie etwas SQL einfügen ... Synchro vor 11 Jahren 0
@Synchro unter tmux 1.8 ist kein Problem mehr, da die Einfügezeit-Option standardmäßig aktiviert ist (auf 1ms eingestellt). Siehe hier: http://sourceforge.net/p/tmux/tmux-code/ci/5fe0576dcbf47954957007296839e43471b088f9/tree/tmux.1#l2134 sickill vor 11 Jahren 2
Ich fand diese Frage auf der Suche nach Alternativen zum Backtick, als sie anfing, Probleme zu verursachen, nachdem ich mich an die Verwendung von Backticks anstelle von $ () in Shells gewöhnt hatte. Es ist auch ein Schmerz, wenn Sie mit dem Schreiben von Markdown beginnen. Ich benutze es seit einigen Jahren, aber leider muss ich es jetzt ändern. kirelagin vor 9 Jahren 0
In .tmux.conf habe ich auch 'bind-key Ca set-option -g prefix Ca'. Wann immer ich Backticks verwenden muss, drücke ich `\` -Ctrl-a`, was mein Präfix auf `Ca` setzt. Und ich habe `bind-key Cb set-option -g prefix \` `, damit ich` CaCb` drücken kann, um zurückzugehen Boris vor 9 Jahren 2
Was ist, wenn Sie einen Preisnachlass schreiben? Wie entkommen Sie dem Präfix? OJFord vor 8 Jahren 0
Ah, du tippst doppelt darauf. Schön, vielleicht einen Versuch. OJFord vor 8 Jahren 0
Was ist, wenn jemals eine Bash geschrieben wird? `f_len = \` cat file | wc -l \ ``? dylnmc vor 8 Jahren 0
Anstelle von `\` `in bash sollten Sie versuchen, die modernere und lesbarere Alternative zu verwenden:` $ (`und`) ` iconoclast vor 8 Jahren 0
Verwenden Sie nicht so oft Backticks, dass es mir nichts ausmacht, zweimal zu tippen. Dies ist bei weitem mein Favorit. Vik vor 7 Jahren 0
Auf einer deutschen Layout-Tastatur würden Sie stattdessen das Caret `^` verwenden. Olaf Dietsche vor 5 Jahren 0
20
staticsan

Strg + A verursacht auch Probleme mit Emacs, einschließlich Bash im Emacs-Modus. Es hört sich so an, als sei dies kein Problem für Sie.

Strg + O ist die andere Option, die ich gesehen habe. Offenbar ist dies die Standardeinstellung in RatPoison (dies ist ein X Window Manager, der keine Maus benötigt). Ich habe Strg + O verwendet, wenn Sie verschachtelte Bildschirme verwenden: Strg + O für das äußere und Strg + A für die inneren. Hat gut funktioniert, aber irgendwie haben meine Kollegen Angst. :-)

Ich habe nur nachgedacht und wenn Sie vi statt Emacs verwenden, gibt es ein paar Alternativen. Strg + G wird beispielsweise nicht viel verwendet.

Für Emacs-Benutzer scheint Strg + O die beste Wahl zu sein: In emacs ist es nur "eine neue Zeile am Cursor öffnen" und in bash "eine Befehlssequenz wiederholen". Flow vor 14 Jahren 6
+1 Wenn Sie mit rechtshändigen Strg-Operationen in Ordnung sind, sieht dies nach einem guten Backup aus. Ich bin selbst ein Linker ;-) DaveParillo vor 14 Jahren 1
Ich denke, Strg + O bricht vim Mu Qiao vor 10 Jahren 8
Ich stimme @MuQiao zu. Ctrl-o wird in Vim verwendet, um zu einer älteren Cursorposition zu springen (dies entspricht in vielen IDEs der Zurück-Schaltfläche). Diese Funktion verwende ich sehr häufig beim Durchsuchen von Code in Vim. Ctrl-b ist in Vim gleichbedeutend mit PageUp. Ich verwende Ctrl-b für Vim überhaupt nicht. Für Vim-Benutzer wie mich ist Ctrl-b immer noch die bessere Wahl als Ctrl-o. Ich verwende Cj als meinen Präfixschlüssel, da Cj auch j oder j istIn Vim verwendet niemand Cj, um in Vim eine Zeile nach unten zu verschieben. Ich habe dies in meiner ~ / .tmux.conf: `set -g prefix2 Cj; Bindetaste Cj send-prefix -2` Susam Pal vor 10 Jahren 12
`Cj` steht im Konflikt mit CtrlP. Wenn Sie die Pufferliste auf und ab bewegen, werden `Ck` bzw.` Cj` verwendet blockloop vor 6 Jahren 0
12
Darren Hall

Ich verwende ein komplexes System für den Bildschirm. Mein Standard-Escape ist auf \ 140 \ 140 gesetzt, was Backtick ist. Die Strg-A kompliziert sowohl die Emacs als auch die Bearbeitung der Kommandozeile innerhalb von Zsh, und ich mag die Strg-O nicht (zwei Handoperationen für die meisten Bildschirmaktionen).

Ich binde 's' wieder auf Bildschirm 1, so dass auf der Tastatur ab 1 neue Sitzungen von links nach rechts erstellt werden. Dadurch kann ich Bildschirm 0 für das, was ich als dauerhaft oder als Referenzfenster bezeichne, reservieren. Es ist eine sehr schnelle einhändige Geste, um (Backtick) 1, (Backtick) 2, (Backtick) 3 zwischen Fenstern zu wechseln.

Das Problem bei der Verwendung von backtick in einer Unix-Umgebung besteht beim Versuch, Shell / Perl-Skriptcode auszuschneiden und einzufügen. Aus diesem Grund binde ich die Taste F11 / F12, um zwischen meinem Fluchtzeichen zu wechseln.

bindkey -d -k F1 escape ^O^O # bound to F11 bindkey -d -k F2 escape \140\140 # bound to F12 

Dadurch wird die Escape-Aktion für das Ausschneiden und Einfügen in Strg-O getauscht. Ich habe festgestellt, dass ein Doppel-Tick einfach ist und für die meisten Bildschirmoperationen ein guter Kompromiss ist.

Wenn Sie diese Antwort mit einer neueren Lösung erneut aufrufen, können Sie den Modus durch Drücken von F12 umschalten und eine Beschriftung verwenden, um den Modus anzuzeigen.

## command characters escape \140\140 # default is `  ## sets caption and escape toggle bindkey -d -k F2 process a # bound to F12  ## initial caption caption always '%{= kW}%?%F%{+b KW}%:%{= kK}%? %= %?%F%{-b .c}>>>%{-}%? | %-w%%n* %t%? @%u%?%{-}%+w '  ## registers to toggle bindkeys register a "\140:eval 'bindkey -d -k F2 process b' 'process c' 'escape \\017\\017'^M" register b "\017:eval 'bindkey -d -k F2 process a' 'process d' 'escape \\140\\140'^M"  ## registers to change captions register c "\140:caption string '%{= kW}%?%F%{+b mW}%:%{= kK}%? %= %?%F%{.c}ALT%{-}%? | %-w%%n* %t%? @%u%?%{-}%+w '^M" register d "\017:caption string '%{= kW}%?%F%{+b KW}%:%{= kK}%? %= %?%F%{.c}>>>%{-}%? | %-w%%n* %t%? @%u%?%{-}%+w '^M" 
Kreative Lösung. Ich bin beeindruckt. staticsan vor 14 Jahren 0
bind-key -n F11 set -g Präfix `bind-key -n F12 set -g Präfix Co Updates für tmux, falls andere Benutzer dies anpassen möchten. milkypostman vor 12 Jahren 0
Gibt es eine Möglichkeit, eine Art minimaler Zeitüberschreitung für prefix + other_key in tmux festzulegen, so wird beim Einfügen von Code kein Befehl ausgelöst. Wenn Sie jedoch die Taste backtick + key über die Tastatur eingeben, geschieht dies, da die Pause zwischen backtick und der anderen Taste länger war ? sickill vor 11 Jahren 1
12
Nathan Speed

Ich bin CAPS-LOCKglobal zugeordnet worden ESC. Dann verwende ich M-Space(dh. CAPS-LOCK+ Space) Für mein Präfix.

Sehr gute Idee, danke fürs Teilen. AhHatem vor 10 Jahren 0
11
simonair

Ich benutze Ctrl-Qin tmuxund es hat bisher gut gearbeitet. Ich muss jedoch erwähnen, dass es Konflikte mit der Shell-Flusskontrolle gibt. Wird standardmäßig Ctrl-Qverwendet, um die Ausgabe nach dem Stoppen mit wieder zu aktivieren Ctrl-S. Nachdem Ctrl-Sich einige Male nach einem versehentlichen Schlag von einer festsitzenden Muschel überrascht worden war, habe ich gelernt, nicht zu drücken Ctrl-S.

(Sie können die Flusskontrolle auch ganz deaktivieren stty -ixonoder verschiedene Tasten an stty startund binden stty stop.)

# tmux.conf unbind C-b set -g prefix C-q 
Ich habe diese Bindung übernommen und finde es sehr bequem. Vielen Dank! aymericbeaumet vor 10 Jahren 0
Mein Favorit auch, da ich immer den Fluss der Terminalsteuerung steuere. Jack O'Connor vor 10 Jahren 0
Wird in Emacs für "Zitat eingefügt" verwendet. Verwendungsbeispiel (in Emacs): wenn ich nach dem nächsten Tabulatorzeichen suchen möchte - `++` nhed vor 10 Jahren 2
6
terrace

Ich reserviere mich gerne ^Spacefür sehr spezielle / allgemeine Operationen, weil ich finde, dass es das einfachste Präfix für die Eingabe ist, aber prefixim Moment versuche ich es als in tmux zugeordnet .

Sie lässt Ihre Finger frei und springt sofort zu dem Befehl, den Sie eingeben möchten. Versuche es.

Das hat nicht lange gedauert - ich bin zurück zu ^ j. ^ Der Platz ist den Befehlen, die ich zum Aufrufen von Apps auf OSX-Ebene (Spotlight, QuickSilver, DTerm) verwende, zu ähnlich. terrace vor 13 Jahren 3
Ich benutze auch Cj. Das ist was ich in meiner ~ / .tmux.conf verwende: `set -g prefix2 Cj; Bindetaste Cj send-prefix -2` Susam Pal vor 10 Jahren 0
Ich benutze auch C-Space, es wird fast nirgendwo sonst verwendet. mahdix vor 7 Jahren 1
C-Space ist perfekt für mich, da ich mich auf einem Chromebook befinde: D Eric Nguyen vor 7 Jahren 1
6
Trevor Powell

Ein verspäteter Vorschlag: ctrl-s. ctrl-shat eine Reihe von Vorteilen:

  1. In der Heimatreihe.
  2. Immer noch in der Nähe ctrl-a(in der Tat werden bei den meisten Schreibern dieselben zwei Finger verwendet, für die sie verwendet wurden ctrl-a), also ist das Wechseln des Muskelgedächtnisses von ctrl-azu ctrl-strivial - für mich wurde es innerhalb einer Stunde nach dem ersten Versuch zur zweiten Natur.
  3. Wird ctrl-afür "Zurück zum Zeilenanfang" im Emacs-Stil oder für "Inkrementnummer" im Vim-Stil freigegeben. Oder hey, um den Bildschirm in einem tmux-Bereich auszuführen, ohne sich um das Präfix von Präfix-Zeichen sorgen zu müssen, um die eingebettete Bildschirminstanz zu steuern. (Ich mache dies oft mit einem lokalen tmux mit Bereichen, die SSH-Sitzungen mit Remote-Servern enthalten, in denen ich screen ausführte.)
  4. Überschreibt keine anderen häufig verwendeten Terminalsfunktionen mit zusätzlichen Anforderungen. Nichts, was die große Mehrheit der Menschen heute verwendet, ist auf Strg-s!

Natürlich liegt der Grund dafür, dass sich nichts auf Strg-s befindet, darin, dass es normalerweise im Terminal für die Flusskontrolle verwendet wird, die bis in die Zeit vor den Paging-Tools zurückreicht, wie moreund lesswaren üblich. Ich bin mir sicher, dass irgendwo in einem GUI-Terminalprogramm noch die Flusssteuerungsfunktion standardmäßig aktiviert ist, aber ich habe noch nicht einmal eine getroffen. Die GUI-Terminalprogramme, die ich bereits ausprobiert habe, scheinen sie standardmäßig zu ignorieren, sodass diese praktische Tastenkombination für produktivere Anwendungen verfügbar ist.

Wenn Sie also nicht wirklich screen / tmux von (z. B.) einem reinen Linux-Terminal aus verwenden, sondern von einem GUI-basierten Terminal, dann empfehle ich Ihnen, es ctrl-sauszuprobieren. Es macht das Zippen in tmux und Bildschirm für mich viel bequemer.

Ctrl-s ist Vorwärtssuche, wenn ich mit Ctrl-r zu weit gehe :) Jack O'Connor vor 10 Jahren 4
Ctrl-S dient zum Stoppen der Konsolenausgabe (auch als "Einfrieren" bezeichnet). Dieses Stück hat mich gebissen, als ich versucht habe, es neu zuzuordnen. Dave vor 7 Jahren 0
4
bluehavana

Ich habe gehört, dass `(Backtick) verwendet wird, und Sie müssen es nur zweimal eingeben, um ein tatsächliches Backtick zu erhalten. Könnte für vi-Benutzer, die an die Aktion gewöhnt sind, besser geeignet sein (es sei denn, Sie machen die Feststelltaste).

Wie können Sie Backtick für tmux definieren? Alexandre Nizoux vor 13 Jahren 0
So etwas wie: Unbindung Cb; set -g Präfix '`'; bind '' 'send-prefix; siehe Darren Halls Antwort oben. bluehavana vor 13 Jahren 0
Ich bin seit etwa einem Jahr mit Backticket unterwegs und werde nie wieder auf das Präfix mit zwei Tasten / Kombinationen zurückgreifen. Versuche es. sickill vor 11 Jahren 0
4
nealmcb

Ich empfehle C-j, was mit vi oder emacs nicht viel stört. Ich stimme im Wesentlichen mit einem Kommentar von Susam Pal überein, der es wert ist, als Antwort aufgetaucht zu sein, da die anderen aus meiner Sicht alle bedeutende Konflikte zu haben scheinen.

Ich verwende Cj als meinen Präfixschlüssel, da Cj auch in oder jim j ist und niemand Cj verwendet, um eine Zeile in Vim nach unten zu verschieben. Ich habe dies in meiner ~ / .tmux.conf:

set -g prefix2 C-j; bind-key C-j send-prefix -2

Aufgrund Ihrer Empfehlung benutze ich Cj schon eine Weile und der einzige Konflikt, den ich gefunden habe, ist das CtrlP-Vim-Plugin. Cj und Ck werden verwendet, um die Optionen nach unten bzw. nach oben zu bewegen. blockloop vor 6 Jahren 1