Alternativas
A menos que você realmente precise de recursos especiais do Vim, provavelmente é melhor usar ferramentas não interativas como sed
, awk
ou Perl / Python / Ruby / seu favorito linguagem de script aqui .
Dito isso, você pode usar o Vim não interativamente:
Modo em lote silencioso
Para um processamento de texto muito simples (ou seja, usando o Vim como um 'sed' ou 'awk' aprimorado, talvez apenas aproveitando as expressões regulares aprimoradas em um comando :substitute
), use Ex-mode .
REM Windows
call vim -N -u NONE -n -i NONE -es -S "commands.ex" "filespec"
Nota: o modo de lote silencioso ( :help -s-ex
) atrapalha o console do Windows, portanto, talvez seja necessário fazer um cls
para limpar após a execução do Vim.
# Unix
vim -T dumb --noplugin -n -i NONE -es -S "commands.ex" "filespec"
Atenção: o Vim irá aguardar pela entrada se o arquivo "commands.ex"
não existir; melhor verificar de antemão para a sua existência! Alternativamente, o Vim pode ler os comandos do stdin. Você também pode preencher um novo buffer com o texto lido de stdin e ler os comandos do stderr se você usar o argumento -
.
Automação completa
Para um processamento mais avançado envolvendo várias janelas e a automação real do Vim (onde você pode interagir com o usuário ou deixar o Vim em execução para permitir que o usuário assuma o controle), use:
vim -N -u NONE -n -c "set nomore" -S "commands.vim" "filespec"
Aqui está um resumo dos argumentos usados:
-T dumb Avoids errors in case the terminal detection goes wrong.
-N -u NONE Do not load vimrc and plugins, alternatively:
--noplugin Do not load plugins.
-n No swapfile.
-i NONE Ignore the |viminfo| file (to avoid disturbing the
user's settings).
-es Ex mode + silent batch mode -s-ex
Attention: Must be given in that order!
-S ... Source script.
-c 'set nomore' Suppress the more-prompt when the screen is filled
with messages or output to avoid blocking.