Acabei de descobrir que posso adicionar as seguintes linhas a ~/.vimrc
.
set mouse=a
:vmap <C-C> "+y
Isso tem o efeito de poder selecionar texto com o mouse (ou seja, no modo visual) e depois copiar o texto real na área de transferência do X com Ctrl+ c. Isso difere da cópia padrão do terminal, pois é o texto real que estou copiando, não o que o terminal vê. Por exemplo, se houvesse guias no texto, anteriormente eu as copiaria como espaços.
Existe uma maneira de fazer menos se comportar da mesma maneira? ou seja, posso copiar literalmente o que está no arquivo de texto que estou visualizando em menos?
Respostas:
Não é uma tarefa por menos
Não,
acho que você não pode fazer isso diretamente, porque menos não tem um cursor para começar.
Seria necessário navegar para o início e o fim do texto a ser selecionado.
less
simplesmente não é a ferramenta certa para a navegação em nível de personagem.Guias já expandidas
Você pode usar a tecla shifte o mouse para fazer uma seleção; Isso é tratado pelo terminal, não por menos. Mas o terminal não sabe como os espaços e as guias foram organizados - menos a interpretação das guias internamente e escreve apenas
caracteres " " normais na tela.
Existem ferramentas como
screen
,tmux
ebyobu
, que podem fazer muitas coisas impressionantes nesta área. Não verifiquei, mas presumo que esses multiplexadores de terminal não tenham uma maneira de contornar isso - sendo terminais, no final - e se comportarão da mesma maneira.Use vim
Se você está mostrando um arquivo em
less
, há uma boa solução:Pressione a tecla vem
less
para abrir o arquivo atual emvim
- asuming seu$EDITOR
etc. está configurado paravim
.Isso não funciona ao mostrar stdin a partir de um pipeline, aproximadamente, embora haja soluções alternativas .
Rolagem do mouse, pelo menos
Mas você pode pelo menos rolar com a roda do mouse:
Isso parece até estar ativado por padrão, mas os eventos da roda do mouse são suprimidos por uma opção diferente.
Para um teste rápido, tente:
A opção
-X
(--no-init
) bloqueia a rolagem - verifique o que sua variável de ambienteLESS
contém:A opção
-q
(--quiet
,--silent
) também causa problemas, de acordo com SU: Como fazer a roda do mouse rolar o menos pager usando o bash e o gnome-terminal?fonte
v
chave é fantástica! (Tomei a liberdade de uma solução legal para fazê-lo funcionar em pipelines também.) FWIW no meu emulador de terminal (terminador) Não preciso segurar a tecla Shift ao selecionar o texto.vimpager
que você pode usar para substituirless
a venda total. Na verdade, ele usa apenasvim
envolto em um pequeno script.vimpager
parece bem legal, mas eu tive problemas com puxões que me fazem preferir usar menos ev
.vimpager
até que funcione; (Eu tento não ativar todos os meusvim
plugins ao iniciarvimpager
...)Você pode copiar a linha superior exibida na
less
seleção X11 CLIPBOARD digitando comless
:Isso canaliza o menos buffer da linha superior para a
.
marca (portanto, com efeito, todo o conteúdo da tela) para ohead -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: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 indicaless
quais linhas copiar da tela atual:Escreva um
lesspaste
script como: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):
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 peloman
), como a entrada que é alimentado paralesspaste
que não tenham suas linhas em branco espremido (para que os deslocamentos número de linha pode estar errado)) .fonte
less
suposto dar algum tipo de feedback?j
não parece fazer nada por mim.less
,j
desloca uma linha (forw-line
) na tecla padrão (na verdadeJ
(forw-line-force
) seria melhor aqui, eu vou editar).|
deve lhe dar algum feedback. (solicite a marca e, em seguida, o comando para inserir).j
isso não tenha feito nada. A primeira opção agora funciona (+1). A segunda opção parece bastante complicada com algumas ressalvas, então não tentei. Eu acho quev
é bom o suficiente para mim.