일반 텍스트만 저장되도록 복사/붙여넣기 버퍼를 구성하려면 어떻게 해야 합니까?

일반 텍스트만 저장되도록 복사/붙여넣기 버퍼를 구성하려면 어떻게 해야 합니까?

안타깝게도 5년 전의 질문을 다시 살펴보겠습니다.

복사/붙여넣기 버퍼를 정리하는 방법은 무엇입니까?

아직 답변이 없습니다.

저는 현재 클립보드 관리자로 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

관련 정보