Utwórz klikalne linki w terminalu

13

Czy można przetwarzać / przekształcać dane wyjściowe grep (lub uzyskiwać grepwyniki podobne do wyszukiwania, znajdowanie ciągów i / lub wzorców w plikach, w inny sposób), tak aby wyniki wyszukiwania mogły być użyte jako linki (tj. Hiperłącza) do otwarcia edytora? Chcę kliknąć na w wyniku i otworzyć mój edytor w wybranej linii.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);

Wiem, jak zarejestrować protokoły w systemie, aby otworzyć edytor. Na przykład wszystkie adresy URL jak sblm://*w moim systemie są otwarte w Sublime Text. Moje pytanie brzmi: jak tworzyć niestandardowe łącza w terminalu Guake (a może nie zależy to od quake i działa w domyślnym programie terminali)?

Uwaga: powiązane (?) Pytanie: Czy istnieje aplikacja terminalowa, która umożliwia klikanie nazw plików? , jest niejasny w odniesieniu do konkretnych szczegółów implementacji / rozwiązania i nie wspomina wyraźnie o moim wymaganiu przejścia bezpośrednio do określonej linii w pliku.

Kein
źródło

Odpowiedzi:

4

Nowsza wersja terminala GNOME obsługuje teraz hiperłącza z niestandardowym celem poprzez określone sekwencje specjalne. Próbować

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

Otwarcie tych działa w taki sam sposób, jak opisano w odpowiedzi Stephen Kitt. Aby rozwiązać opisany problem, możesz użyć skryptu sed (lub innej bardziej zaawansowanej metody) do przetłumaczenia nazw plików na hiperłącza. Dla mnie następujące zadanie (w bash i zakładanie powyższego sposobu tworzenia hiperłączy działa)

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

(Nie mam zainstalowanego wzniosłego, ale najprawdopodobniej możesz po prostu zmienić plik: na slbm :)

Zobacz także: https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda (To jest oparte na mojej odpowiedzi w Terminalu - utwórz hiperłącza )

alfanum
źródło
Zobacz także purpleidea.com/blog/2018/06/29/hyperlinks-in-gnome-terminal na temat urlencodefunkcji bash, która sprawia, że ​​wszystko działa poprawnie, gdy w nazwach katalogów / plików znajdują się spacje lub inne ciekawe znaki.
Marius Gedminas
3

To jest komputer; możesz to zaprogramować. :-)

Stworzenie czegoś „klikalnego” oznacza albo zaprogramowanie aplikacji GUI, albo użycie HTML. Najprostszym sposobem, jaki mogę wymyślić, jest wygenerowanie strony HTML HREF-ów i potokowanie danych wyjściowych do, powiedzmy, rysia , skonfigurowanie przeglądarki tak, aby odpowiednio otwierała emacsa .

James K. Lowden
źródło