cómo cambiar la ruta del comando vim

cómo cambiar la ruta del comando vim

Tengo dos versiones viminstaladas en macOS:

  • una versión predeterminada, /usr/bin/vim,
  • y MacVim (a través de Homebrew) /usr/local/bin/vim,.

Cuando escribo vim, se invoca el programa predeterminado. Quiero usar MacVim cada vez que escribo vim. ¿Sabes cómo? ¿Ambos usan el mismo ~/.vimrcarchivo?

Respuesta1

Utilice un alias.

El alias se define en uno de sus archivos BASH RC, como ~/.bashrc. A continuación, si /usr/local/bin/vimhay un enlace simbólico, cree un alias llamado vim.

if [ -h '/usr/local/bin/vim' ]; then
    alias vim='/usr/local/bin/vim'
fi

La misma lógica se puede aplicar de la siguiente manera.

[ -h '/usr/local/bin/vim' ] && alias vim='/usr/local/bin/vim'
  • -hprueba si un archivo es un enlace simbólico, lo que podría ser el caso cuando se usa Homebrew.
  • -xprueba si un archivo es un archivo ejecutable normal.

(Se puede determinar que un archivo es un enlace cuando ls -lmuestra la primera letra de sus permisos como la letra, l, enyorwxr-xr-x.)

También es posible que desee establecer un par de variables que los programas utilizan para invocar un editor predeterminado.

EDITOR='/usr/local/bin/vim'
VISUAL='/usr/local/bin/vim'

Después de agregar la definición al archivo RC de su shell, obtenga el archivo RC para elegir el nuevo alias source ~/.bashrco cualquier archivo que sea apropiado para su configuración BASH. El comando, command -v vimmuestra que se creó el alias cuando su salida es la siguiente.

alias vim=/usr/local/bin/vim

Ambas versiones de vim.

La ventaja de apuntar al enlace simbólico en lugar del ejecutable binario es que no es necesario actualizar el alias en cada actualización de MacVim, lo cual ocurre con frecuencia. Homebrew mantiene el enlace simbólico apuntando al ejecutable binario correcto cuando se realizan actualizaciones con brew update && brew upgrade, por ejemplo.


La versión del sistema, /usr/bin/vimdebería permanecer donde está. Sin deshabilitar la Protección de integridad del sistema (SIP), no se puede eliminar ni modificar de todos modos. Todavía es posible utilizar la versión del sistema escribiendo /usr/bin/vim, pero escribiendo viminvokes /usr/local/bin/vim.


Modifica la ruta.

Otra forma que funcionaría para todo el software instalado a través de Homebrew es modificar el archivo PATHpara que todo el software instalado por Homebrew esté primero en el archivo PATH. Para comenzar, es necesario saber qué zsharchivo RC ya contiene la definición de la ruta.

cd
grep path .z*

Uno de los resultados podría incluir fpath. Esta no es la variable correcta. Estamos buscando una variable en minúscula llamada path. Después de deducir el nombre del archivo a editar, que probablemente sea ~/.zshrco ~/.zprofile, cambie el valor de la pathvariable. Por ejemplo, lo pathsiguiente define /usr/local/biny /usr/local/sbinprimero, seguido de scripts o programas en el directorio de inicio y, por último, el resto de la ruta que ya ha sido definida por el sistema.

path=(
    /usr/local/{bin,sbin}
    $HOME/bin
    $path
)

La variable Unix resultante PATHse definiría entonces de la siguiente manera.

/usr/local/bin:/usr/local/sbin:/Users/$username/bin:/usr/bin:/bin:/usr/sbin:/sbin

Las variables zsh pathy Unix PATHestán "unidas" por typseset, por lo que solo sourceel archivo que se editó para modificar la pathvariable: source ~/.zprofile, por ejemplo. Luego eche un vistazo a la PATHvariable para saber si se modificó como se esperaba: echo $PATH.


Los mantenedores de paquetes Homebrew son bastante buenos para reconocer qué software causaría un problema con macOS si /usr/local/bines el primero en la ruta, antes que /usr/bin. Por ejemplo, si Homebrew va a instalar GNU id, entonces el nombre del software /usr/local/binsería gidpara evitar problemas con BSD iden /usr/bin.

Respuesta2

El estándar con Brew es colocar /usr/local/binlos PATHdirectorios anteriores del sistema /usr/binpara que sus comandos se recojan primero.

información relacionada