Execute External com buffer específico no vim

0

Digamos que eu tenha mais de um buffer aberto em uma janela diferente.

Como posso executar um comando externo com um buffer específico como argumento?

Digamos que eu queira executar :!g++ "buffer no"

Como fazer isso?

    
por staRain 15.07.2014 / 19:59

1 resposta

2

Seu comando externo não poderá fazer nada com um número de buffer, você precisará passar um nome de arquivo como argumento. Você pode usar bufname() para obter o nome do buffer de um buffer específico:

:execute "!g++ " . bufname(2)

Veja :help bufname() .

Observe que, devido a coisas diferentes (suas opções path principalmente, mas também do seu compilador), o nome do buffer pode ou não ser exatamente o que você deseja. Você pode usar fnamemodify() para remover partes de seu caminho ou transformar um caminho relativo em um absoluto ou qualquer outro:

:execute "!g++ " . fnamemodify(bufname(2), ':p:h')

Veja :help fnamemodify() e o link :help filename-modifiers .

    
por 15.07.2014 / 21:07

Tags