Você pode copiar a linha superior exibida na less
seleção X11 CLIPBOARD digitando com less
:
|.head -n1|xclip -sel c<Enter><Enter>
Isso canaliza o menos buffer da linha superior para a .
marca (portanto, com efeito, todo o conteúdo da tela) para o head -n1|xclip -sel c
comando (para armazenar a primeira linha na seleção da CLIPBOARD)
Você pode configurar o emulador de terminal para colar essa sequência em um determinado pressionamento de tecla ou vinculá-lo a uma tecla ou combinação de less
teclas nas combinações de teclas. Por exemplo, para vinculá-lo Alt+C:
printf '%s\n' '#commands' '\ec pipe .head -n1|xclip -sel c\n' | lesskey -
No entanto, observe que você deve pressionar Enterdepois disso para confirmar o prompt "| done (pressione RETURN)".
Com xterm
, você também pode definir um novo modo de seleção, por exemplo, aqui, mantendo pressionado Ctrl+Altao estender a seleção que indica less
quais linhas copiar da tela atual:
Escreva um lesspaste
script como:
#! /bin/sh -
start=${1%%";"*}
end=${1#*" "}
end=${end%";"*}
head -n "$((end))" | tail -n "$((end - start + 1))" | xclip -sel c
E defina as tabelas de conversão xterm (aqui na linha de comando para teste, mas você deseja adicioná-lo a um arquivo de recurso 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)'
Você marcaria as linhas a serem coladas arrastando o mouse Ctrl+Altpressionado e, ao liberar o Botão 1, o xterm diria menos para canalizar a tela atual para o nosso lesspaste
script com as coordenadas de início e fim passadas como um argumento ( y1;x1 y2;x2
).
(note que ele pode não funcionar corretamente se less
for invocado com -s
a apertar linhas em branco (como é típico quando invocado pelo man
), como a entrada que é alimentado para lesspaste
que não tenham suas linhas em branco espremido (para que os deslocamentos número de linha pode estar errado)) .