No Vim, qual é uma maneira elegante de obter resultados da linha de comando?

14

Se eu estiver no Vim e quiser obter alguma saída da linha de comando e anexá-la ao meu arquivo atual, eu posso executar isso:

:! echo "foo" >> %

Isso acrescentará "foo" ao meu arquivo atual e terei que recarregar.

Existe uma maneira mais elegante de fazer isso - essa saída entra em um buffer que eu possa colar, por exemplo?

Nathan Long
fonte

Respostas:

24

Sim:

:r !echo "foo"

Vejo

:help :r!

Isso irá inserir a saída do comando após a linha atual. Se você quiser capturar a saída do comando em um registro que possa colar, faça o seguinte:

:let @a = system('echo "foo"')

Agora a saída do comando (incluindo a nova linha à direita) está registrada a. Vejo

:help let-@
:help system()
garyjohn
fonte
Depois de olhar para a ajuda e experimentar, vejo que 1) :ré a abreviação de "read" (para que você possa digitar 'read' ou apenas 'r' e é o mesmo comando) e 2) fazer :r path/to/foo.txtirá inserir o conteúdo desse arquivo após o cursor.
Nathan Long
Além disso - eu não sabia sobre a systemligação. Fantástico!
Nathan Long
11
Eu também não sabia que você poderia definir manualmente registros como let @a = 'foo'. Uma idéia interessante seria: depois de fazer uma pesquisa e substituir, você pode salvar o termo de pesquisa em um registro para colar em outro lugar, fazendo let @a = @/- "faça com que o registro a contenha o que o registro / contém, ou seja, minha última pesquisa".
Nathan Long
11
@ Nathan Long: De nada. Outras maneiras de colar a partir do / register são 1) executar :put /para colocar o conteúdo do registro na próxima linha e 2) enquanto estiver no modo de inserção, digite Ctrl-R seguido por /para inserir o conteúdo do registro na posição do cursor. Para mais informações, consulte :help :pute :help i_CTRL-R.
precisa saber é o seguinte