Estou usando o tmux com as teclas vi, e copiar / colar funciona bem desde que você selecione uma linha de texto ou se tiver apenas uma janela. Quando desejo selecionar um bloco de texto (várias linhas, mas não a largura total), encontro problemas. Se eu tiver várias janelas vim abertas, ele selecionará o texto de todas elas, e o que eu preciso é selecionar o texto apenas de uma janela. Ou seja, assim como uma seleção visual no vim.
Isso é possível?
Respostas:
Certifique-se de verificar na parte inferior desta postagem as ligações necessárias que precisam entrar no seu arquivo .tmux.conf.
Estou assumindo que sua chave de prefixo é Ca:
Para fazer uma seleção retangular de texto de (1,1) a (2,2) no tmux:
Observe que pressionar spaceé necessário para a seleção do retângulo.
Para selecionar linhas como você faria normalmente, vá para o modo de cópia e pressione v, selecione com as teclas jkhl e pressione y.
Eu tenho essas ligações no meu .tmux.conf:
Antes da versão 2.4 (20 de abril de 2017) :
Após a versão 2.4 :
É importante desvincular a ligação padrão de retângulo-alternância:
Caso contrário, a nova ligação 'Cv' não funcionará.
Nota: para ter um single
.tmux.conf
que funcione entre versões, consulte esta pergunta .fonte
send
esend-keys
. Vejo em superuser.com/questions/196060/selecting-text-in-tmux-copy-modesend-key
usado. As aspas também são importantes?Você pode selecionar um bloco visual como no tipo vi
v
antes de iniciar a seleção. Na página de manual, isso é chamado de "alternância de retângulo".fonte
Como Lars aponta,
v
realmente faz o que você está solicitando alternando entre o modo retângulo e o modo de seleção de linha completa.space
eenter
são usados respectivamente para iniciar uma nova seleção e copiá-la. Entre no modo de cópia usando seu prefixo seguido por[
e cole sua seleção copiada em qualquer janela do tmux usando]
Isso também me confundiu, pois
v
funciona no vim, comospace
no tmux, para iniciar a seleção.A emissão
:list-keys -t vi-copy
no tmux mostrará a tabela completa de comandos no modo de cópia.fonte
Como nenhuma das outras respostas fornece uma solução ideal para o problema, não estou acima da necromancia.
Existe uma maneira de fazer a seleção de blocos funcionar da mesma maneira que no Vim, sem precisar pressionar espaço. Apenas um Ctrl-V simples, arraigado na memória muscular.
Requer a edição do seu .tmux.conf (mas o modo vi já o faz) e não tenho certeza de que funcione para o tmux <2.4.
Adicione isso ao seu .tmux.conf para replicar a seleção do Vim e arrancar as ligações:
Entre no modo de seleção e navegue para onde deseja iniciar a seleção. Agora
v
inicia a seleção regular (caractere por caractere, em linha),<C-v>
inicia a seleção de blocos eV
(shift-v) inicia a seleção de linha. Independentemente do tipo de seleção,y
puxa para tmux colar buffer (ou área de transferência do X; veja os comentários do código acima).O mesmo que o Vim.
fonte
EDIT: Depois de verificar o código fonte, reescrevi minha resposta completamente.
Originalmente, pensei que isso não era possível porque não consegui fazer isso funcionar, mas as outras respostas estão corretas em
v
ser a chave correta para isso, mas não é óbvio como usá-lo, especialmente se você está acostumado a vim.Além disso, isso não funcionaria para mim porque eu tinha
v
decididobegin-selection
- acho que devo ter copiado cegamente essa idéia de outro lugar para imitar a maneira vim de iniciar uma seleção sábia de personagens, sem saber que isso causaria problemas mais adiante no caminho. seleções de bloco.Depois que tirei essa ligação (comentando a linha no meu
.tmux.conf
e reiniciando o tmux), ela começou a funcionar, mas ainda é bastante confusa porque não é a mesma coisa que o vim.Com ligações padrão, deve funcionar da seguinte maneira:
setw -g mode-keys vi
no seu.tmux.conf
.C-a [
para iniciar o modo de cópiav
Space
para iniciar a seleçãov
novamente para alternar a seleção novamente para a seleção de caracteres ou vice-versa.Você não precisa digitar o
v
antes de pressionarSpace
. Você pode iniciar a seleção por caracteresSpace
primeiro e pressionarv
depois para alternar para o modo de seleção retangular.É bem diferente do vim, no tmux você precisa digitar dois caracteres:
Space
ev
entrar no modo de seleção retangular. No vim, você só precisa digitarCtrl-V
.Também no vim
v
inicia uma seleção em caracteres, não em bloco.Infelizmente, não parece haver um modo de seleção em linha no tmux (
Shift-v
no vim).EDIT: Parece que o Tmux versão 2.0 fornece um modo de seleção por linha
Shift-v
(ainda não o testei ainda!)fonte
Shift-v
na versão 2.0 de março de 2015), certamente após a minha resposta e muito depois da resposta original. Talvez você e eu falemos sobre duas coisas diferentes quando falamos sobre seleção por linha. Por favor, compare com os 3 modos de seleção no VIM (comv
,Shift-v
eCtrl-v
).v
seleção é de caráter. Estou na versão 1.9a e não tenho a seleção em linha do tipo vim. Então, com a versão 2.0, os três modos exatos que o vim possui também são possíveis no tmux, certo?