Preciso de um atalho para retirar novas linhas do texto na seleção atual. Quero colocar meu comando em um atalho global do KDE, o que já sei fazer. O comando que eu criei é:
sh -c 'xclip -o -sel p | tr -d "\-\n" | tr "\n" "\ " | xclip -sel c; xdotool key --clearmodifiers ctrl+v'
O objetivo é pegar a seleção atual e canalizá-la tr
para remover a hifenização de fim de linha (e juntar os fragmentos), depois substituir as novas linhas restantes por espaços, depois colocar isso na área de transferência e colá-lo (onde quer que o foco esteja ).
O problema: não está substituindo novas linhas por espaços tr "\n" "\ "
. Em vez de fazer isso, ele substitui as novas linhas por nada. Eu tentei todos os tipos de representações de um espaço, e nenhuma delas funcionou
Eu tentei xdotool type
, mas isso consome todo o espaço em branco e roda tudo junto mesmo sem o uso do tr
.
Eu preferiria usar a seleção (primária ou secundária) em vez da área de transferência, e não ter que usar xdotool key ctrl+v
se possível. Melhor ainda se eu puder evitar xdotool
totalmente devido à maneira inesperada como ele lida com os espaços em branco na minha experiência.
Não tenho xvkbd
instalado e prefiro não instalar. No entanto, se ajudar, posso instalarcopiarq,python-pyperclip, ouxorg-xclipboard. Também posso considerar outras ferramentas nos repositórios principais do Arch.
Responder1
Aqui está o que eu descobri:
sh -c 'xclip -o -sel p | perl -p -e "s/-\n//g"| tr "\n" " "| xclip -sel c; xdotool key --clearmodifiers ctrl+v'
Substituí o primeiro tr
por perl. Percebi que tr
estava vendo a sequência -\n
como dois caracteres independentes em vez de uma string.
Encontrei a sugestão perl aqui:
https://stackoverflow.com/a/7697604/463994
Provavelmente existe uma maneira de fazer isso com um único comando perl, mas não sei. Aceitarei respostas melhores.
EDITAR: aqui está omelhor solução, graças a Rakesh Sharma (ver comentários):
sh -c 'xclip -o -sel p | perl -pe "s/-\n// || s/\n/ /" | xclip -sel c; xdotool key --clearmodifiers ctrl+v; xdotool key Alt'
Eu adicionei xdotool key Alt
porque tenho o atalho vinculado a uma combinação de teclas Alt e isso é necessário para limpar a tecla Alt.