Copiando e colando com o URxvt

27

Estou usando o URxvt 9.20 no debian jessie e estou procurando uma maneira de copiar e colar texto como estava acostumado com o gnome-terminal ( Ctrl+ Insertpara copiar, Shift+ Insertpara colar).

Ele funciona em diferentes consoles urxvt, embora não funcione entre, por exemplo, urxvt e iceweasel.

Eu tentei de acordo com o manual do archlinux , mas não funcionará (mesmo que eu realmente não queira usar Shift+ Ctrl+ C/ Vvaleu a pena tentar).

.Xresources:

! ******************
! urxvt config
! ******************

! Disable Perl extension
! If you do not use the Perl extension features, you can improve the security
! and speed by disabling Perl extensions completely. 
URxvt.perl-ext:
URxvt.perl-ext-common:

! Font spacing
! By default the distance between characters can feel too wide. It's controlled
! by this entry: 
! URxvt.letterSpace: -1

! -- Fonts -- !
URxvt.font:xft:Monospace:pixelsize=13
URxvt.boldfont:xft:Monospace-Bold:pixelsize=13
!URxvt*font:  -xos4-terminus-medium-*-*-*-14-*-*-*-*-*-iso8859-15,xft:terminus:pixelsize:12
!URxvt*boldFont:  -xos4-terminus-bold-*-*-*-14-*-*-*-*-*-iso8859-15,xft:terminus:bold:pixelsize:12
!URxvt*italicFont:  xft:Bitstream Vera Sans Mono:italic:autohint=true:pixelsize=12
!URxvt*boldItalicFont:  xft:Bitstream Vera Sans Mono:bold:italic:autohint=true:pixelsize=12

! Disable scrollbar
!URxvt*scrollBar: false

! Scrollbar style - rxvt (default), plain (most compact), next, or xterm
URxvt.scrollstyle: plain

! Background color
!URxvt*background: black
URxvt*background: #1B1B1B

! Font color
!URxvt*foreground: white
URxvt*foreground: #00FF00

! Other colors
URxvt*color0: black
!URxvt*color1: red3
URxvt*color1: #CD0000
URxvt*color2: green3
!URxvt*color3: yellow3
URxvt*color3: #C4A000
URxvt*color4: blue2
!URxvt*color4: #3465A4
URxvt*color5: magenta3
URxvt*color6: cyan3
URxvt*color7: gray90
URxvt*color8: grey50
URxvt*color9: red
URxvt*color10: green
URxvt*color11: yellow
!URxvt*color12: blue
URxvt*color12: #3465A4
URxvt*color13: magenta
URxvt*color14: cyan
URxvt*color15: white
! ******************
! /urxvt config
! ******************
Thomas John
fonte
Você sabe que pode copiar selecionando texto com o mouse e colando clicando com o botão direito do mouse, certo? Se não, isso é suficiente?
terdon
2
O problema aqui é que os dois programas estão usando seleções X-Windows diferentes, os programas tradicionais usam a PRIMARYseleção com Shift + Insert e os novos programas que tentam imitar combinações de teclas de outros sistemas colam a CLIPBOARDseleção para a mesma combinação de teclas. No GTK +, ficou mais difícil colar PRIMARYsem usar o mouse (clique no meio, como @terdon disse, ou clique com o botão esquerdo + direito, se a terceira emulação de botão estiver ativada). Mas, embora isso explique por que os programas não estão passando os dados entre eles, pergunto-me por que a sugestão do wiki do arch não funcionou.
njsg
Como você tentou as sugestões do ArchWIki? Se você estiver usando uma tela de login gráfica para iniciar o X, precisará recarregar os recursos do X usando xrdb(deve ser xrdb ~.Xresourcesou algo semelhante). De qualquer forma, você também precisa reiniciar urxvt. Em algumas distribuições, você pode precisar instalar um pacote separado com as extensões perl, mas isso parece estar incluído no rxvt-unicodepacote base no debian (eu posso estar enganado).
njsg
11
@terdon obrigado pelo seu comentário. Selecionar com o mouse e colar com o clique do meio realmente funciona. Infelizmente, não é o que eu gostaria de alcançar, eu gostaria de usar Ctrl + Insert / Shift + Insert como estou acostumado (hábitos e mantras nos fazem trabalhar com eficiência e rapidez, não uso o mouse com frequência (eu uso i3wm)).
Thomas John
O @njsg agradece muito por explicar as diferenças primárias / da área de transferência. Eu tentei a extensão Perl mencionada no ArchWiki em "Custom key bindings", não fez diferença (comentei a parte "Disable Perl extension") em meus .Xresources antes de usá-la, é claro). - Sim, fiz $ xrdb -merge ~/.Xresourceprimeiro - Sim, reiniciei o urxvt ou abri uma nova janela de terminal do urxvt, que tem o mesmo efeito que esqueci de mencionar um ponto provavelmente mais importante: não tenho um ambiente de área de trabalho instalado: - m usando apenas um gerenciador de janelas (i3wm) - eu uso um gerenciador de login gráfico
Thomas John

Respostas:

16

Infelizmente, o sistema X window possui vários mecanismos diferentes de copiar e colar .

O Rxvt, como a maioria dos aplicativos X da velha escola, usa a seleção primária. Geralmente, quando você seleciona algo com o mouse, ele é automaticamente copiado para a seleção principal e, quando você clica com o botão do meio para colar, cola a seleção principal.

Ctrl+ Ce Ctrl+ V(ou outras combinações de teclas) em aplicativos que usam kits de ferramentas da GUI modernos, como o Gnome-terminal e o Firefox, copiam / colam da área de transferência.

Existem ferramentas para facilitar o trabalho com as seleções. Em particular, se você deseja copiar uma única seleção para selecionar com o mouse ou pressionar Ctrl+ C, pode executar o autocutsel (inicie-o .xinitrcnos programas de inicialização do ambiente de área de trabalho ou no ambiente de área de trabalho), que detecta quando algo é copiado uma das seleções e copia automaticamente para a outra.

Gilles 'SO- parar de ser mau'
fonte
20

Para colar texto, em urxvt / rxvt-unicode você pode usar middle buttonpara colar a seleção PRIMARY e Alt/Meta+ middle buttonpara colar o CLIPBOARD.

Para copiar, basta marcar o texto no terminal para copiá-lo para a seleção PRIMARY. No entanto, é necessário algum trabalho para copiar para a seleção CLIPBOARD. Combinei as informações da página do Archlinux que você vinculou aos scripts incluídos no rxvt-unicode-9.19 e acabei com um script como este: https://gist.github.com/xkr47/98224ed6b0860cb55ec0 . Permite usar Ctrl+ Insertou Ctrl+ Shift+ c`para copiar o texto atualmente selecionado para o CLIPBOARD.

Espero que isto ajude.

Para constar, também não executo um ambiente de área de trabalho; usando o Sawfish como gerenciador de janelas.

Dica : Você pode monitorar a área de transferência em um terminal usando o programa "xclip":

while :; do echo -ne '\033[31;1mCLIPBOARD: ' ; xclip -o -sel c ; echo ; echo -ne '\033[32;1mPRIMARY:   ' ; xclip -o -sel p ; echo ; echo -e '\033[m--------' ; sleep 1 ; done

ou usando o programa "xsel":

while :; do echo -ne '\033[31;1mCLIPBOARD: ' ; xsel -b -o ; echo ; echo -ne '\033[32;1mPRIMARY:   ' ; xclip -p -o ; echo ; echo -e '\033[m--------' ; sleep 1 ; done
Jonas Berlin
fonte
Tópico secundário
Jonas Berlin
Alt + Meta botão / médio trabalha para mim no Debian
Jing
Essa é a resposta correta.
Winny 25/04
15

Existem mecanismos internos para copiar / colar de / para PRIMARY(é usado quando o usuário seleciona alguns dados) e CLIPBOARD(é usado quando o usuário seleciona alguns dados e solicita explicitamente que seja "copiado" para a área de transferência, como invocar "Copiar" no menu "Editar" de um aplicativo). Mais sobre diferentes pranchetas em X .

Para CLIPBOARDbuffer, é CTRL+META+C(que é CTRL+ALT+Cpara o teclado padrão do PC) para copiar e CTRL+META+V( CTRL+ALT+V) para colar.

Citações do urxvt man :

A SELEÇÃO: SELECIONANDO E PASSANDO TEXTO

O comportamento do mecanismo de seleção e inserção / colagem de texto é semelhante ao xterm (1).

Selecionando :

Clique esquerdo no início da região, arraste para o final da região e solte; Clique com o botão direito do mouse para estender a região marcada; Clique duas vezes à esquerda para selecionar uma palavra; Clique com o botão esquerdo do mouse para selecionar a linha lógica inteira (que pode abranger várias linhas da tela), a menos que seja modificada pelas palavras-chave triplas dos recursos.

Iniciar uma seleção enquanto pressiona a tecla Meta (ou as teclas Meta + Ctrl) (Compilar: babados) criará uma seleção retangular em vez de uma normal. Nesse modo, cada linha selecionada se torna sua própria linha na seleção e o espaço em branco à direita é visualmente sublinhado e removido da seleção.

Colagem :

Pressionar e soltar o botão do meio do mouse em uma janela urxvt faz com que o valor da seleção PRIMARY (ou CLIPBOARD com o modificador Meta) seja inserido como se tivesse sido digitado no teclado.

Pressionar Shift-Insert faz com que o valor da seleção PRIMARY seja inserido também.

O rxvt-unicode também fornece as ligações Ctrl-Meta-c e para interagir com a seleção CLIPBOARD. A primeira ligação faz com que o valor da seleção interna seja copiado para a seleção CLIPBOARD, enquanto a segunda ligação faz com que o valor da seleção CLIPBOARD seja inserido.

petRUShka
fonte
Por que eu nunca acho que as soluções estão na página de manual? Agora está tudo claro para mim! Obrigado!
Enrico Maria De Angelis
11
A propósito, eu continuo esquecendo em qual das opções a seleção primária e a área de transferência é colada quando seleciono algo antes de clicar com o botão direito e colar. Agora está claro: antes dePRIMÁRIO .
Enrico Maria De Angelis
12

Você pode fazer uma cópia urxvt para a Primária e a Área de transferência com a extensão de perl de seleção para a área de transferência. Isso os mantém sincronizados, então você apenas copia uma vez no urxvt e deve funcionar em aplicativos que os utilizam.

URxvt.perl-ext-common: selection-to-clipboard
degenerateJoe
fonte
2
Posso alterar o atalho para esta extensão? Eu não gosto do padrão ctrl-alt-c / v. Eu gostaria de ter ctrl-shift-c / v.
Trismegistos
3
@Trismegistos, ter um loook aqui
Coder