Crea collegamenti cliccabili nel terminale


13

È possibile elaborare / trasformare l'output da grep (o produrre greprisultati simili a quelli, trovare stringhe e / o pattern nei file, in qualche altro modo) in modo tale che i risultati della ricerca possano essere usati come link (cioè hyperlink) per aprire un editor? Voglio fare clic su a nel mio risultato e aprire il mio editor nella riga selezionata.filename:line_numbergrep

$ grep "mServiceIntent" -R ./src/
./src/example/PhotoThumbnailFragment.java:67    private Intent mServiceIntent;
./src/example/PhotoThumbnailFragment.java:194        mServiceIntent =
./src/example/PhotoThumbnailFragment.java:203        getActivity().startService(mServiceIntent);

So come registrare i protocolli nel sistema per aprire l'editor. Ad esempio, tutti gli URL come sblm://*nel mio sistema si aprono in Sublime Text. La mia domanda è: come creare collegamenti personalizzati nel terminale guake (o forse non dipende dal terremoto e funziona per il programma terminale predefinito)?

Nota: la relativa domanda (?), Esiste un'app terminale che consente di fare clic sui nomi dei file? , è vago su specifici dettagli di implementazione / soluzione e non menziona esplicitamente il mio requisito di passare direttamente a una riga identificata nel file.


Risposte:


4

La versione più recente del terminale GNOME ora supporta i collegamenti ipertestuali con destinazione personalizzata tramite determinate sequenze di escape. Provare

echo -e '\e]8;;http://example.com\aThis is a link\e]8;;\a'

L'apertura di questi funziona come descritto nella risposta di Stephen Kitt. Per risolvere il problema che hai descritto, puoi utilizzare uno script sed (o un metodo più avanzato) per tradurre i nomi dei file in collegamenti ipertestuali. Per me il seguente fa il lavoro (in bash e assumendo il modo sopra per creare collegamenti ipertestuali)

grep "mServiceIntent" -R ./src/ | sed -e $'s#^\(.*\):#\e]8;;file:'`pwd`/$'\\1\a\\1\e]8;;\a#'

(Non ho installato sublime ma molto probabilmente puoi semplicemente cambiare file: in slbm :)

Vedi anche: https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda (si basa sulla mia risposta al terminale - crea collegamenti ipertestuali )


Vedi anche purpleidea.com/blog/2018/06/29/hyperlinks-in-gnome-terminal per la urlencodefunzione bash che fa funzionare correttamente le cose quando hai spazi o altri caratteri interessanti nei nomi di directory / file.
Marius Gedminas,

3

È un computer; puoi programmarlo. :-)

Rendere qualcosa "cliccabile" significa programmare un'applicazione GUI o in qualche modo usare HTML. Il modo più semplice a cui riesco a pensare sarebbe quello di generare una pagina HTML di HREF e reindirizzare l'output, diciamo, alla lince , configurando il browser per aprire Emacs in modo appropriato.

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.