Vim: automatiza a leitura de linha a partir de um arquivo externo

1

Estou tentando automatizar o seguinte no vim:

:r! sed -n 10p filename

Onde o número da linha (10) está mudando constantemente. Eu estava pensando em algo parecido com

function! GetLine(line, filename)
    :r! sed -n a:line,p a:filename
endfunction

que eu coloquei no meu .vimrc e devidamente originado. Mas quando eu chamo com :call GetLine(10, "testfile.txt") não funciona.

Agora, apesar de eu estar usando o vim por um bom tempo, sou novo no roteiro, então, por favor, fique comigo se eu estiver sentindo falta de algo óbvio.

    
por ManicPolymath 01.08.2013 / 19:03

2 respostas

3

Eu faria algo assim

function! GetLine(line, filename)
    execute 'r! sed -n ' . a:line . 'p ' . a:filename
endfunction

execute executa o seguinte comando ex. Nós geramos o comando ex usando concatenação de strings. . concatena strings e variáveis

Dê uma olhada em :h :execute

    
por 01.08.2013 / 20:11
0

Uma abordagem diferente, mais adequada a um mapeamento, é inserir o número da linha via <C-r> :

:nmap <Leader>r :r! sed -n <C-r>=variable<CR>p filename<CR>
    
por 02.08.2013 / 09:15

Tags