copia (negli Appunti X) scorciatoia in .tmux.conf


22

Per copiare il testo negli Appunti X in tmux, quello che attualmente faccio è:

  • vai in modalità selezione con prefix[
  • inizia la selezione con space(usando mode-keys vibtw)
  • seleziona il testo e premi enter
  • copia tmux buffer negli appunti X usando prefixctrl+c

(Ho una mappatura come bind C-c run "tmux show-buffer | xclip -selection clipboard -i"

Sto cercando di eliminare alcuni di questi passaggi creando una mappatura per la modalità di selezione. Ho provato:

bind-key -t vi-copy C-c run "tmux show-buffer | xclip -selection clipboard -i"

che mi dà ed errore:

.. usage: bind-key [-cnr] [-t key-table] key command [arguments]

(Non sono riuscito a copiare l'errore)

come posso risolvere questo?

EDIT: mi sono reso conto che posso selezionare e copiare nel buffer tmux (primi 3 passaggi) usando il mouse proprio come una selezione regolare (anche se l'evidenziazione non dura, seleziona ancora il testo) e quindi usa il seguente bind per copiare negli appunti x :

bind-key -n C-c run "tmux show-buffer | xclip -selection clipboard -i"

(Ho usato questo metodo per copiare questo testo ed è stato facile;)

si noti che -nindica "nessun prefisso", pertanto non è necessario alcun escape. se non vieni confuso dall'evidenziazione finale, ciò è analogo alla normale copia (interfaccia utente comune).

questo è il migliore che ho inventato finora ..

EDIT2: si è scoperto che si ctrl+csovrappone alla cosa di interruzione del processo, quindi ho cambiato ctrl+alt+cper ora. (non mi è abbastanza piaciuto)

EDIT3: tmux 1.8 o più ha aggiunto il supporto per aggiungere le combinazioni di tasti in modalità copia, quindi ora la mia prima intenzione originale è possibile usando qualcosa come:

bind-key -tvi-copy y copy-pipe "xclip -selection clipboard -i"
bind-key -tvi-copy enter copy-pipe "xclip -selection clipboard -i"

Queste due associazioni rendono possibile copiare il testo negli Appunti quando l'ho usato entero yterminare la copia.

Continuo a mantenere questa linea nel caso in cui eseguissi la copia con il mouse e decidessi di ottenere il contenuto del buffer tmux negli appunti in seguito:

bind-key y run "tmux show-buffer | xclip -selection clipboard -i"

1
Puoi cambiare l'interrupt da ctrl-c a qualcos'altro usando stty. Ad esempio, per utilizzare Ctrl-Z: stty intr=^Z. Fai attenzione con quel comando, è possibile impostare un carattere regolare come carattere di interruzione (se lo fai, usa ctrl-v per inserirlo fino a quando non risolvi l'impostazione). E non confonderti su quale tasto viene utilizzato (ad es. Ctrl-z è normalmente il tasto di sospensione).
ash

@ash annotato, grazie .. ma penso che terrò ^cil tasto di interruzione mentre lo uso più spesso della copia. Ho anche aggiornato la risposta per riflettere la mia attuale soluzione a questo problema.
nessuno

suona bene. Si noti inoltre che molte esecuzioni di xmodmap possono mettere le cose in uno stato divertente che è difficile da correggere, quindi consiglio di ricominciare da capo con una nuova sessione X se l'effetto dei comandi appare errato.
ash

correre bind-key -t vi-copy C-c run "tmux show-buffer | xclip -selection clipboard -i"dal vivo dà:Unknown command: run
Alexej Magura il

1
Tuttavia, l'esecuzione bind-key C-c run "tmux show-buffer | xclip -selection clipboard -i"funziona bene.
Alexej Magura,

Risposte:


13

Questa risposta non risponde direttamente alla tua domanda sulla creazione di un collegamento. Ma ecco cosa faccio.

Puoi temporaneamente sospendere il passaggio di eventi chiave / mouse a tmux tenendo premuto shift. Quindi puoi tenere premuto Shift e scorciatoie regolari dell'utente del terminale / X per eseguire la copia. Nel mio caso usando Terminator, premo shift, evidenzio con il mouse quello che voglio, copia conCtrl+Shift+C

E se hai i pannelli divisi, puoi ingrandire il riquadro corrente con il tasto zoom-toggle Prefix + zed eseguire l'operazione di copia. (testato su tmux v1.8)


Non sono stato in grado di usarlo a causa delle divisioni orizzontali, ma il trucco dello zoom suona alla grande, grazie per la punta.
nessuno

Funziona sicuramente con gnome-terminal; ma si applica a tutti gli emulatori di terminali? Probabilmente no
jpaugh il

In wsl-terminal, funziona. Salva il mio giorno!
Qinsi il

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.