Umieść słowo pod kursorem w X11


Odpowiedzi:


10

Jak uzyskać aktualnie zaznaczony tekst

Możesz pobrać aktualnie zaznaczony tekst za pomocą polecenia:

echo $(xclip -o -sel)

... ale najpierw musisz zainstalować xclip:

sudo apt-get install xclip

Od man xclip:

-o, -out
    prints the selection to standard out (generally for piping to a file or program) 

i:

-selection
    specify which X selection to use, options are "primary" to use XA_PRIMARY (default), "secondary" for XA_SECONDARY or "clipboard" for XA_CLIPBOARD

Zobacz również tutaj lub, jak zawsze man xclip.


EDYTOWAĆ

Problemy z obejściem ostatniego wyboru

Z komentarza zrozumiałem, że xclipwypisuje ostatni wybór, nawet jeśli nic już nie jest zaznaczone (np. Kiedy plik jest zamknięty). To wydaje się być problemem w twojej sytuacji.

Chociaż występuje xselrównież ten problem, można go obejść: jeśli sprawimy, że skrypt nie tylko wczyta bieżący wybór do skryptu, ale także zapisze tę samą zawartość do pliku. Następnie możemy sprawdzić, czy nowy wybór różni się od ostatniego wyboru. Jeśli nie, możemy stwierdzić, że nie dokonano żadnego nowego wyboru, a polecenie najprawdopodobniej wywołuje nieaktualne zaznaczenie. Następnie możemy nakazać skryptowi przejście.

Przykład (użycie xsel, które w tym przypadku ma niewielkie zalety):

#!/bin/bash

# make sure the file to store the last selection exists
f=~/.old_sel
touch $f
# get the previous & current selection
old=$(cat "$f"); new=$(xsel -o)

if [ "$old" != "$new" ]; then
  # if selection changed, store the new selection to remember
  echo "$new" > "$f"
  # do the action, whatever that may be
  echo $new
fi

Nie musisz mówić, że musisz zainstalować xsel:

sudo apt-get install xsel

Czy można to zrobić bez wyboru?
UniversallyUniqueID

1
@BharadwajRaju To by mnie naprawdę zaskoczyło, z jaką obecną aplikacją się komunikować? Nie wiedziałbyś! Wymagałoby to globalnego rozpoznania tekstu na temat tego, co dzieje się na ekranie. I nawet wtedy ... Nie widzę, żeby to się stało.
Jacob Vlijm

Czy istnieje sposób, aby sprawdzić, czy jest aktualnie wybrany tekst? Ponieważ nawet jeśli nie ma, xclipzwraca ostatni zaznaczony tekst.
UniversallyUniqueID

@BharadwajRaju zobacz moją aktualizację.
Jacob Vlijm

Czasami (losowo) wraca Error: Target STRING not availablei wychodzi.
UniversallyUniqueID
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.