Crie links clicáveis no terminal

11

É possível processar / transformar a saída de grep (ou produzir grep , como resultados, encontrar strings e / ou padrões em arquivos, alguma outra forma) tal que os resultados da pesquisa pode ser usado como links (por exemplo, hyperlinks) para abrir um editor? Quero clicar em filename:line_number no meu resultado grep e abra meu editor na linha selecionada.

$ 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 no SublimeText. Minha pergunta é: como criar links personalizados no terminal de guache (ou talvez não dependa do tremor e funcione para o programa terminal padrão)?

Nota: a questão relacionada (?), Existe um terminal aplicativo que permite que nomes de arquivos sejam clicáveis? , é vago em detalhes específicos de implementação / solução, e não menciona explicitamente minha exigência tojump diretamente para uma linha identificada no arquivo.

    
por Kein 03.02.2014 / 10:55

2 respostas

3

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

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

    
por 17.02.2016 / 03:05
1

A nova versão do terminal GNOME agora suporta hyperlinks com o alvo personalizado através de certas seqüências de escape. Experimente

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

Abrindo essas obras da mesma forma descrita na resposta de Stephen Kitt. Para resolver o problema descrito, você poderia usar um script sed (ou algum método mais avançado) para converter os nomes dos arquivos em hiperlinks. Para mim o seguinte faz o trabalho (no bash e assumindo que o caminho 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 alterar o arquivo: em slbm:)

Veja também: link (Isso é baseado na minha resposta em Terminal - criar hiperlinks )

    
por 13.04.2018 / 19:09