passa o nome do arquivo e a linha atual para o shell script

5

Eu gostaria de passar o nome do arquivo e o número da linha atual onde meu cursor está, separados por dois pontos, para um script de shell externo. Por exemplo, se estou editando o arquivo "foo.c" e atualmente estou na linha 77, gostaria de chamar meu script do vim com o argumento "foo.c: 77".

    
por jpmuc 28.08.2012 / 18:14

2 respostas

5

Uma alternativa à resposta de Karalos:

:call system('echo ' . expand('%') . ':' . line('.'))

Claro, você substitui "echo" pelo nome do seu script de shell.

A vantagem do system () é que ele retorna a saída do comando run, então você pode capturá-lo para uso posterior em um script Vim se precisar.

Você pode precisar examinar os modificadores em :help expand() se precisar qualificar / modificar o nome do arquivo de qualquer forma.

    
por 28.08.2012 / 20:18
1

Embora bastante complicado, você pode tentar o seguinte

:!echo %:<Ctrl+R>=line(".")<CR><CR>

ou você poderia usar uma variável intermediária

:let l=line(".")

e ligue

:!echo %:<Ctrl+R>=l<CR><CR>
    
por 28.08.2012 / 18:27

Tags