Tengo dos versiones vim
instaladas 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 ~/.vimrc
archivo?
Respuesta1
Utilice un alias.
El alias se define en uno de sus archivos BASH RC, como ~/.bashrc
. A continuación, si /usr/local/bin/vim
hay 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'
-h
prueba si un archivo es un enlace simbólico, lo que podría ser el caso cuando se usa Homebrew.-x
prueba si un archivo es un archivo ejecutable normal.
(Se puede determinar que un archivo es un enlace cuando ls -l
muestra 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 ~/.bashrc
o cualquier archivo que sea apropiado para su configuración BASH. El comando, command -v vim
muestra 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/vim
deberí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 vim
invokes /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 PATH
para que todo el software instalado por Homebrew esté primero en el archivo PATH
. Para comenzar, es necesario saber qué zsh
archivo 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 ~/.zshrc
o ~/.zprofile
, cambie el valor de la path
variable. Por ejemplo, lo path
siguiente define /usr/local/bin
y /usr/local/sbin
primero, 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 PATH
se 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
path
y Unix PATH
están "unidas" por typseset
, por lo que solo source
el archivo que se editó para modificar la path
variable: source ~/.zprofile
, por ejemplo. Luego eche un vistazo a la PATH
variable 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/bin
es 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/bin
sería gid
para evitar problemas con BSD id
en /usr/bin
.
Respuesta2
El estándar con Brew es colocar /usr/local/bin
los PATH
directorios anteriores del sistema /usr/bin
para que sus comandos se recojan primero.