Você pode fazer referência a buffers no modo de comando?

7

Eu sei sobre %e #, que referenciam os nomes de arquivo dos buffers atuais e anteriores no modo de linha de comando. Existe alguma maneira de fazer referência semelhante a outros buffers?

Por exemplo, digamos que isso :lsme dê:

1 #h   foo.txt
2  h   bar.txt
3 %a   baz.txt

... e quero usar um comando para o efeito de:

:!pandoc foo.txt bar.txt baz.txt -o out.pdf

Apenas com um pouco menos de digitação. Eu imaginaria algo ao longo das linhas de

:!pandoc b1 b2 b3 -o out.pdf

Assim. Existe algo assim? Existe algum complemento em algum lugar ou algum pedaço útil de vimscript que eu possa usar?

evilsoup
fonte

Respostas:

8

Você pode fazer:

:!pandoc #1 #2 #3 -o out.pdf

Isso é mencionado brevemente na ajuda em :h :_#n.

Se você precisar do caminho completo para o arquivo (digamos, porque alguns dos arquivos estão em diretórios diferentes), você pode anexar da seguinte :pmaneira:

:!pandoc #1:p #2:p #3:p -o out.pdf
Christian Brabandt
fonte
Agradável! Eu não tinha certeza de como encontrar isso nos documentos de ajuda ( :h #traz informações sobre o objeto de modo normal). Às vezes, talvez eu precise do caminho de arquivo completo, o que de acordo com a ajuda seria :!pandoc #1:p #2:p #3:p -o out.pdf.
evilsoup
3
@evilsoup, um bom truque para saber é Ctrl-Dao digitar um comando de ajuda. Ele lista as possíveis conclusões. Tente digitar :h #e pressione Ctrl-D. Observe também que, diferentemente do preenchimento automático do shell, ele lista qualquer tópico de ajuda que contenha a substring digitada - ele não precisa estar no início do nome do tópico de ajuda.
Curinga
@Wildcard obrigado pela dica, que será útil, eu acho.
evilsoup
Você também pode referenciar o nome do arquivo do buffer atual com %e o arquivo alternativo com #. Por exemplo !kdiff3 % #, executará o kdiff3comando com os nomes dos arquivos do buffer atual e o alternativo.
Ruslan