Есть ли способ сделать ссылку интерактивной в терминале OSX?

Я планирую разработать модуль форматирования Mxmlc to Textmate, который форматирует ошибки mxmlc как интерактивные ссылки, чтобы вы могли быстро открывать их в Textmate, поскольку у Textmate есть схема URL-адресов, например: txmt: // open /? Url = file: // ~ / .bash_profile & line = 11 & column = 2.

Мне интересно, можно ли отображать ссылки в вашем терминале OSX, которые также являются интерактивными, например изменив переменную PS1 или около того.

пс. Я не хочу использовать HTML, работающий в среде Textmate.


person japetheape    schedule 26.02.2010    source источник


Ответы (4)


До OSX Lion:

_1 _ + _ 2 _ + _ 3_ по URL-адресу в Terminal.app, и он откроется в программе по умолчанию.

OSX Lion:

_4 _ + _ 5_ (иначе вы перейдете в полноэкранный режим).

person oops    schedule 26.02.2010
comment
Жаль, что нет способа сделать это, скажем, для открытия ссылок файловой системы в Finder. - person Peter Ehrlich; 11.10.2012
comment
Примечание: это было ⌘ + двойной щелчок на 10.4, измененный на ⌘ + ⇧ + двойной щелчок в 10.5, затем снова в (я думаю) 10.6. Источник: Я сообщил об ошибке в версии 10.5, когда она была выпущена, когда ⌘ + двойной щелчок больше не работал, получил ответ. Теперь это cmd-shift. - person Drarok; 04.07.2013
comment
На самом деле вы можете просто сделать cmd + click - person Steve; 22.01.2016
comment
@oops Есть ли по этому поводу официальная документация Apple? Как ты это понял? - person trinth; 05.09.2018
comment
Есть ли способ заставить bash распечатать его выделенным цветом? Я знаю, что некоторые IDE с оболочками делают это, поэтому полагаю, что это должно быть возможным. - person karl; 07.09.2018
comment
спас мой день, первая попытка Google, нашла ваш ответ - бинго .... вот и все, что мне нужно! - person Florian Eck; 19.04.2019
comment
Это полезная информация, но на самом деле это не ответ на вопрос. - person Leonardo Raele; 28.11.2019
comment
@PeterEhrlich, если у вас есть контроль над ссылками на файловую систему, которые отображаются в вашем Терминале, вы можете добавить к ним файл: //, чтобы он работал. Не удается открыть URL для /Volumes/foo, но не удается открыть file:///Volumes/foo - person Aaron; 13.06.2020
comment
cmd + двойной щелчок работает для большого сюрприза - person Geoff Langenderfer; 22.07.2021

Вы можете щелкнуть правой кнопкой мыши URL-адрес в Терминале, и первая опция в контекстном меню - «Открыть URL-адрес». Не идеально, но, может быть, достаточно хорошо?

person Paul R    schedule 26.02.2010
comment
Нет, поскольку он должен служить моему циклу разработки, этого будет недостаточно. Лучшим решением было бы отображение только текста со ссылкой позади него, которая не отображается, однако, насколько я знаю, я думаю, что это невозможно, надеюсь, вы докажете, что я ошибаюсь ;-). - person japetheape; 26.02.2010
comment
Я всегда сначала выбирал URL-адрес (перетаскивая курсор от начала до конца URL-адреса), а затем щелкал правой кнопкой мыши. Сегодня, читая эти ответы, я узнал, что выбирать URL-адрес необязательно; просто щелкнув правой кнопкой мыши по нему, работает. Это было намного быстрее, но ответ @ oops все же быстрее. - person Jimothy; 28.10.2015
comment
Потрясающие. Неужели я последний в мире, кто выучит этот трюк на собственном опыте? - person AnthumChris; 12.06.2019

Другие обсуждали, как вы можете выбрать и щелкнуть, удерживая Command, текст, который является допустимым URI. Что касается щелчка по встроенной гиперссылке с нажатой клавишей Command, точно так же, как привязка в гипертексте (то есть, когда отображаемый текст не является самим URI), я считаю, что краткий ответ: терминал не может этого сделать, но iTerm2 может.

Bash (или любая другая программа, которая печатает на tty) может выводить соответствующую escape-последовательность для создания интерактивной гиперссылки: это \x1B]8;;URI\x1B\\TEXT\x1B]8;;\x1B\\, где \x1B представляет escape-символ, \\ представляет буквальную обратную косую черту, URI - это URI, на который вы хотите создать ссылку (начиная с https://, file:/// или любого другого символа), а ТЕКСТ - это текст, который вы действительно хотите отобразить, чтобы пользователь мог щелкнуть по нему, удерживая нажатой клавишу Command. (Вы также можете использовать \a, символ предупреждения или звонка вместо обоих экземпляров \x1B\\, но я понимаю, что это менее стандартно.) Например:

См. \ X1B] 8 ;; file: /// путь / к / help / file \ x1B \\ файл справки \ x1B] 8 ;; \ x1B \\ для подробностей.

В Mac OS (X), в моем случае под El Capitan, это отлично работает с iTerm2 и показывает:

Подробнее см. файл справки.

за исключением того, что связанный текст файла справки подчеркнут пунктирной линией, а не курсивом. Щелчок с нажатой клавишей Command в любом месте связанного текста открывает указанный URI в браузере по умолчанию. (Между прочим, это также поведение программы Terminal в Ubuntu Linux.)

В терминале Mac OS (X) вы просто получаете:

Подробности см. В файле справки.

без специальной типографии и без возможности щелкнуть любую его часть, удерживая клавишу Command.

Вы можете получить полную информацию, включая список поддерживаемых терминалов, на https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda.

person Jason Johnston    schedule 26.03.2021

Передайте свой вывод в lynx:

your_command | lynx -use_mouse -stdin
person Dennis Williamson    schedule 26.02.2010
comment
Я пробовал это: echo ‹a href=\'test.com \ '›Test ‹/a› | lynx -use_mouse - stdin Это открывает lynx, это не то, что я хочу, мне нужен вывод прямо в моем терминале. - person japetheape; 26.02.2010
comment
Баш этого не сделает. Я не знаю, почему PS1 имеет к этому какое-то отношение. Я не верю, что Bash вообще поддерживает мышь. Если Terminal.app делает это только щелчком правой кнопки мыши, тогда единственным другим вариантом может быть создание AppleScript, который обеспечит эту функциональность более прямым образом. Или волшебство. - person Dennis Williamson; 26.02.2010