Como uso o vim na linha de comando para adicionar texto ao meio de um arquivo?

2

Estou tentando escrever um comando nos seguintes termos:

vim -c "XXXXXX" myFile

Em vez do "XXXXX" eu quero fornecer alguns comandos para vim adicionar algum texto a um ponto arbitrário no arquivo, tanto especificando um número de linha exato e, em um cenário diferente, procurando por uma linha específica e então insira na linha acima.

O que eu estou tentando fazer é uma espécie de "append" inteligente, onde eu posso anexar linhas a um bloco de código ou função dentro de um script. Em última análise, estou com o objetivo de ter um script de configuração que irá alterar talvez uma dúzia de arquivos de sistema.

Idealmente, envolveria apenas um sinalizador -c e, idealmente, seria legível para qualquer pessoa que pudesse entender os comandos do modo normal - na minha cabeça eu estava originalmente pensando em algo parecido com "ggjjjiInsertingOnLine4:wq" . p>     

por Edd 15.10.2014 / 21:58

1 resposta

4

Os intervalos de linha de comando podem ser usados para selecionar uma linha específica que precisa ser editada. Então, o padrão substituto pode ser usado para executar a edição (anexar).

Por exemplo, para anexar o texto "hi" no início da linha 3:

vim -c "3 s/^/hi/" -c "wq" file.txt

Para anexar o texto "hi" no final da linha 3:

vim -c "3 s/$/hi/" -c "wq" file.txt

Para encontrar mais opções e explicações:

vim -c "help cmdline-range"

Mais alguns exemplos

Para encontrar uma string de pesquisa "hi" e acrescentar a string "everyone" na linha 3:

vim -c "3 s/\(hi\)/ everyone/" -c "wq" file.txt

Para encontrar uma string de pesquisa "hi" e prefixar uma string "say" na linha 3:

vim -c "3 s/\(hi\)/say /" -c "wq" file.txt

Caso o número da linha não seja conhecido, Para anexar as primeiras ocorrências da string "hi" em todas as linhas com "all":

vim -c "1,$ s/\(hi\)/ all/" -c "wq" file.txt

Para anexar todas as ocorrências da string "hi" em todas as linhas com "all":

vim -c "1,$ s/\(hi\)/ all/g" -c "wq" file.txt

Para mais informações sobre substituições:

vim -c "help substitute"
    
por 15.10.2014 / 22:43