改行を削除するには、シェルコマンドを使用します(KDEグローバルショートカットで機能する必要があります)

改行を削除するには、シェルコマンドを使用します(KDEグローバルショートカットで機能する必要があります)

現在選択されているテキストから改行を削除するには、ショートカットが必要です。私は私のコマンドをKDEグローバルショートカットに入れたいのですが、その方法をすでに知っています。私が思いついた命令は次のとおりです。

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

目的は、現在の選択をパイプで連結して行末のハイフンをtr削除し(そして部分を連結し)、残りの改行を空白に変更し、クリップボードに(フォーカスがある場所に)貼り付けることです。

問題:改行文字を空白に置き換えないでください。 tr "\n" "\ "。そうする代わりに、改行文字を何も置き換えません。さまざまな空間表現を試しましたが、そのうち何も機能しませんでした。

私は試してみましたが、xdotool typeこれはすべての空白を食べて、使用せずにすべてを一緒に実行しますtr

私はクリップボードの代わりに選択肢(デフォルトまたはセカンダリ)を使用することを好み、可能であればそれを使用する必要はありませんxdotool key ctrl+vxdotoolスペースを処理する方法が私の経験上予期しないものであるため、完全に避けることができればより良いでしょう。

まだインストールしておらず、xvkbdインストールしたくありません。ただし、役に立つ場合はインストールできます。コピーPython-pyperclipまたはxorg-xクリップボード。主なArchリポジトリには、私が考慮できる他のツールがあります。

答え1

これが私が思いついたものです:

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

私は最初のものをperlに置き換えましたtrtrシーケンスが-\n文字列ではなく2つの別々の文字として扱われることがわかりました。

ここでPerlの提案を見つけました。
https://stackoverflow.com/a/7697604/463994

単一のPerlコマンドを使用してこれを行う方法があるかもしれませんが、それについてはわかりません。より良い答えを受け入れます。

編集:これより良いソリューションありがとう、Rakesh Sharma(コメントを参照):

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

xdotool key AltAltキーの組み合わせにバインドされたショートカットがあり、Altキーをクリアする必要があるため、これを追加しました。

関連情報