copie e cole as abas entre as janelas do terminal no X11

10

Quando copio e colo texto usando a seleção de mouse X11 entre duas janelas de terminal, as guias geralmente são convertidas em espaços, mas nem sempre. Isso parece depender dos aplicativos de terminal envolvidos e dos programas executados dentro deles.

Isso é o que descobri por experimentação:

  • Depende apenas do que está sendo executado no lado da origem (cópia). O lado de destino (colar) irá colar os separadores, independentemente do que estiver em execução, se a fonte os preservar.
  • Somente gnome-terminal no lado da fonte preserva as guias. xterm e konsole não.
  • As guias só são preservadas se o arquivo tiver sido produzido usando cat . Outros aplicativos, como less , vim , emacs ou nano , não preservam as guias.

Qual é a explicação para isso? Esses erros estão em konsole e xterm ou podem ser configurados de forma diferente? Pode less e tal ser configurado para preservar as guias na saída?

    
por Peter Eisentraut 10.11.2011 / 15:32

2 respostas

3

Sim, sua observação está correta. O que acontece quando você copia e cola é que o alvo obtém os dados da fonte. Ao exibir suas guias, o xterm (e konsole ), aparentemente, as traduz em espaços (se o aplicativo em execução no terminal não tiver feito isso). Assim, quando chega uma solicitação para o texto selecionado, tudo o que eles têm a oferecer são os espaços.

Eu até me lembro vagamente de uma resposta de um mantenedor do xterm anos atrás, alegando que seria muito difícil consertar ...

Eu não tenho certeza, como gnome-terminal faz a coisa certa, mas eu estou feliz que eles façam :) Outra alternativa é usar gvim (versão gráfica de vim ) - em vez de executar vim dentro de um aplicativo de terminal - você pode copiar e colar com segurança de gvim, sem perder as abas.

    
por 15.10.2014 / 00:19
0

Isso às vezes pode ser um problema, especialmente com Makefiles , que exigem guias. Infelizmente, os problemas com diferentes programas não estão relacionados. Cada um provavelmente terá uma solução muito diferente.

Para o vim, você deve préformar um :set noexpandtab ou colocar set noexpandtab no seu arquivo ~/.vimrc . Se você quiser que apenas determinados tipos de arquivos tenham noexpandtab set, você pode fazer um autocommand no seu ~/.vimrc . Eu tenho o seguinte no meu:

"indenting defaults: 4 spaces for an indent
set shiftwidth=4
set softtabstop=4
set expandtab

"exceptions to indenting for specific languages and files--------
"for shell scripts: 2 spaces for an indent
autocmd filetype sh setlocal shiftwidth=2
autocmd filetype sh setlocal softtabstop=2

"for Makefiles: use tabs for indents
autocmd filetype make setlocal tabstop=8
autocmd filetype make setlocal noexpandtab

Isso definirá um padrão de 4 espaços para uma guia em vim e fará exceções para scripts de shell e Makefiles.

Para os outros programas como less , tente ver as páginas do manual. Eles podem ter arquivos de configuração, variáveis de ambiente ou opções de linha de comando para o que você precisa. Olhando para a página do menos homem:

-xn,... or --tabs=n,...
       Sets tab stops.  If only one n is specified, tab stops  are  set
       at  multiples  of n.  If multiple values separated by commas are
       specified, tab stops are set at those positions, and  then  con-
       tinue  with  the  same  spacing  as  the last two.  For example,
       -x9,17 will set tabs at positions  9,  17,  25,  33,  etc.   The
       default for n is 8.

O que você está percebendo não é um bug. "É uma característica." O único problema é que você precisa saber como desativá-lo.

    
por 02.10.2012 / 20:30