ターミナルでクリック可能なリンクを作成する


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);

システムにプロトコルを登録してエディターを開く方法を知っています。たとえばsblm://*、私のシステムのようなすべてのURL はSublime Textで開きます。私の質問は:guakeターミナルでカスタムリンクを作成する方法です(または、地震に依存せず、デフォルトのターミナルプログラムで動作する可能性があります)。

注:related(?)質問、ファイル名をクリック可能にするターミナルアプリはありますか?、特定の実装/ソリューションの詳細についてはあいまいであり、ファイル内の識別された行に直接ジャンプするという私の要件に明示的に言及していません。


回答:


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#'

(私は崇高なものをインストールしていませんが、おそらくfile:をslbmに変更するだけです:)

参照:https : //gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda (これはターミナルでの私の答えに基づいています-ハイパーリンクを作成します


ディレクトリ/ファイル名にスペースまたはその他の興味深い文字がある場合に物事を正しく動作させるbash関数については、purpleidea.com / blog / 2018/06/29 / hyperlinks-in-gnome-terminalも参照してくださいurlencode
マリウスゲドミナス

3

それはコンピューターです。あなたはそれをプログラムすることができます。:-)

「クリック可能」にするには、GUIアプリケーションをプログラミングするか、何らかの方法でHTMLを使用します。私が考えることができる最も簡単な方法は、HREFのHTMLページを生成し、出力をlynxなどにパイプして、ブラウザがemacsを適切に開くように設定することです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.