Crie links clicáveis ​​no terminal


13

É possível processar / transformar a saída de grep (ou produzir grepresultados semelhantes, encontrar seqüências e / ou padrões em arquivos, de alguma outra maneira), de modo que os resultados da pesquisa possam ser usados ​​como links (por exemplo, hiperlinks) para abrir um editor? Eu quero clicar em um no meu resultado e abrir o meu editor na linha selecionada.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);

Eu sei como registrar protocolos no sistema para abrir o editor. Por exemplo, todos os URLs como sblm://*no meu sistema são abertos em Sublime Text. Minha pergunta é: como criar links personalizados no terminal guake (ou talvez não dependa do terremoto e funcione no programa padrão do terminal)?

Nota: a pergunta relacionada (?), Existe um aplicativo de terminal que permita que os nomes de arquivos sejam clicáveis? , é vago em detalhes específicos de implementação / solução e não menciona explicitamente meu requisito de ir diretamente para uma linha identificada no arquivo.


Respostas:


4

A versão mais recente do terminal GNOME agora suporta hiperlinks com destino personalizado através de determinadas seqüências de escape. Experimentar

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

A abertura desses trabalhos da mesma maneira descrita na resposta de Stephen Kitt. Para resolver o problema descrito, você pode usar um script sed (ou algum método mais avançado) para converter os nomes de arquivos em hiperlinks. Para mim, o seguinte é o trabalho (no bash e assumindo que a maneira acima para criar hiperlinks funciona)

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

(Eu não tenho sublime instalado, mas provavelmente você pode simplesmente mudar o arquivo: para slbm :)

Veja também: https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda (Isso é baseado na minha resposta no Terminal - crie hiperlinks )


Consulte também purpleidea.com/blog/2018/06/29/hyperlinks-in-gnome-terminal para a urlencodefunção bash que faz as coisas funcionarem corretamente quando você tem espaços ou outros caracteres interessantes nos nomes de diretório / arquivo.
Marius Gedminas

3

É um computador; você pode programá-lo. :-)

Tornar algo "clicável" significa programar um aplicativo GUI ou de alguma forma usar HTML. A maneira mais simples de pensar seria gerar uma página HTML de HREFs e canalizar a saída para, digamos, lynx , configurando o navegador para abrir o emacs adequadamente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.