it-swarm-eu.dev

Qual è il prefisso / sequenza di escape meno conflittuale per lo schermo o tmux?

Lo schermo va con Ctrl+A. tmux d'altra parte, come sviluppato all'interno degli usi dello schermo Ctrl+B. Entrambe le sequenze di tasti, tuttavia, vengono utilizzate anche in editor, shell, ecc. Pertanto, la scelta di una delle due diminuisce l'esperienza utente e la funzionalità di tali strumenti quando vengono utilizzati in tmux o sullo schermo.

Quale prefisso è in conflitto con le combinazioni di tasti di altri programmi e shell?

91
Flow

Penso che ^\ (a.k.a.^|) sia il migliore se si trova in una posizione comoda sul layout della tastiera. I suoi usi in altri programmi sono piuttosto rari:

  • inviando SIGQUIT a un processo
  • interruzione per o while loop in una shell quando ^C viene intercettato
  • toggle-input-method in emacs

Non conosco altri usi. Fai attenzione a non uccidere accidentalmente un processo al di fuori di tmux o screen dopo esserti abituato. Mi è successo solo una volta in pochi anni.

~/.tmux.conf

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

~/.screenrc

escape ^|^|
46
cjay

Per le persone che vogliono usare backtick come escape in tmux, ti consigliamo di aggiungere:

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

Quest'ultimo è importante, altrimenti non puoi digitare un apice per altri scopi :-)

47
Ned Ruggeri

Ctrl + A è anche noto per causare problemi con Emacs, tra cui Bash in modalità Emacs. Sembra che questo non sia un problema per te.

Ctrl + O è l'altra opzione che ho visto. Apparentemente, questo è il valore predefinito in RatPoison (questo è un gestore di finestre X che non ha bisogno di un mouse). Ho usato Ctrl + O quando uso schermate annidate: Ctrl + O per quella esterna e Ctrl + A per quelle interne. Ha funzionato bene, ma ho un po 'spaventato i miei colleghi. :-)

Stavo solo pensando e se usi vi piuttosto che Emacs, ci sono alcune alternative. Ctrl + G non è usato da molto, per esempio.

20
staticsan

Ho CAPS-LOCK mappato globalmente a ESC. Quindi, io uso M-Space (cioè CAPS-LOCK + Space) per il mio prefisso.

13
Nathan Speed

Io uso un sistema complesso per lo schermo. La mia fuga predefinita è impostata su\140\140, che è backtick. Il Ctrl-A complica sia Emacs che la riga di comando per me all'interno di Zsh, e non mi piace Ctrl-O (operazioni a 2 mani per la maggior parte delle azioni sullo schermo).

Riconosco lo schermo 1 in modo che le nuove sessioni vengano create da sinistra a destra sulla tastiera a partire da 1. Ciò mi consente di riservare lo schermo 0 per quelle che considero finestre persistenti o di riferimento. È molto veloce il gesto con una sola mano a (apice) 1, (apice) 2, (apice) 3 per passare da una finestra all'altra.

Il problema dell'utilizzo di backtick in un ambiente unix è quando si tenta di tagliare e incollare il codice di script Shell/Perl. Per questo motivo ho bindkey F11/F12 per passare tra il mio personaggio di fuga.

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

Questo cambierà l'escape in Ctrl-O per quando eseguirò operazioni di copia e incolla. Ho scoperto che colpire un doppio segno di spunta è semplice e un buon compromesso per la maggior parte delle operazioni sullo schermo.

Rivedere questa risposta con una soluzione più recente che consente di attivare la modalità premendo F12 e utilizzare una didascalia per indicare la modalità.

## 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%{mW}%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%{KW}%n* %t%? @%u%?%{-}%+w '^M"
register d "\017:caption string '%{= kW}%?%F%{+b KW}%:%{= kK}%? %= %?%F%{.c}>>>%{-}%? | %-w%{mW}%n* %t%? @%u%?%{-}%+w '^M"
12
Darren Hall

Io uso Ctrl-Q in tmux e ha funzionato bene finora. Devo menzionare, tuttavia, che è in conflitto con il controllo del flusso Shell. Per impostazione predefinita, Ctrl-Q viene utilizzato per riattivare l'output dopo averlo interrotto con Ctrl-S. Dopo essere stato sorpreso da un Shell bloccato alcune volte dopo aver colpito accidentalmente Ctrl-S, ho imparato a non premere Ctrl-S.

(Si potrebbe anche disattivare completamente il controllo di flusso con stty -ixon, o associare chiavi diverse a stty start e stty stop.)

# tmux.conf
unbind C-b
set -g prefix C-q
11
simonair

Mi piace prenotare ^Space per operazioni molto speciali/comuni perché trovo che sia il prefisso più semplice da digitare, ma in questo momento sto provando a mapparlo come prefix in tmux .

Lascia le tue dita libere per saltare immediatamente al comando che vuoi digitare. Fai un tentativo.

6
terrace

Un suggerimento tardivo: ctrl-s. ctrl-s ha una serie di vantaggi:

  1. Sulla fila di casa.
  2. Ancora vicino a ctrl-a (infatti, per la maggior parte dei dattilografi userà le stesse due dita che hanno usato per ctrl-a), quindi il passaggio della memoria muscolare da ctrl-a a ctrl-s è banale - per me, è diventato una seconda natura entro circa un'ora dal primo provandolo.
  3. Libera ctrl-a per le operazioni "back to start of line" in stile emacs o "numero incremento" in stile vim. O hey, per l'esecuzione di uno schermo all'interno di un riquadro tmux senza la necessità di preoccuparsi di sfuggire ai caratteri del prefisso per controllare l'istanza dello schermo incorporato. (Lo faccio spesso usando un tmux locale con riquadri contenenti sessioni ssh su server remoti, in cui eseguo lo schermo)
  4. Non sovrascrive o aggiunge requisiti di escaping a qualsiasi altra funzionalità terminale comunemente utilizzata. niente la stragrande maggioranza delle persone usa oggi è su ctrl-s!

Ovviamente, la ragione per cui nulla è su Ctrl-s è che nel terminale, tradizionalmente viene usato per il controllo del flusso, risalendo ai giorni prima che gli strumenti di paging come more e less fossero comuni. Sono sicuro che qualche programma terminale della GUI da qualche parte abbia ancora quella funzionalità di controllo del flusso abilitata di default, ma non ne ho mai incontrato uno; i programmi del terminale gui che ho provato sembrano ignorarlo completamente per impostazione predefinita, il che rende quella comoda combinazione di tasti disponibile per usi più produttivi.

Quindi, se in realtà non usi screen/tmux da (per esempio) un terminale Linux grezzo, ma piuttosto da un terminale basato su GUI, allora ti consiglio di provare ctrl-s; è fatto zippare in tmux e lo schermo è molto più conveniente per me.

6
Trevor Powell

Ho sentito parlare di `(backtick) in uso e quindi devi solo digitare due volte per un backtick effettivo. Potrebbe essere migliore per gli utenti di vi che sono abituati all'azione (a meno che non si faccia la cosa di Caps lock).

4
bluehavana

Raccomando C-j, che non interferisce molto con vi o emacs. Essenzialmente, sono d'accordo con un commento di Susam Pal, che sembra degno di essere presentato come una risposta, dal momento che gli altri sembrano avere conflitti significativi dal mio punto di vista.

Uso C-j come tasto prefisso poiché C-j è anche j o in Vim e nessuno usa C-j per spostare una riga in basso in Vim. Ho questo nel mio ~/.tmux.conf:

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

4
nealmcb

Una chiave senza conflitto potrebbe essere C-z, in quanto viene solitamente utilizzato per inviare il programma allo sfondo per continuare un'altra cosa su Shell che l'ha avviata. Non lo faccio quando ho tmux.

4

Per il layout di tastiera di Programmer Dvorak, è piuttosto carino usare un tasto meno (trattino) come prefisso, cioè ctrl + -.
Il tasto meno si trova sulla posizione della chiave di quota singola nel layout qwerty. Inoltre ho la funzione di tasto maiuscole come tasto ctrl. Di seguito è riportato un conf tmux, per impostarlo come prefisso:

unbind C-b
set -g prefix C-_
bind C-_ send-prefix
bind - last-window

Potresti chiederti, perché viene usato il trattino basso al posto del segno meno? Fare riferimento a Tmux: come si lega a C- (control-minus)?
Per qwerty, potresti applicare Come legare la chiave del prefisso tmux a C - '? soluzione, per conservare lo stesso collegamento .

Direi che questo è un prefisso perfetto se usi Vim/Neovim. Poiché i prefissi, come ctrl + a o ctrl + b, fanno ombra (si sovrappongono) alle funzionalità di Vim, in entrambi i casi.

3
Vladimir Bauer

Penso che la soluzione migliore sia ^ C. Emacs usa ^ C come chiave di prefisso, e trovo che quando ho bisogno di digitare ^ C in una shell, quasi sempre ne scrivo due in ogni caso. :-)

unbind-key C-b
set -g prefix C-c
bind-key C-c send-prefix
2
user114905

Personalmente, b è troppo lontano da Ctrl per me. Quando uso tmux, cambio sempre l'associazione da C-b a C-A. Il principale conflitto con C-a è selezionare tutto, ma non ho trovato che questo sia un problema con i programmi che uso con tmux.

2
DaveParillo

Come utente GNU emacs, zsh e MS Windows, utilizzo Control-T. (ad esempio in .screenrc :)

fuga "^ T ^ T"

Sì, Control-T ha qualcosa legato ad esso, come il menu a tendina nell'atteggiamento di Ubuntu o il carattere di trasposizione in Emacs.

Ho ignorato C-o perché richiede due mani per me.

2
piyo

Uso Caps Lock e su OSX è necessario fare alcune cose speciali per farlo funzionare.

https://Gist.github.com/burtlo/3788048

2
Brad Parks

Puoi usare backtick. Alcune vecchie versioni di tmux non supportano il backtick, quindi puoi fare ciò che segue per risolvere il problema (che aggiungerebbe C-`, C- @ e C-space come meta allo stesso tempo):

# meta prefix - @ - backtick
unbind C-b
set -g prefix [email protected]
bind [email protected] send-prefix
bind [email protected] last-window

Normalmente rimappo il mio CapsLock in Ctrl, quindi ha ancora più senso con l'apice.

1
Alex

La maggior parte delle risposte qui usa Ctrl come parte di una combinazione di tasti.
Quando ho usato Ctrl, il mio dito mignolo ha iniziato a fare male perché dovevo sempre spargerlo a Ctrl.
Uso Alt-j che digito con il pollice sinistro e il dito indice destro ed è molto comodo. Non ho trovato alcuna collisione con nessun altro programma finora.

unbind C-b
set-option -g prefix M-j
1
wullxz

Mi piace il suggerimento di binding ctrl-\come prefisso , ma per farlo funzionare su Linux Mint 12, ho dovuto fuggire dal luogo il legame in basso. Altrimenti, non ci vorrebbe. Vedi il mio .tmux.conf qui: Uso di tmux con sia emacs che vim

0
justingordon

Penso che gli utenti Mac troveranno il § più conveniente del backtick.

Su non-Mac , il backtick è posizionato all'incirca sullo stesso tasto del § sulle tastiere Mac. Quindi, per provare la stessa comodità delle persone che suggeriscono di utilizzare l'apice, usa il segno di paragrafo su una tastiera Mac.

Usare l'apice sulle tastiere Mac è complicato in quanto si trova molto vicino allo spostamento a sinistra (⇧), al controllo (^) e ai tasti (⌥). Su MacBook anche vicino alla fnname __-tasto sinistro.

0
nanitous