Створіть інтерактивні посилання в терміналі


13

Чи можливо обробити / перетворити вихідний результат grep (або створити grepподібні результати, знаходячи рядки та / або шаблони у файлах, іншим способом) таким чином, що результати пошуку можуть використовуватися як посилання (тобто гіперпосилання) для відкриття редактора? Я хочу натиснути на результат у своєму результаті та відкрити редактор у вибраному рядку.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);

Я знаю, як зареєструвати протоколи в системі, щоб відкрити редактор. Наприклад, усі URL-адреси, як sblm://*у моїй системі, відкриваються в Sublime Text. Моє запитання: як створити власні посилання в терміналі guake (або, можливо, це не залежить від землетрусу і працює для термінальної програми за замовчуванням)?

Примітка: пов'язане (?) Запитання: чи існує термінальна програма, яка дозволяє натискати назви файлів? , є розпливчастим щодо конкретних деталей щодо впровадження / рішення та не вказує прямо мою вимогу перейти безпосередньо до визначеного рядка у файлі.


Відповіді:


4

Більш нова версія терміналу GNOME тепер підтримує гіперпосилання з користувальницькою ціллю через певні послідовності виходу. Спробуйте

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

Відкриття цих робіт відбувається так само, як описано у відповіді Стівена Кітта. Для вирішення описаної проблеми ви можете використовувати сценарій sed (або якийсь більш досконалий метод) для перекладу імен файлів у гіперпосилання. Для мене наступна робота (в основному, і якщо припустити, що вищезгаданий спосіб створення гіперпосилань працює)

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

(У мене не встановлено піднесеного, але, швидше за все, ви можете просто змінити файл: на slbm :)

Дивіться також: https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda (Це ґрунтується на моїй відповіді на Терміналі - створюйте гіперпосилання )


Дивіться також purpleidea.com/blog/2018/06/29/hyperlinks-in-gnome-terminal щодо функції urlencodebash, яка робить роботу правильно, коли у імен каталогу / файлів є пробіли чи інші цікаві символи.
Маріус Гедмінас

3

Це комп'ютер; ви можете це запрограмувати. :-)

Зробити щось "натискає" означає або програмувати додаток GUI, або якось використовувати HTML. Найпростішим способом, який я можу придумати, було б генерувати HTML-сторінку HREF, та передавати вихід, скажімо, на рись , налаштовуючи браузер для відповідного відкриття emacs .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.