Para inserir a string "hello"
na primeira linha do arquivo j
, você pode digitar em seu shell o seguinte comando:
vim +"1 | put! ='hello'" j
:1
move o cursor para a primeira linha do buffer
:put! ='hello'
cola a string "olá" acima da linha atual
Para inserir a sequência "hello"
e, em seguida, salve e saia do arquivo:
vim +"1 | put! ='hello' | x" j
Assim como antes, acabamos de adicionar o comando Ex :x
que salva e sai.
Em geral, você pode executar qualquer sequência de comandos Ex em um arquivo, em um shell interativo ou em um script bash, como este:
vim +'Ex command1 | Ex command2 | ...' file
Se você tiver muitos comandos Ex, poderá escrevê-los todos em um arquivo dedicado (chamado, por exemplo myExCommands.vim
), um comando por linha e, a partir do shell ou de um script, poderá obtê-lo (com o comando Ex :source
ou a versão curta :so
) como isso:
vim +'so myExCommands.vim' file
Editar
Vejo que você editou sua pergunta.
Acho que a resposta anterior ainda se aplica, porque você pode executar qualquer comando normal no modo Ex com os comandos Ex :normal
e :execute
.
Por exemplo, digamos que você queira:
- mova o cursor na primeira linha do buffer (
1G
)
- mova o cursor para o primeiro caractere que não é um espaço em branco na linha (
_
)
- mova o cursor uma palavra para frente (
w
)
- mova o cursor para o final da nova palavra (
e
)
- entra no modo de inserção após o caractere sob o cursor (
a
)
- insira a string
hello
- salvar e sair (
:x
)
Para fazer isso no arquivo j
, digite no shell:
vim +"execute 'normal! 1G_weahello' | x" j
Para mais informações, veja:
:help +cmd
:help :normal
:help :execute
|
caractere canaliza a saída de um comando para outro.wea-this
não é um comando. A tubulação também não pode ser usada para alcançar o que você deseja; fará com que o stdin do Vim seja o aplicativo à esquerda, não o teclado. Se você quiser se stdin em um buffer no vim, iniciá-lo com um sinal de menos para o filename:echo Hello, world! | vim -
.