O rastreador de erros do Gnats possui um comando (edit-pr) que abre um ticket em $ EDITOR. Meu $ EDITOR é o VIM e, quando esse comando abre o ticket em $ EDITOR, eu gostaria de executar automaticamente algumas edições com script sem precisar pressionar as teclas adicionais.
Existe uma maneira de escrever um script VIM que possa ser executado de maneira não interativa assim?
Mesmo que você já tenha recebido uma resposta para sua pergunta, outras pessoas podem achar isso útil.
Os comandos do Vim também podem ser especificados em um arquivo que é executado usando a
-s
opção:Exemplo:
Isso usará o Vim para recuar o conteúdo do arquivo, salvar e sair.
fonte
Os comandos do Vim podem ser especificados na linha de comandos quando você executa o programa da seguinte maneira:
Você pode continuar adicionando comandos adicionando
"+[cmd]"
argumentos. Você pode terminar aí e o editor abrirá, executará esses comandos e espere ou você poderá adicionar um"+:wq"
para salvar e fechar o arquivo.Você também pode escrever um script usando a sintaxe vimscript e envolvê-lo em uma função para chamar quando o arquivo é aberto ou em um script separado para importar e aplicar ao buffer usando a sintaxe acima.
fonte
Para executar o vim no modo não interativo, você pode usar o parâmetro
+{command}
/-c {command}
ou-s
que permitirá executar os comandos do vim após a leitura do primeiro arquivo.Veja alguns exemplos abaixo.
Entrada e saída padrão simples usando tubos podem ser alcançadas pelo comando:
Para editar um arquivo e salvar as alterações em outro:
Para editar o arquivo no local, você pode usar
-s {scriptin}
para que o arquivo de script seja lido, por exemplo:Para analisar o arquivo e enviá-lo para a saída do pipeline, você pode tentar o seguinte:
ou:
Veja mais: Como editar arquivos de maneira não interativa (por exemplo, no pipeline)? na Vim SE
fonte
:hi
é rolável e mostra-- More -- SPACE/d/j: screen/page/line down, b/u/k: up, q: quit
? Ele não aparece na lista de buffers e a gravação com:w
grava um arquivo vazio (e o pressionamento de tecla 'enter' faz com que o pager role ou saia.) Eu posso usar:redir! >file | :hi | :redir END
, que captura tanto quanto eu rolar. Eu acho que pode funcionar mecanicamente como um bidirecionalmore
. Eu tenho que saber por que:help
e:hi
não são tanto paginada ou ambos RO-tamponada ...