행을 선택하기 위해 tmux 플러그인을 작성하는 방법이 있습니까?

행을 선택하기 위해 tmux 플러그인을 작성하는 방법이 있습니까?

acme "편집기"에는 다음과 같은 출력을 클릭할 수 있는 훌륭한 기능이 있습니다.

foobar.foo:212

acme는 이 줄 번호에서 파일을 엽니다.

나는 tmux에 이와 같은 지원을 추가하고 싶습니다. (더 이상 그런 것은 존재하지 않는 것 같습니다.)

제가 생각하는 작동 방식은 복사 모드로 들어가서 커서를 한 줄에 놓은 다음 선택한 편집기에서 해당 줄의 해당 파일을 여는 명령을 실행하는 것입니다. 내 질문은 - 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.

관련 정보