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 :xque 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 :sourceou 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 :normale :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-thisnã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 -.