在终端中创建可点击的链接


13

是否可以处理/转换来自grep (或产生grep类似结果,在文件中查找字符串和/或模式,以其他方式)的输出,以便可以将搜索结果用作打开编辑器的链接(即超链接)?我想单击结果中的a ,然后在所选行中打开编辑器。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);

我知道如何在系统中注册协议以打开编辑器。例如,所有类似sblm://*我系统中的URL都会在Sublime Text中打开。我的问题是:如何在guake终端中创建自定义链接(或者它不依赖于地震并且适用于默认终端程序)?

注意:相关(?)问题,是否存在允许文件名可单击的终端应用程序?,在具体的实现/解决方案细节上含糊不清,并且没有明确提及我直接跳转到文件中已标识的行的要求。


Answers:


4

较新版本的GNOME终端现在通过某些转义序列支持具有自定义目标的超链接。尝试

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

打开这些作品的方式与Stephen Kitt的答案中所述的相同。为了解决您描述的问题,您可以使用sed脚本(或更高级的方法)将文件名转换为超链接。对我来说,以下工作(在bash中并假设上述创建超链接的方法有效)

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

(我没有安装sublime,但很可能您可以将file:更改为slbm :)

另请参阅:https : //gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda (这基于我在Terminal上的回答-创建超链接


另请参见purpleidea.com/blog/2018/06/29/hyperlinks-in-gnome-terminal,了解urlencodebash函数,当目录/文件名中包含空格或其他有趣字符时,bash函数可以正常工作。
Marius Gedminas,

3

这是一台电脑;您可以对其进行编程。:-)

使某些东西“可单击”意味着对GUI应用程序进行编程或以某种方式使用HTML。我能想到的最简单的方法是生成HREF的HTML页面,并将输出通过管道传递给lynx,从而配置浏览器以适当地打开emacs

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.