È possibile copiare la riga superiore visualizzata nella less
selezione CLIPBOARD X11 digitando con less
:
|.head -n1|xclip -sel c<Enter><Enter>
In questo modo viene convogliato meno buffer dalla riga superiore al .
segno (quindi, in effetti, l'intero contenuto dello schermo) al head -n1|xclip -sel c
comando (per memorizzare la prima riga nella selezione CLIPBOARD)
È possibile configurare il proprio emulatore di terminale per incollare quella stringa su una determinata pressione del tasto o associarlo a una chiave o combinazione di less
tasti in combinazioni di tasti. Ad esempio, per vincolarlo Alt+C:
printf '%s\n' '#commands' '\ec pipe .head -n1|xclip -sel c\n' | lesskey -
Comunque nota, dovrai premere Enterdopo per confermare il messaggio "| done (premi INVIO)".
Con xterm
, puoi anche definire una nuova modalità di selezione, ad esempio qui quando tieni premuto Ctrl+Altquando estendi la selezione che dice less
quali linee copiare dalla sua schermata corrente:
Scrivi una lesspaste
sceneggiatura come:
#! /bin/sh -
start=${1%%";"*}
end=${1#*" "}
end=${end%";"*}
head -n "$((end))" | tail -n "$((end - start + 1))" | xclip -sel c
E definisci le tabelle di traduzione xterm (qui sulla riga di comando per i test, ma ti consigliamo di aggiungerlo a un file di risorse X):
xterm -xrm 'XTerm.VT100.translations: #override \
Meta Ctrl<Btn1Down>: select-start()\n\
Meta Ctrl<Btn1Motion>: select-extend()\n\
Meta Ctrl<Btn1Up>: select-end(SECONDARY) \
insert-formatted("|.lesspaste '\''%P %p'\''\n\n", SECONDARY)'
Contrassegneresti quindi le linee da incollare trascinando il mouse con Ctrl+Altpremuto e, rilasciando il pulsante 1, xterm direbbe di meno di reindirizzare la schermata corrente al nostro lesspaste
script con le coordinate di inizio e fine passate come un argomento ( y1;x1 y2;x2
).
(nota che potrebbe non funzionare correttamente se less
viene invocato -s
per comprimere le righe vuote (come è tipico quando invocato da man
), poiché l'input a cui viene alimentato nonlesspaste
verrà compresso nelle righe vuote (quindi gli offset del numero di riga potrebbero essere errati)) .