Substitua globalmente o Vi pelo Vim no Fedora

8

Em sistemas baseados no Debian, o sistema de alternativas manipula o executável vie vimo. Então, se vimestá instalado e você executa vi, você também recebe vim, o que acho muito bom, porque eu odeio absolutamente o clássico vi.

No Fedora 17 "Beefy Miracle", o sistema de alternativas obviamente não lida com nenhum dos dois. Mas há um arquivo de perfil no /etc/profile.d/vim.shqual adiciona um alias de shell para viexecutar vim. Por alguma razão, isso não ocorre para usuários do sistema, incluindo root.

Mas mesmo que eu configure um alias manualmente para todos os usuários, quando ligo sudo vi, estou começando o clássico em vivez de vim. Provavelmente porque o sudo não inicia um shell ou os arquivos de perfil são executados apenas em sessões de shell interativas.

O que estou procurando agora é uma maneira de desinstalar vicompletamente o clássico para criar um link simbólico que até sobrevive às atualizações do sistema. Como posso remover o clássico, vimas não o vimFedora 17? Ou existe ainda uma maneira melhor?

Atualização : Com yum provides vieu descobri que vié fornecido pelo pacote vim-minimal. Mas não posso simplesmente removê-lo porque ele remove automaticamente o pacote sudo. Mesmo se eu removê-lo e tentar instalar sudonovamente depois, ele vim-minimalserá novamente instalado como dependência.

Atualização : conforme solicitado, saída de rpm -qf /usr/bin/vi:

vim-minimal-7.3.444-1.fc17.x86_64

E ls -l /usr/bin/vi:

-rwxr-xr-x. 1 root root 782248 13. Feb 2012  /usr/bin/vi
aef
fonte
rm /usr/bin/vi; ln -s /usr/bin/vim /usr/bin/vi. Não é uma resposta, porque eu pessoalmente encontraria uma maneira melhor (ou digite vim, se quisesse).
Jordanm 12/12
@ Jordanm Eu quis dizer exatamente isso quando pedi para fazer um link simbólico sobreviver a uma atualização. Como você garante que o link não seja substituído quando o vim-minimalpacote for atualizado?
aef 12/12
É /usr/bin/vium link simbólico (para quê) ou um arquivo regular no Fedora? Se um arquivo regular, de qual pacote?
Gilles 'SO- stop be evil'
@ Gilles Eu não entendo sua pergunta.
aef 12/12
Poste a saída de ls -l /usr/bin/vie rpm -qf /usr/bin/vi.
Gilles 'SO- stop be evil'

Respostas:

6

Você vié o Vim, mas invocado como vi, portanto, ele entra no modo de compatibilidade histórica. A ação recomendada é que, se você deseja executar o Vim e não o vi, execute vime não vi. No entanto, se você deseja visempre executar o Vim em todas as contas do sistema, substitua-o em /usr/local/bin:

cat >/usr/local/bin/vi <<\EOF
#!/bin/sh
exec /usr/bin/vim "$@"
EOF
chmod 755 /usr/local/bin/vi
Gilles 'SO- parar de ser mau'
fonte
Na verdade, é uma ideia muito boa.
aef
2
Até funciona simplesmente criando um link simbólico sudo ln -s /usr/bin/vim /usr/local/bin/vi. Mas você precisa adicionar /usr/local/binao lado esquerdo da Defaults secure_path="…"configuração visudo, caso contrário, o link simbólico não será encontrado.
aef
Eu acho que existem alguns erros de digitação na sintaxe aqui. Você quis dizer cat >/usr/local/bin/vi(não cat >/usr/local/bin)? Você quis dizer chmod 755 /usr/local/bin/vi(não .../vim)?
DW
Para buscá-lo com o PATH padrão do root, crie o link simbólico em /usr/local/sbin/vi.
Hackel
5

# echo 'alias vi="vim"' >> /etc/bashrc' ou # alternatives --install /usr/bin/vi vi /usr/bin/vim 900

llua
fonte
E isso não é apagado quando o vim-minimalpacote é atualizado?
aef 12/12
criar um alias em .bashrcuma boa pratice ... para mim @llua deu uma resposta boa
maniat1k
0

Para sua informação, o fedora recente (pelo menos desde 18) instala esse apelido globalmente de /etc/profile.duma só vez vim-enchanced.

akostadinov
fonte