Editor de texto com pesquisa multi-padrão e substituir de uma só vez?

8

Estou procurando um editor de texto GUI que seja capaz de fazer uma pesquisa de múltiplos padrões e substituir tudo de uma vez. Se a fonte for um arquivo de texto, isso pode ser feito no modo de linha de comando com sed , mas o texto vem da área de transferência (sem outra forma possível).

Eu preciso: colar o texto da área de transferência (no máximo 5-50 palavras) no editor de texto, apertar o botão 'substituir' com um conjunto de 10 padrões de substituição predefinidos e copiar o resultado para a área de transferência. Esta sequência será feita cerca de 3000 vezes ...

    
por alwaysask 23.10.2014 / 10:35

3 respostas

13

... por que não usar um script? Verifique xclip ( sudo apt-get install xclip )

 xclip -o -selection clipboard  

enviará a área de transferência para a saída padrão e, com -i , você poderá substituir a área de transferência. Então

 xclip -o -selection clipboard | sed "s/change this/to this/" | xclip -i -selection clipboard 

aplicará a alteração à seleção e, agora, você poderá colá-la.

Se você quiser uma coisa gráfica, você pode incorporar o script com yad :

#! /bin/bash 
#
yad --title Choose --button One:1 --button Two:2 --button Three:3
choice=$?
case $choice in
        1) 
        xclip -o -selection clipboard | 
                sed "s/one/uno/" | 
                xclip -i -selection clipboard
        xclip -o selection clipboard
        ;;
        2)      
        xclip -o -selection clipboard | 
                sed "s/two/dos/" | 
                xclip -i -selection clipboard
        xclip -o selection clipboard
        ;;
        3)
        echo "executing 3 --- well, you got the idea"
        ;;
esac

Isso mostrará uma caixa de diálogo como esta:

Observe que o script modificará o buffer da área de transferência (colar) e o imprimirá. Para incorporar isso em um editor, por exemplo vim , você pode fazer o seguinte:

  1. Adicione ao seu .vimrc :

    nmap <F4> :r ! /path/to/the/script <CR>
    
  2. execute por exemplo gvim.

  3. Agora você copia o texto, vai ao editor, pressiona F4. Escolha a alteração que você deseja aplicar.

  4. O texto aparecerá no editor. Se estiver tudo bem, você pode colá-lo. Caso contrário

  5. Edite o texto e copie-o novamente. (Em gvim , você pode selecionar o texto com o mouse e simplesmente colar - ou aprender os comandos vim , o que for).

Poderia ser otimizado com certeza (você provavelmente pode definir facilmente outra tecla para selecionar e colar o texto modificado para que você tenha menos pressionamento de tecla para usar)

    
por Rmano 23.10.2014 / 10:46
5

Você pode fazer isso tudo na linha de comando, usando algo como xsel ou xclip para recuperar a área de transferência atual e depois inserir o resultado nela. Aqui está um pequeno exemplo que mostra sed sendo usado para fazer várias substituições.

echo -n abc | xsel -bi                               # write to clipboard
xsel -bo | sed 's/abc/def/;s/def/123/' | xsel -bi    # process it
echo $(xsel -bo)                                     # output it for testing

Retorna 123

    
por Oli 23.10.2014 / 10:49
3

Eu apresento a você o editor do Vim! (ou Gvim para a implementação gráfica)

# apt-get install gvim

Com este editor de texto, você pode fazer praticamente tudo. Ele é baseado em atalhos de teclado como i para inserir texto e dd para excluir linhas de texto, dw para excluir palavras, d2w para excluir duas palavras.

No seu caso: para colar o texto do uso da área de transferência "*p

E para substituir o texto use :s/foo/bar/g substituindo foo por bar aqui.

    
por Pascal 23.10.2014 / 10:52