Remplacez globalement Vi par Vim sur Fedora

8

Sur les systèmes basés sur Debian, le système alternatif gère à la fois le viet l' vimexécutable. Donc, si vimest installé et que vous exécutez vi, vous obtenez également vim, ce que je trouve très agréable, car je déteste absolument le classique vi.

Sur Fedora 17 "Beefy Miracle", le système alternatif ne gère évidemment aucun des deux. Mais il y a un fichier de profil dans /etc/profile.d/vim.shlequel ajoute un alias de shell à faire viexécuter vim. Pour une raison quelconque, il ne le fait pas pour les utilisateurs du système, y compris root.

Mais même si je configure manuellement un alias pour tous les utilisateurs, lorsque j'appelle, sudo vije commence viplutôt par classique vim. C'est probablement parce que sudo ne démarre pas un shell ou que les fichiers de profil ne sont exécutés que dans des sessions shell interactives.

Ce que je recherche maintenant, c'est un moyen de désinstaller vicomplètement Classic pour créer un lien symbolique qui survit même aux mises à jour du système. Comment supprimer Classic vimais pas vimsur Fedora 17? Ou existe-t-il encore un meilleur moyen?

Mise à jour : Avec yum provides vij'ai découvert que vic'est fourni par le paquet vim-minimal. Mais je ne peux pas simplement le supprimer car il supprime automatiquement le paquet sudoavec lui. Même si je le supprime et que j'essaie de réinstaller sudopar la suite, il vim-minimalest à nouveau installé en tant que dépendance.

Mise à jour : comme demandé, sortie de rpm -qf /usr/bin/vi:

vim-minimal-7.3.444-1.fc17.x86_64

Et ls -l /usr/bin/vi:

-rwxr-xr-x. 1 root root 782248 13. Feb 2012  /usr/bin/vi
aef
la source
rm /usr/bin/vi; ln -s /usr/bin/vim /usr/bin/vi. Pas une réponse car je trouverais personnellement un meilleur moyen (ou taper vim si je voulais vim).
jordanm
@jordanm Je voulais dire exactement cela quand j'ai demandé de faire un lien symbolique survivre à une mise à jour. Comment vous assurez-vous que le lien n'est pas écrasé lorsque le vim-minimalpackage est mis à jour?
aef
Un /usr/bin/vilien symbolique (vers quoi) ou un fichier standard sur Fedora? Si un fichier normal, de quel paquet?
Gilles 'SO- arrête d'être méchant'
@Gilles Je ne comprends pas votre question.
aef
Publiez la sortie de ls -l /usr/bin/viet rpm -qf /usr/bin/vi.
Gilles 'SO- arrête d'être méchant'

Réponses:

6

Vous êtes viVim, mais invoqué en tant que vi, il passe donc en mode de compatibilité historique. L'action recommandée est que si vous voulez exécuter Vim et non vi, exécutez vimet non vi. Cependant, si vous souhaitez vitoujours exécuter Vim sur chaque compte du système, remplacez-le dans /usr/local/bin:

cat >/usr/local/bin/vi <<\EOF
#!/bin/sh
exec /usr/bin/vim "$@"
EOF
chmod 755 /usr/local/bin/vi
Gilles 'SO- arrête d'être méchant'
la source
C'est en fait une très bonne idée.
aef
2
Cela fonctionne même en créant simplement un lien symbolique avec sudo ln -s /usr/bin/vim /usr/local/bin/vi. Mais vous devez ajouter /usr/local/binsur le côté le plus à gauche de la Defaults secure_path="…"configuration dans visudo, sinon le lien symbolique ne sera pas trouvé.
aef
Je pense qu'il y a quelques fautes de frappe dans la syntaxe ici. Voulez-vous dire cat >/usr/local/bin/vi(non cat >/usr/local/bin)? Voulez-vous dire chmod 755 /usr/local/bin/vi(non .../vim)?
DW
Pour le récupérer avec le CHEMIN par défaut de root, créez le lien symbolique à /usr/local/sbin/vi.
hackel
5

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

llua
la source
Et cela n'est-il pas effacé lorsque le vim-minimalpackage est mis à jour?
aef
créer un alias sur .bashrcest une bonne pratique ... pour moi @llua a donné une bonne réponse
maniat1k
0

FYI récent fedora (au moins depuis 18) installe cet alias globalement /etc/profile.dune fois vim-enchancedinstallé.

akostadinov
la source