プレーンテキストのみを保存するようにコピー/貼り付けバッファを設定するにはどうすればよいですか?

プレーンテキストのみを保存するようにコピー/貼り付けバッファを設定するにはどうすればよいですか?

残念ながら、5年前の質問をもう一度見てみましょう。

コピー/貼り付けバッファをクリーンアップする方法は?

まだ答えがありません。

私は現在Clipboard ManagerとしてCopyQを使用しており、ほとんどの場合うまくいきます。

CopyQ FAQから:

https://copyq.readthedocs.io/en/latest/faq.html#how-to-store-only-plain-text

残念ながら、このソリューションは機能しません。 LibreOfficeで文書を作成し、フォントとフォントサイズを変更し、LibreOfficeからコピーしてGmailに貼り付けると、同じフォントとフォントサイズが維持されます。

いいえこんなことが起きてほしい。コピー/貼り付けがプレーンテキストでのみ行われるようにしたいと思います。いつも

過去5年間、私の解決策はvimに貼り付けてからもう一度コピーすることでした。これは明らかに時間がかかり、残念なことです。

ここで解決策は何ですか? x.orgレベルのものが理想的なので、クリップボードマネージャとは無関係です(そしてクリップボードマネージャなしで動作します)。

追加のキーボードショートカットも必要なく、一般的な単純な ctrl+c、ctrl+v だけで済みます。

ベストアンサー1

少数のプログラムのみが影響を受ける場合は、貼り付けコマンドを再バインドできます。たとえば、LibreOfficeにはプレーンテキストとして貼り付けるオプションがあります。他のプログラムにも同様のオプションがあります。

プレーンテキストに変換できるクリップボードマネージャを見つけることができませんでしたが、過去にこの機能を使用していたいくつかの機能がわかります。一部のクリップボード管理者はタスクを実行できますが、自動的に実行する方法がわかりません。

だから自分で試してみてください。ほとんどの場合、次のコマンドはクリップボードの内容をプレーンテキストに変換します。主な例外は画像データです。

xclip -o -selection "clipboard" | xclip -i -selection "clipboard"

これにより、クリップボードの変更を確認し、自動的に内容を整理するスクリプトを実行できます。クリップボードマネージャを使用すると、重複したアイテムが作成されます。フォーマットされたバージョンとフォーマットされていないバージョンに分けられます。

#!/usr/bin/env bash

while true ; do
  clipsum_new=$(xclip -o -selection "clipboard" 2> /dev/null | md5sum --)

  if [[ $clipsum_new != $clipsum_old ]] ; then
    echo "Clipboard contents changed."

    clipboard=$(xclip -o -sel "clipboard" 2> /dev/null)
    if [[ $clipboard == "" ]] ; then
      echo "Clipboard empty or contains non-text data."
    elif [[ $clipboard =~ ^/.* ]] ; then
      echo "Clipboard may contain file paths."
    else
      echo "Sanitizing clipboard"
      xclip -o -selection "clipboard" | xclip -i -selection "clipboard"
    fi

    # save new checksum for future comparison
    clipsum_old=$(xclip -o -selection "clipboard" 2> /dev/null | md5sum --)
  fi

  # limit polling rate
  sleep 1
done

おすすめ記事