現在選択されているテキストから改行を取り除くショートカットが必要です。コマンドを 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
し、インストールしたくないのですが、役に立つならインストールできますコピーq、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 に置き換えました。シーケンスを文字列ではなく 2 つの独立した文字として認識しているtr
ことに気付きました。tr
-\n
ここで 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 Alt
ショートカットを Alt キーの組み合わせにバインドしており、Alt キーをクリアする必要があるため追加しました。