A resposta direta é provavelmente que vi
é parte do padrão POSIX (como @jasonwryan também mencionado em um comentário), assim como a especificação Single UNIX. Como tal, qualquer coisa que se chame como compatível com POSIX provavelmente inclui algo como vi
, e qualquer coisa que queira se chamar UNIX tem , ou você não é certificado. Não apenas vi
, mas o editor de linhas relacionado ex
e a linguagem de script envolvida também fazem parte desses padrões. emacs
não faz parte do padrão, por isso não está incluído.
Quanto a por que , existem vários motivos. Por um lado, emacs
é muito, muito maior e mais complicado que vi
. Há um LISP inteiro lá, entre outras coisas. A parte do POSIX que decide isso foi escrita em 1992, quando você precisaria de um computador muito pesado para emacs
. Eu vi um vi
executado no Minix em um 286 semi-decentemente. E, embora isso realmente não importe tanto para um desktop moderno, em sistemas embarcados ele ainda faz muito. Seu tamanho e versatilidade também dificultam a verificação de falhas de segurança, o que pode ser um problema em certas aplicações onde a segurança é imperativa. Basicamente, tudo o que poderia torná-lo um aplicativo de desktop melhor torna-o um componente pior do sistema.
Se você está pronto para uma aula de história, você também pode dizer que vi
está mais próximo da filosofia Unix : faça uma coisa e faça bem . De fato, vi
surgiu de ex
e sempre foi um programa Unix. emacs
surgiu de um mundo muito diferente: foi originalmente construído sobre o TECO, escrito para o sistema operacional ITS . Ele só foi portado para o Unix nos anos 80, já que o ITS estava desaparecendo. Isso torna emacs
um imigrante de uma cultura muito diferente, enquanto vi
é nativo.
Curiosamente, ambos emacs
e vi
foram lançados em 1976, então não é só que vi
é mais antigo.