No vim, quando eu uso
:r !ls somefilename
ele insere a saída desse comando em uma nova linha abaixo da linha atual.
Se eu fizer
let @a = system("ls")
e depois
"ap
ele ainda insere a saída em uma nova linha abaixo da linha atual.
Existe uma maneira de fazer com que o vim insira a saída no local atual?
command-line
vim
deshmukh
fonte
fonte
Respostas:
Você pode colar o conteúdo do buffer da área de transferência entre caracteres com Ctrl-R * no modo de inserção (e uma abordagem semelhante para outros buffers). Portanto, se você pode obter o comando do sistema em um buffer, você deve estar definido. (Fonte: https://stackoverflow.com/questions/1491135/paste-multi-line-string-into-gvim-at-cursor-position ).
:let @a=system("ls -l")
colocará a saída dels -l
no registradora
. Você pode colá-lo (no modo de inserção) com^R-a
.fonte
*
); portanto, se você canalizar sua saída de comando para a área de transferência, ela será"*
utilizada.lerá a saída do comando e a inserirá na linha abaixo da linha atual. É assim que o vi é programado e 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 no número da linha 4.Se você deseja que o valor da data seja exibido na linha número 3, tente
:2r !date
inserir o valor da data na linha número 3.fonte
Aqui está uma maneira alternativa de colar a saída do comando externo antes do cursor:
ou use o registrador de expressão (
:help @=
):então aperte P. Ou de maneira mais curta:
fonte
:exe
) que pode ser incluída nos comandos.