行を選択するためにtmuxプラグインを作成する方法はありますか?

行を選択するためにtmuxプラグインを作成する方法はありますか?

acme "エディタ"には、次の出力をクリックするための優れた機能があります。

foobar.foo:212

acmeはこの行番号でファイルを開きます。

私はtmuxにこのようなサポートを追加したいと思います。 (もはやそのようなものは存在しないようです。)

私が考えているのは、コピーモードに入り、カーソルを1行に置き、選択したエディタでその行の対応するファイルを開くコマンドを実行することです。私の質問は - tmuxをフォークしないと、このようなものを実装できないと思います。誰でもどんな提案がありますか?

答え1

私はacmeを使用しませんが、Emacsを使用します。 Emacsでは、openにファイル名を渡すことができます+<LINE_NUM> <FILENAME>。例: +13 ~/HINTS.私のファイルに以下を追加しました~/.tmux.conf

bind C-e run "tmux save-buffer - | xargs emacs"

これで、+1 ~/HINTS端末で作成し、コピーモードに入り、文字列をコピーしてから、C-b C-eEmacsを使用してファイルの行1を開くことができます。~/HINTS

答え2

send-keysin を直接使用することはできませんが、copy-mode次のことができます。

bind-key O send-keys space e enter \; new-window open-at-line \: paste-buffer \; send-keys enter

次に、コピーモードでの最初の文字にカーソルを置き、をクリックしfilename:lineます<prefix> O

これにより、ファイル名と行番号(send-keys space e enter)がコピーされ、コマンドを使用して新しいウィンドウが開きます。open-at-lineこれはシェルスクリプトです。

#!/usr/bin/env zsh
read combo
eval `vim ${combo:s/:/ -c :/}`

filename:lineで結合された内容をpaste-buffer取得してに渡しますvim

関連情報