現在の選択範囲のテキストから改行を削除するためのショートカットが必要です。コマンドを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+v
を使用する必要がないようにします。私の経験では、予期しない方法で空白を処理するため、xdotool
を完全に回避できればさらに良いでしょう。
xvkbd
をインストールしていないので、インストールしたくないです。ただし、それが役立つ場合は、 copyq 、 python-pyperclip 、または xorg-xclipboard をインストールできます。メインのArchリポジトリにある他のツールも検討できます。
これが私が思いついたものです:
sh -c 'xclip -o -sel p | Perl -p -e "s/-\n//g"| tr "\n" " "| xclip -sel c; xdotool key --clearmodifiers ctrl+v'
最初のtr
をPerlに置き換えました。 tr
がシーケンス-\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'
Altキーの組み合わせにショートカットがバインドされており、Altキーをクリアするために必要なため、xdotool key Alt
を追加しました。