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, ex
portanto, 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 ex
no 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
, ex
e 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 sed
e 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 ex
o 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 python
console), 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 bufdo
não é ex
um 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 -V
para 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:
Q
eq:
são bem diferentes. Você está se referindo apenas àQ
direita?