Insere a saída de um comando do sistema na localização atual no vim

13

No vim, quando eu uso

:r !ls somefilename

insere a saída desse comando em uma nova linha abaixo da linha atual.

Se eu fizer

let @a = system("ls")

e mais tarde

"ap

ainda insere a saída em uma nova linha abaixo da linha atual.

Existe uma maneira de fazer o vim inserir a saída na localização atual?

    
por deshmukh 25.08.2012 / 07:59

3 respostas

11

Você pode colar o conteúdo do buffer da área de transferência entre os caracteres com Ctrl-R * no modo de inserção (e uma abordagem semelhante para outros buffers). Então, se você conseguir colocar o comando do sistema em um buffer, você deve estar configurado. (Fonte: link ).

:let @a=system("ls -l") colocará a saída de ls -l no registro a . Você pode então colá-lo (no modo de inserção) com ^R-a .

    
por Steve Kroon 05.09.2012 / 10:24
21
:r !command 

lerá a saída do comando e a inserirá na linha abaixo da linha atual. É assim que o vi é programado, você não pode mudar o comportamento.

Mas diga se você está na linha número 3. Se você tentar :r !date . Ele inserirá o valor da data na linha número 4.

Se você quiser que o valor de data seja exibido na linha número 3, tente :2r !date para inserir o valor da data na linha número 3.

    
por devav2 25.08.2012 / 08:16
6

Aqui está uma maneira alternativa de colar a saída do comando externo antes do cursor:

:exe 'norm i' . system("ls -l")

ou use o registro de expressão ( :help @= ):

"=system('ls -la')

então aperte P . Ou caminho mais curto por:

<CTRL-R>=system('ls -la')<CR>
    
por kenorb 18.10.2015 / 01:49