Nas configurações do mui 12.04, meus comandos de copiar e colar da área de transferência do tmux são os seguintes:
set -g prefix M-a
unbind C-b
bind C-c run "tmux save-buffer - | xclip -i -sel clipboard"
bind C-v run "tmux set-buffer \"$(xclip -o -sel clipboard)\"; tmux paste-buffer"
Isso funcionou muito bem por um longo período, até um mês ou mais atrás, quando suspeito que alguma alteração na configuração ou no pacote foi quebrada. No terminal GNOME, colar ainda funciona bem com prefix+ ctrl-ve ctrl-shift-v.
No entanto, o xclip
comando copy não funciona mais, não importa o que eu faça, e tentei remover a ligação do prefixo personalizado acima, usando, em -select
vez de -sel
não usar clipboard
etc. Isso é praticamente uma rolha de exibição para um usuário do GVim como eu, já que eu não ' até tem a solução alternativa para o terminal GNOME, ctrl-shift-ccom o tmux assumindo o comando. Entro no modo de cópia, seleciono texto com space+ movemente quando executo prefix+ ctrl-cabsolutamente nada acontece. Antes disso, o tmux exibia uma mensagem de confirmação na seção de notificação na parte inferior.
Alguém tem sugestões na medida em que alguém pode depurar isso? Este é um grande sucesso na produtividade. Provavelmente, posso usar o truque de solução temporária de arquivo por enquanto , mas seria ótimo saber exatamente o que aconteceu xclip
.
type xclip
?xsel -b
?xsel -i -b
parece fazer o truque!xsel -b
exclip -selection clipboard
faria a mesma coisa!Respostas:
O
xsel
utilitário é semelhantexclip
, mas implementado de maneira um pouco diferente. Normalmente, eu esperaria que eles se comportassem da mesma maneira, mas eles não fazem exatamente a mesma chamada da biblioteca X, por isso é possível que em alguns casos de cantoxsel
funcione, mas nãoxclip
, ou vice-versa. Tentar:fonte
Adicionar
-b
aorun-shell
(ourun
) comando corrigiu o problema. Com-b
o comando shell é executado em segundo plano.bind C-c run-shell -b "tmux save-buffer - | xclip -i -sel clipboard"
fonte
Embora eu não possa mais reproduzi-lo, mas aqui está a resposta técnica que pode ter acontecido no seu caso.
Primeiro, você precisa entender como a área de transferência do X11 funciona. Você pode ler o ensaio de jwz sobre isso: http://www.jwz.org/doc/x-cut-and-paste.html
Em resumo, o aplicativo que contém o conteúdo da área de transferência precisa ser executado até que outro aplicativo confirme a propriedade. Portanto, quando você executa
xclip -i <<< test
, pode ver o xclip sendo executado em segundo plano até fazer outra seleção:Agora está tudo bem, mas quando você sai desse shell, todos os processos pertencentes a esta sessão são eliminados por padrão, enviando-lhes um sinal HUP. Isso significa que o xclip será eliminado e você não poderá mais acessar o conteúdo da área de transferência.
Portanto, a solução alternativa sugerida (caso você não tenha o xsel) é ignorar o sinal HUP usando a seguinte ligação:
xsel
não é afetado por esse problema porque a primeira coisa que faz após o fork () é desassociar-se do terminal de controle para que ele não receba o sinal HUP quando o shell sair (você nem o verá no ps acima saída, mas somente quando você faz aps -e | grep xsel
).fonte
Estou com um problema semelhante e o arquivo temporário não vai ajudar nesse caso em particular, receio. Isso ocorre porque
xclip
parece se comportar de maneira diferente quando gerada pelo tmux do que quando é executada "interativamente" e aguarda que outro aplicativo tome posse da área de transferência. Tente usarxclip -l 1
para fazê-lo sair imediatamente (consulte a página de manual para obter detalhes).fonte
bind C-y run-shell "tmux save-buffer - | xclip -l 1 -i"
.xclip
está fazendo quando você tenta copiar o buffer. Se ele permanece ali esperando por algo, matá-lo ajuda? Além disso, você deve sair do modo de seleção pressionando Enter (e, portanto, armazenando-o no buffer) antes de tentar copiar o buffer na área de transferência do X.Esta é uma pergunta antiga, mas suspeito que tenho a solução, retirada da página Tmux do wiki do Arch :
Portanto, seu comando deve se tornar:
fonte
Esta é uma configuração de trabalho que eu uso:
fonte