Ottieni la parola sotto il cursore in X11


Risposte:


10

Come ottenere il testo attualmente selezionato

Puoi ottenere il testo attualmente selezionato con il comando:

echo $(xclip -o -sel)

... ma dovresti xclipprima installare :

sudo apt-get install xclip

Da man xclip:

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

e:

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

Vedi anche qui o, come sempre man xclip,.


MODIFICARE

Problemi di soluzione con l'ultima selezione

Da un commento, ho capito che xclipgenera l' ultima selezione, anche se non c'è più nulla di selezionato (ad esempio quando il file è chiuso). Questo sembra essere un problema nella tua situazione.

Sebbene xselabbia anche questo problema, può essere aggirato: se creiamo il tuo script non solo leggiamo la selezione corrente nello script, ma scriviamo anche lo stesso contenuto in un file. Possiamo quindi verificare se una nuova selezione è diversa dall'ultima selezione. In caso contrario, possiamo concludere che non viene effettuata alcuna nuova selezione e il comando molto probabilmente produce una selezione obsoleta. Possiamo quindi dire allo script di passare.

Un esempio (utilizzo xsel, che presenta lievi vantaggi in questo caso):

#!/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

Non c'è bisogno di dire che avresti bisogno di installare xsel:

sudo apt-get install xsel

C'è un modo per farlo senza selezione?
UniversallyUniqueID

1
@BharadwajRaju Mi sorprenderebbe davvero, con quale attuale applicazione comunicare? Non lo sapresti! Richiederebbe un riconoscimento globale del testo su ciò che accade sullo schermo. E anche allora ... Non vedo che accada.
Jacob Vlijm,

C'è un modo per scoprire se c'è del testo attualmente selezionato? Perché anche se non ce ne sono, xcliprestituisce l' ultimo testo selezionato.
UniversallyUniqueID

@BharadwajRaju guarda il mio aggiornamento.
Jacob Vlijm,

A volte (in modo casuale) ritorna Error: Target STRING not availableed esce.
UniversallyUniqueID,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.