O Vim no modo Ex é útil quando:
- Você precisa editar (vários) arquivos de maneira não interativa (como parte do script).
- Sua conexão é muito lenta ou a tela não é atualizada após suas ações.
- Mapeamentos e abreviações estão desativados.
- Chaves comuns como Escapeou Controlnão funcionam corretamente.
Basicamente, vié o modo visual, exportanto, o Vim Ex Mode é apenas uma emulação de ex(eles ainda executam o mesmo código), portanto, é possível acessar o modo de comando exno vi e vice-versa. Na verdade, existem dois modos: modo Ex ( vim -e) e modo Ex aprimorado, que permite comandos mais avançados do que o modo Ex compatível com vi ( vim -E). Consulte: Qual é a diferença entre o modo Ex e o modo Ex aprimorado?
Ex é a raiz de uma família de editores: edit, exe vi. Ex é um superconjunto de ed, com a extensão mais notável sendo um recurso de edição de exibição. ex (1)
Editar arquivos de maneira não interativa é o uso mais comum e as pessoas o usam de maneira semelhante sede awk, no entanto, são mais orientadas para o fluxo - eles só lêem o arquivo do começo ao fim (não foram projetados para trabalhar com várias linhas) ) while vimé orientado a buffer - você pode avançar e retroceder o arquivo como quiser, o que o torna tão poderoso.
Basicamente:
sedé um editor ED do S tream , não um editor de arquivos.
No entanto, as pessoas parecem abusar dele por tentar editar arquivos e a verdade é que ele não edita arquivos. Em segundo lugar, suas opções como in-place ( -i) são extensões não-padrão do FreeBSD e podem não estar disponíveis em outros sistemas operacionais. Portanto, se você deseja evitar códigos não portáveis, sobrecarga de E / S e efeitos colaterais ruins (como destruir links simbólicos), use exo editor padrão baseado em comandos UNIX (junto com ed) o BashFAQ .
Outras coisas que acho úteis no modo Ex é usá-lo como um playground (semelhante ao pythonconsole), onde você pode executar muitos comandos seguidos, trabalhando / depurando expressões regulares, verificando a configuração do vim, executando comandos externos ou trabalhando com registradores, etc. .
Por exemplo:
let @d = '<td></td>'
let @r = '<tr>' . repeat(@d, 5) . '</tr>'
echo @r
let @t = '<table>' . repeat(@r, 5) . '</table>'
reg
o que é mais fácil no modo Ex do que no modo normal (onde você pode ver apenas o seu último comando).
Usos práticos
Eu tenho os seguintes aliases no meu .bash_aliases:
alias trim="ex +'bufdo!%s/\s\+$//e' -scxa"
alias retab="ex +'set ts=2' +'bufdo retab' -scxa"
Nota: O uso bufdonão é exum método compatível com POSIX (conforme manual ); portanto, você pode considerar usá-lo find. A !é usado para forçar a comutação das memórias intermédias sem guardar (de outra forma de aviso é gerado).
O primeiro que estou usando para aparar os espaços finais em todos os meus arquivos de origem, por exemplo:
trim **/*.php
O segundo converte todas as guias em espaços (recursivamente), por exemplo:
retab **/*.php
Para mim retab, basta usar , mas há algumas desvantagens descritas aqui . Adicione extra -Vpara aumentar a produção de verbosidade.
Observe que os exemplos acima usam zsh / bash4 globbing ( **), portanto, verifique se o seu shell suporta e está ativado.
Para exemplos mais práticos (como analisar arquivos html), verifique:
Aprenda também mais sobre o modo Ex em:
Qeq:são bem diferentes. Você está se referindo apenas àQdireita?