Não foi possível usar o pbcopy enquanto estava na sessão tmux


63

Executando o tmux 1.4 instalado a partir de portas no snow-leopard Não consigo usar o pbcopycomando OSX embutido .

Fora de tmux:

> echo "abc" | pbcopy
> echo $(pbpaste) # or using ^v
abc

Mas dentro de tmux:

> echo "123" | pbcopy
> echo $(pbpaste)
abc

Examinei a página de manual, mas não consigo encontrar nenhuma opção que possa estar relacionada a esse comportamento. Eu também não consigo entender por tmuxque mexer com o redirecionamento de shell.

Alguém tem alguma pista?


1
Observe que isso funciona usando xclipno Linux. A propósito, echo pbpastedeve resultar em "pbpaste".
Dennis Williamson

Respostas:


75

Usando homebrew

brew install reattach-to-user-namespace --with-wrap-pbcopy-and-pbpaste

ou Macports

sudo port install tmux-pasteboard

Anexe o seguinte ao topo do arquivo ~ / .tmux.conf

set-option -g default-command "reattach-to-user-namespace -l zsh"

Você pode querer trocar o zshpara o shell que estiver usando, para a portabilidade, provavelmente você deve usar $SHELL.

Retirado de => robots.thoughtbot.com


6
use bashse você estiver no bash em vez dezsh
3 /

meu bash não foi inicializado corretamente (.bashrc, .bash_profile não originado). Como isso deve ser feito para fazer isso?
Brad Parks

1
Necessário ativar a opção agora brew install reattach-to-user-namespace --wrap-pbcopy-and-pbpaste
Ian Yang

4
Uma opção mais robusta para o tmux.conf éset-option -g default-command "reattach-to-user-namespace -l $SHELL"
khoomeister

5
A opção --wrap-pbcopy-and-pbpastefoi descontinuada usando --with-wrap-pbcopy-and-pbpaste!
TaeL

11

Quando tmuxse desconecta do console (para oferecer suporte à conexão / desanexação), ele o faz de uma maneira que não permite mais a comunicação com a GUI.

Os patches da Apple no GNU screenusam uma chamada de sistema privada para desanexar de uma maneira diferente. Há um patch no rastreador de erros do Macports que faz pbcopy/ pbpastefunciona novamente. Também o enviei ao repositório Homebrew, onde foi brevemente aceito e depois revertido.

Isso ocorre porque, quando esse patch é aplicado, o tmux falha quando é reconectado a uma sessão.

Veja a solicitação pull no github para o projeto Homebrew para obter mais informações.


Isso faria sentido ... exceto que, se eu executar, digamos, open .em uma sessão tmux, ela abrir uma janela do Finder, então "não permite que ela se comunique mais com a GUI" não parece muito precisa?
Jamesdlin #

5

Eu encontrei um projeto no github que envolve o tmux para que o pbpaste e o pbcopy funcionem e não possua os problemas descritos que levaram o Homebrew a remover o patch. É muito fácil de instalar, apenas um pouco de compilação e uma linha no seu arquivo .tmux.conf

O Homebrew tinha um patch, mas, como outros mencionaram, foi restaurado porque causou problemas com a recolocação.

Houve um problema registrado no tmux , mas foi fechado porque o autor do tmux não tem um Mac para testar. O arquivo README no projeto github tmux-MacOSX-pasteboard tem ótimos detalhes sobre por que é difícil corrigir o tmux nesse caso, e várias outras informações sobre a situação. Ele funciona no OSX 10.6 para mim e a leitura do código parece que também funcionará para o 10.5.



1

Há um ticket aberto aqui: http://sourceforge.net/tracker/index.php?func=detail&aid=2960136&group_id=200378&atid=973265

Data: 2010-02-28 11:20:57 UTC Remetente: nicm

Não há razão para que você não possa simplesmente canalizar o tmux showb, é claro.

Data: 2010-02-28 11:20:05 UTC Remetente: nicm

A menos que alguém me envie algum código para fazê-lo ou algum hardware com o OS X nele.

Tentei canalizar showb para pbcopy e não funcionou.

~: echo "12345"
12345
[use copy-mode to copy "12345"]
~: tmux showb
12345
~: tmux showb | pbcopy
~: pbpaste


1

Eu uso o tmux-MacOSX-pasteboard no Snow Leopard e Lion e ele corrige a funcionalidade pbcopy / pbpaste para você no tmux. Fácil de instalar também.


3
tmux-MacOSX-de papelão está agora em MacPorts bem com o nome tmux-de papelão
anddam
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.