loop vi / vim / view / etc / alternatives

2

Eu queria entender a diferença entre os executáveis vi e vim . which me levou a /usr/bin/ e lá encontrei os seguintes links simbólicos:

/usr/bin/vi -> /etc/alternatives/vi
/usr/bin/vim -> /etc/alternatives/vim

Indo para /etc/alternatives/ , vi que esses nomes estão vinculados a /usr/bin/ :

/etc/alternatives/vi -> /usr/bin/vim.gnome
/etc/alternatives/vim -> /usr/bin/vim.gnome

Depois de pensar um pouco porque é assim, cheguei à conclusão de que ambos estão apontando para o mesmo executável, portanto, são completamente os mesmos.

No entanto, algo me chamou a atenção naquele momento; este link:

/etc/alternatives/view -> /usr/bin/vim.gnome

acompanhado com este link:

/usr/bin/view -> /etc/alternatives/view

Agora, isso é estranho, pois sei que quando executo view , não é o mesmo que quando executo vim ; Ele abre um modo somente leitura do arquivo fornecido como argumento. O vim.gnome binary sabe o que estava ligando a ele quando executado, de alguma forma?

(a propósito, o mesmo problema é com vimdiff )

Você tem alguma explicação para isso?

    
por Bach 09.04.2014 / 16:33

1 resposta

2

Isso é explicado em man vim :

  

O Vim se comporta de maneira diferente, dependendo do nome do comando (o   executável pode ainda ser o mesmo arquivo).

     

vim:
A maneira "normal", tudo é o padrão.

     

ex:
Começa no modo Ex. Vá para o modo normal com o ": vi"   comando.                Também pode ser feito com o argumento "-e".

     

view:
Começa no modo somente leitura. Você estará protegido de   escrevendo                os arquivos. Também pode ser feito com o argumento "-R".

     

gvim gview:
               A versão da GUI. Inicia uma nova janela. Também pode ser feito com                o argumento "-g".

     

evim eview:
               A versão da GUI no modo fácil. Inicia uma nova janela. Também pode                ser feito com o argumento "-y".

     

rvim rview rgvim rgview
               Como o acima, mas com restrições. Não será possível                para iniciar comandos do shell ou suspender o Vim. Pode ser também                feito com o argumento "-Z".

Em outras palavras, o vim irá detectar o nome para o qual foi chamado e agir de acordo. Outro exemplo de um programa que se comporta de forma diferente, dependendo do nome que foi executado, é bash , que atua como um shell POSIX mínimo, se chamado como sh (consulte INVOCATION em man bash ).

    
por terdon 09.04.2014 / 16:44