Entfernen Sie Zeilenumbrüche mit einem Shell-Befehl (muss in einer globalen KDE-Verknüpfung funktionieren)

Entfernen Sie Zeilenumbrüche mit einem Shell-Befehl (muss in einer globalen KDE-Verknüpfung funktionieren)

Ich brauche eine Tastenkombination, um Zeilenumbrüche aus dem Text in der aktuellen Auswahl zu entfernen. Ich möchte meinen Befehl in eine globale KDE-Tastenkombination einfügen, und ich weiß bereits, wie das geht. Der Befehl, den ich gefunden habe, lautet:

sh -c 'xclip -o -sel p | tr -d "\-\n"  | tr "\n" "\ " | xclip -sel c; xdotool key --clearmodifiers ctrl+v'

Dadurch soll die aktuelle Auswahl übernommen und weitergeleitet werden, trum die Silbentrennung am Zeilenende zu entfernen (und die Fragmente zu verbinden). Anschließend sollen die verbleibenden Zeilenumbrüche durch Leerzeichen ersetzt und dies anschließend in die Zwischenablage kopiert und (wo auch immer der Fokus liegt) eingefügt werden.

Das Problem: Zeilenumbrüche werden nicht durch Leerzeichen ersetzt tr "\n" "\ ". Stattdessen werden Zeilenumbrüche durch nichts ersetzt. Ich habe alle möglichen Darstellungen eines Leerzeichens ausprobiert, und keine davon funktioniert

Ich habe es versucht xdotool type, aber das frisst den gesamten Leerraum und lässt alles zusammenlaufen, auch ohne die Verwendung von tr.

Ich würde lieber die Auswahl (primär oder sekundär) anstelle der Zwischenablage verwenden und xdotool key ctrl+vwenn möglich nicht verwenden müssen. Noch besser, wenn ich es xdotoolaufgrund der unerwarteten Art und Weise, wie es meiner Erfahrung nach mit Leerzeichen umgeht, ganz vermeiden kann.

Ich habe es nicht xvkbdinstalliert und möchte es auch nicht installieren. Wenn es jedoch hilft, kann ich es installierenkopierenq,Python-Pyperclip, oderxorg-xclipboard. Ich kann auch andere Tools in den wichtigsten Arch-Repos in Betracht ziehen.

Antwort1

Folgendes ist dabei herausgekommen:

sh -c 'xclip -o -sel p | perl -p -e "s/-\n//g"|  tr "\n" " "| xclip -sel c; xdotool key --clearmodifiers ctrl+v'

Ich habe das erste trdurch Perl ersetzt. Dabei fiel mir auf, dass die Sequenz als zwei unabhängige Zeichen und nicht als Zeichenfolge trangesehen wurde .-\n

Ich habe den Perl-Vorschlag hier gefunden:
https://stackoverflow.com/a/7697604/463994

Es gibt wahrscheinlich eine Möglichkeit, dies mit einem einzigen Perl-Befehl zu tun, aber ich kenne sie nicht. Ich akzeptiere bessere Antworten.

EDIT: hier ist diebessere Lösung, Dank an Rakesh Sharma (siehe Kommentare):

sh -c 'xclip -o -sel p | perl -pe "s/-\n// || s/\n/ /" | xclip -sel c; xdotool key --clearmodifiers ctrl+v; xdotool key Alt'

Ich habe es hinzugefügt xdotool key Alt, weil ich die Tastenkombination an eine Alt-Tastenkombination gebunden habe und diese zum Löschen der Alt-Taste erforderlich ist.

verwandte Informationen