Як скопіювати всю історію буфера обміну в текстовий файл?


10

Я хотів би вставити всю історію буфера обміну, що складається зі слів, скопійованих (Ctrl + C / за вибором) під час моїх сеансів читання. Я встановив такі програми, як Glippy і ClipIt, але не зміг зрозуміти, як вставити всі слова, якщо в цих програмах колись існує така опція, я копіюю в простий текстовий файл відразу, а не на одне слово за раз. Може хтось допоможе мені?

Дякую!


clipit зберігає свою історію в ~ / .local / share / clipit / історії, формат має деякі контрольні символи, можливо, ви можете їх розібрати sed, але це трохи складніше
bartekbrak

Відповіді:


5

Ви можете побачити рядки у файлі історії кліпів із цією командою:

strings ~/.local/share/clipit/history

Але це не найкращий спосіб. Вихід може бути зіпсованим.


4

є сценарій python для ClipIt запустити його так 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

не пробували цього, але це виглядає правильно і відповідає на питання (щодо Clipit)
user7610

2

В останній версії Parcellite є пункт меню "Зберегти як" при натисканні на іконку. Це збереже всі записи історії у файл. При натисканні правою клавішею списку історії правою кнопкою миші вставити все, що розмістить весь список історії у буфері обміну. У налаштуваннях розміщений роздільник "Вставити всі", який він буде розміщено в кінці кожного запису.

https://sourceforge.net/projects/parcellite/files/parcellite/parcellite-1.1.1/ ppa тут: https://launchpad.net/~rickyrockrat/+archive/ppa


1

Встановіть менеджер буфера обміну Klipper KDE Встановіть кліпер та скористайтеся таким простим сценарієм:

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

Примітка: Це не дуже добре поводиться в Єдності, так здається. Так що в інших робочих середовищах, ніж KDE: ваш пробіг може відрізнятися .


FWIW, у когось проблеми з Klipper та Unity: askubuntu.com/questions/439303/…
Sparhawk

0

користувач Parcellite, клацніть лівою кнопкою миші на його значку, «очистити», виберіть скільки разів ви хочете, після цього «редагуйте буфер обміну» і скопіюйте все це! Пам’ятайте про такі налаштування: використовуйте основний вибір, щоб полегшити копіювання тексту!


Привіт Акваріусе! Дуже дякую за відповідь. Однак при натисканні кнопки редагування буфер я бачу лише останнє скопійоване слово, а не весь список. Може, з вами це працює інакше? Можливо, я повинен щось налаштувати в налаштуваннях.
pandisvezia

Тобто цей файл ~ / .local / частка / parcellite / історія, проблема в тому , що є такі друковані символи нового рядка і така .. Ви можете спробувати autoReplacing / стираючи їх , але тепер це починає заплутатися ...
Водолій харчування

0

Змінений код від @ stepan-shamaiev для Python 3та без установки роздільника:

#!/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('------------------')
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.