Reemplazar globalmente Vi con Vim en Fedora

8

En los sistemas basados en Debian el sistema de alternativas maneja tanto el viy vimejecutable. Entonces, si vimestá instalado y ejecutas vi, también obtienes vim, lo que me parece muy agradable, porque odio absolutamente el clásico vi.

En Fedora 17 "Beefy Miracle", el sistema de alternativas obviamente no maneja ninguno de los dos. Pero hay un archivo de perfil en el /etc/profile.d/vim.shque agrega un alias de shell para viejecutar vim. Por alguna razón, no lo hace para los usuarios del sistema, incluido el root.

Pero incluso si configuro un alias para todos los usuarios manualmente, cuando llamo sudo viestoy comenzando clásico en vilugar de vim. Probablemente sea porque sudo no inicia un shell o los archivos de perfil solo se ejecutan en sesiones de shell interactivas.

Lo que estoy buscando ahora es una forma de desinstalar vicompletamente el clásico para crear un enlace simbólico que incluso sobreviva a las actualizaciones del sistema. ¿Cómo puedo eliminar el clásico vipero no vimen Fedora 17? ¿O hay incluso una mejor manera?

Actualización : Con yum provides videscubrí que vies proporcionado por el paquete vim-minimal. Pero no puedo simplemente eliminarlo porque elimina automáticamente el paquete sudocon él. Incluso si lo elimino e intento instalarlo sudonuevamente después, vim-minimalse instala nuevamente como dependencia.

Actualización : según lo solicitado, salida de rpm -qf /usr/bin/vi:

vim-minimal-7.3.444-1.fc17.x86_64

Y ls -l /usr/bin/vi:

-rwxr-xr-x. 1 root root 782248 13. Feb 2012  /usr/bin/vi
aef
fuente
rm /usr/bin/vi; ln -s /usr/bin/vim /usr/bin/vi. No es una respuesta porque personalmente encontraría una mejor manera (o escribir vim si quisiera vim).
jordanm
@jordanm Quise decir exactamente esto cuando pedí que un enlace simbólico sobreviviera a una actualización. ¿Cómo se asegura de que el enlace no se sobrescriba cuando vim-minimalse actualiza el paquete?
aef
¿Es /usr/bin/viun enlace simbólico (a qué) o un archivo normal en Fedora? Si es un archivo normal, ¿de qué paquete?
Gilles 'SO- deja de ser malvado'
@ Gilles No entiendo tu pregunta.
aef
Publique la salida de ls -l /usr/bin/viy rpm -qf /usr/bin/vi.
Gilles 'SO- deja de ser malvado'

Respuestas:

6

Tu vies Vim, pero se invoca como vi, por lo que ingresa al modo de compatibilidad histórica. La acción recomendada es que si desea ejecutar Vim y no vi, ejecute vimy no vi. Sin embargo, si desea viejecutar siempre Vim en cada cuenta del sistema, anúlelo en /usr/local/bin:

cat >/usr/local/bin/vi <<\EOF
#!/bin/sh
exec /usr/bin/vim "$@"
EOF
chmod 755 /usr/local/bin/vi
Gilles 'SO- deja de ser malvado'
fuente
Esa es realmente una muy buena idea.
aef
2
Incluso funciona simplemente haciendo un enlace simbólico con sudo ln -s /usr/bin/vim /usr/local/bin/vi. Pero debe agregar /usr/local/binal lado izquierdo de la Defaults secure_path="…"configuración visudo, de lo contrario no se encontrará el enlace simbólico.
aef
Creo que hay algunos errores tipográficos en la sintaxis aquí. ¿Quiso decir cat >/usr/local/bin/vi(no cat >/usr/local/bin)? ¿Quiso decir chmod 755 /usr/local/bin/vi(no .../vim)?
DW
Para recogerlo con la RUTA predeterminada de la raíz, cree el enlace simbólico en /usr/local/sbin/vi.
Hackel
5

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

llua
fuente
¿Y eso no se borra cuando vim-minimalse actualiza el paquete?
aef
crear un alias .bashrces una buena práctica ... para mí @llua dio una buena respuesta
maniat1k
0

Para su información, Fedora reciente (al menos desde 18) instala ese alias globalmente /etc/profile.duna vez que vim-enchancedestá instalado.

akostadinov
fuente