Làm cách nào để sao chép toàn bộ lịch sử của bảng tạm vào tệp văn bản?


10

Tôi muốn dán toàn bộ lịch sử clipboard của mình bao gồm các từ được sao chép (Ctrl + C / theo lựa chọn) trong các phiên đọc của tôi. Tôi đã cài đặt các chương trình như Glippy và ClipIt nhưng tôi không thể tìm ra cách dán tất cả các từ, nếu từng tồn tại một tùy chọn như vậy trong các chương trình này, tôi sao chép vào một tệp văn bản đơn giản, không phải một từ một lần. Ai đó có thể giúp tôi không?

Cảm ơn bạn!


clipit lưu trữ lịch sử của nó trong ~ / .local / share / clipit / history, định dạng có một số ký tự điều khiển, bạn có thể có thể phân tích chúng ra sed, nhưng điều đó hơi phức tạp
bartekbrak

Câu trả lời:


5

Bạn có thể thấy một số chuỗi trong tệp lịch sử clipit bằng lệnh này:

strings ~/.local/share/clipit/history

Nhưng nó không phải là cách tốt nhất. Đầu ra có thể bị cắt xén.


3

Có kịch bản python cho ClipIt chạy nó như thế này python cliphist.py > clipit.history.txt

#!/usr/bin/env python
"""cliphist.py: utility to print clipit history file.
If an argument is passed on the command line, it will
be used as a separator, otherwise history items are
separated by a blank line. """

import struct, os, sys

homedir  = os.environ['HOME']
histfile = homedir + '/.local/share/clipit/history'
if len(sys.argv) > 1:
    sep = sys.argv[1]
else:
    sep = '---------------------------------------------------------------------'


with open(histfile,'rb') as f:
    f.read(68)
    size,_ = struct.unpack('2i',f.read(8))
    while (size > 0):
        item = f.read(size)
        print item
        _,_,_,size,_ = struct.unpack('5i',f.read(20))
        if size > 0: 
            print sep

chưa thử, nhưng có vẻ đúng và trả lời câu hỏi (liên quan đến Clipit)
user7610

2

Phiên bản mới nhất của Parcellite có mục menu Save As khi nhấp vào biểu tượng. Điều này sẽ lưu tất cả các mục lịch sử vào một tập tin. Ngoài ra còn có một dán tất cả khi nhấp chuột phải vào danh sách lịch sử, sẽ đặt toàn bộ danh sách lịch sử vào bảng tạm. Các tùy chọn có một dấu phân cách Paste All mà nó sẽ đặt ở cuối mỗi mục.

https://sourceforge.net/projects/parcellite/files/parcellite/parcellite-1.1.1/ ppa tại đây: https://launchpad.net/~rickyrockrat/+archive/ppa


1

Cài đặt Trình quản lý bảng kẹp Klipper của KDE Cài đặt klipper và sử dụng tập lệnh đơn giản sau:

text="nothing yet"
cnt=0
while [ "$text" != "" ]; do
  text=`qdbus org.kde.klipper /klipper getClipboardHistoryItem $cnt`
  echo "==== Clipboard content line $cnt:"
  echo "$text"                      # to terminal output
  echo "$text" > /path/to/file      # to file (EDIT this)
  cnt=$((cnt + 1))
done

Lưu ý: Điều này không hoạt động tốt trong Unity nên có vẻ như vậy. Vì vậy, trong các môi trường máy tính để bàn khác ngoài KDE: số dặm của bạn có thể thay đổi .


FWIW, một người nào đó gặp vấn đề với Klipper và Unity: askubfox.com/questions/439303/ Đổi
Sparhawk

0

người dùng Parcellite, nhấp chuột trái vào biểu tượng của nó, "xóa", chọn số lần bạn muốn, sau đó, "chỉnh sửa bảng tạm" và sao chép tất cả! Hãy nhớ đặt ưu tiên: sử dụng lựa chọn chính, để sao chép văn bản dễ dàng hơn!


Chào Acquarius! Cảm ơn bạn rất nhiều vì đã trả lời. Tuy nhiên, khi tôi bấm chỉnh sửa clipboard tôi chỉ thấy từ cuối cùng tôi đã sao chép chứ không phải toàn bộ danh sách. Có lẽ với bạn nó hoạt động một cách khác? Có lẽ tôi phải cấu hình một cái gì đó trong sở thích.
pandisvezia

có tập tin ~ / .local / share / parcellite / lịch sử này, vấn đề là nó có các ký tự không thể in được để xuống dòng và như vậy .. bạn có thể thử autoReplacing / xóa chúng nhưng bây giờ bắt đầu này để có được lộn xộn ...
Bảo Bình điện

0

Mã được sửa đổi từ @ stepan-shamaiev cho Python 3và không có cài đặt dấu phân cách:

#!/usr/bin/env python3
"""cliphist.py: utility to print clipit history file."""

import struct, os

homedir  = os.environ['HOME']
histfile = homedir + '/.local/share/clipit/history'

with open(histfile,'rb') as f:
  f.read(68)
  size, _ = struct.unpack('2i', f.read(8))
  while size > 0:
    item = f.read(size)
    print(item.decode())
    _,_,_,size,_ = struct.unpack('5i',f.read(20))
    if size > 0: 
      print('------------------')
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.