Existe uma maneira que eu possa escrever um plugin tmux para selecionar uma única linha?

2

O "editor" de acme tem esse recurso incrível onde você pode clicar em alguma saída como

foobar.foo:212

e acme abre o arquivo no número da linha.

Adoraria adicionar suporte para algo assim no tmux (não acho que algo como ele já exista)

A maneira como vejo isso funcionando é que você entra no modo de cópia, posiciona o cursor sobre uma linha e, em seguida, executa um comando que abre esse arquivo nessa linha em um editor de sua escolha. Minha pergunta é - eu não vejo de qualquer maneira eu poderia implementar um recurso como esse, sem forking tmux. Alguém tem alguma sugestão?

    
por MattyW 02.03.2015 / 07:30

2 respostas

0

Eu não uso o acme, mas eu uso o Emacs. No Emacs pode-se passar um nome de arquivo para abrir +<LINE_NUM> <FILENAME> , por exemplo: +13 ~/HINTS . Adicionei o seguinte ao meu ~/.tmux.conf :

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

Agora posso apenas escrever +1 ~/HINTS no terminal, entrar no modo de cópia e copiar esta cadeia e pressionar C-b C-e para abrir a linha 1 no arquivo ~/HINTS com o Emacs.

    
por 04.03.2015 / 17:26
0

Você não pode usar send-keys diretamente em copy-mode , mas pode fazer algo assim:

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

Em seguida, no modo de cópia, coloque o cursor na primeira letra de filename:line e pressione <prefix> O .

Isso copiará o nome do arquivo e o número da linha ( send-keys space e enter ), abra uma nova janela com o comando open-at-line , que é um script de shell:

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

Isso obtém o filename:line combinado de paste-buffer e passa isso para vim .

    
por 06.03.2015 / 04:31

Tags