São Ex / vim ex-mode e são utilitários categoricamente diferentes ou dois programas diferentes para as mesmas tarefas

0

Eu entendo que o sed (editor de fluxo) é um editor não interativo que é útil para scripts e processamento em lote. Eu também entendo que ex e é invocação do vim: ex-mode são editores de linha para processamento de texto não interativo. Minha pergunta não é de opinião sobre qual é melhor ou mais útil, mas sim se há algum caso de uso pretendido ou vantagem para ex / ex-mode que o diferencia de sed. A razão que eu pergunto é para determinar se estou perdendo ignorando ex-mode em favor de sed. Agradecemos antecipadamente.

    
por layer9 28.08.2017 / 04:40

1 resposta

1

Uma grande diferença entre ex e sed é que o primeiro (pelo menos na implementação do Vim) lê o arquivo inteiro em um buffer e opera sobre isso. Considerando que o "s" in sed significa streaming , ou seja, sed lê o (s) arquivo (s) de entrada linha a linha e o exibe em movimento. Portanto, o sed lida facilmente com arquivos muito grandes, enquanto o ex / Vim precisará do espaço de endereço virtual do seu sistema operacional e será consideravelmente mais lento na leitura e gravação.

Então, com sed, se você precisa manter um contexto a partir de linhas anteriores, você tem que juntá-lo explicitamente com o espaço padrão , ou armazená-lo no único espaço disponível . Considerando que, no ex / Vim, você pode navegar de volta para uma linha anterior ou usar expressões regulares que abrangem várias linhas no buffer. Além disso, não existe apenas um espaço de espera , mas vários registros nomeados no Vim (chamados buffers nomeados em ex). Então, se um único espaço de armazenamento não é suficiente, você tem que atualizar de sed para awk (para manter o aspecto de streaming), ou mudar para ex / Vim.

Na prática

Se eu já tenho um arquivo aberto no Vim, eu naturalmente uso modo ex para certas manipulações de texto. :substitute é um dos comandos mais usados (pelo menos para mim). Muitos ex-comandos possuem uma implementação (em geral recursiva) macro correspondente; dependendo da tarefa (e preferências pessoais / habilidades), você tende a usar um ou outro com mais frequência.

Para tarefas de automação, eu prefiro a cadeia de ferramentas sed / awk / Perl ; O bom aqui é que você pode começar pequeno (com sed), e uma vez que você alcance os limites de suas capacidades, você pode facilmente migrar para a próxima ferramenta, que é mais poderosa (mas também mais complexa e maior). Se esta é uma tarefa de automação única, e eu já conheço uma macro bacana ou um plugin Vim que simplifica muito a implementação, considero usar o Vim como um utilitário de linha de comando não interativo em modo ex silencioso . Para outras tarefas, isso geralmente não é uma opção por causa das dependências (para o Vim, o plugin, minha configuração pessoal).

Resumo

Você pode fazer muitas coisas com apenas sed e nada mais. Se você não é um usuário do Vim (especialmente se você usa o editor outro , e pode fazer processamento de texto poderoso lá), ex (modo) não é tão importante, mas nunca está longe, como sua sintaxe está estreitamente alinhado com o sed, de qualquer forma.

    
por 28.08.2017 / 11:46