vim
У меня на macOS установлено две версии :
- версия по умолчанию,
/usr/bin/vim
, - и MacVim (через Homebrew),
/usr/local/bin/vim
.
Когда я печатаю vim
, вызывается программа по умолчанию. Я хочу использовать MacVim всякий раз, когда печатаю vim
. Знаете как? Они оба используют один и тот же ~/.vimrc
файл?
решение1
Используйте псевдоним.
Псевдоним определяется в одном из ваших файлов BASH RC, например ~/.bashrc
. Ниже, если /usr/local/bin/vim
это символическая ссылка, то создайте псевдоним с именем vim
.
if [ -h '/usr/local/bin/vim' ]; then
alias vim='/usr/local/bin/vim'
fi
Эту же логику можно применить следующим образом.
[ -h '/usr/local/bin/vim' ] && alias vim='/usr/local/bin/vim'
-h
проверяет, является ли файл символической ссылкой, что может иметь место при использовании Homebrew.-x
проверяет, является ли файл обычным исполняемым файлом.
(Можно определить, что файл является ссылкой, когда ls -l
отображается первая буква его прав доступа как буква l влrwxr-xr-x.)
Также может потребоваться задать несколько переменных, которые программы используют для вызова редактора по умолчанию.
EDITOR='/usr/local/bin/vim'
VISUAL='/usr/local/bin/vim'
После добавления определения в файл RC вашей оболочки, выберите файл RC, чтобы получить новый псевдоним с помощью source ~/.bashrc
или любого другого файла, подходящего для вашей конфигурации BASH. Команда , command -v vim
показывает, что псевдоним был создан, когда ее вывод выглядит следующим образом.
alias vim=/usr/local/bin/vim
В обеих версиях используются одни и те же файлы VIM RC vim
.
Преимущество указания на символическую ссылку вместо исполняемого двоичного файла заключается в том, что псевдоним не нужно обновлять при каждом обновлении MacVim, что часто бывает. Homebrew сохраняет символическую ссылку, указывающую на правильный исполняемый двоичный файл, когда обновления выполняются с помощью brew update && brew upgrade
, например.
Версия системы, /usr/bin/vim
, должна остаться там, где она есть. Без отключения System Integrity Protection (SIP) ее нельзя удалить или изменить в любом случае. По-прежнему возможно использовать версию системы, введя /usr/bin/vim
, однако ввод vim
вызывает /usr/local/bin/vim
.
Измените путь.
Другой способ, который будет работать для всего программного обеспечения, установленного через Homebrew, — это изменить PATH
так, чтобы все программное обеспечение, установленное Homebrew, было первым в PATH
. Для начала нужно знать, какой zsh
файл RC уже содержит определение пути.
cd
grep path .z*
Один из результатов может включать fpath
. Это не та переменная. Мы ищем переменную с именем в нижнем регистре path
. После вывода имени файла для редактирования, которое, скорее всего, является ~/.zshrc
или ~/.zprofile
, измените значение переменной path
. Например, path
ниже сначала определяются /usr/local/bin
и /usr/local/sbin
, затем скрипты или программы в домашнем каталоге, а затем остаток пути, который уже определен системой.
path=(
/usr/local/{bin,sbin}
$HOME/bin
$path
)
Результирующая PATH
переменная Unix будет тогда определена следующим образом.
/usr/local/bin:/usr/local/sbin:/Users/$username/bin:/usr/bin:/bin:/usr/sbin:/sbin
Переменные zsh
path
и Unix PATH
«связаны вместе» с помощью typseset
, поэтому просто source
файл, который был отредактирован для изменения path
переменной: source ~/.zprofile
, например. Затем взгляните на PATH
переменную, чтобы узнать, была ли она изменена, как ожидалось: echo $PATH
.
Разработчики пакета Homebrew довольно хорошо распознают, какое ПО может вызвать проблему с macOS, если /usr/local/bin
оно стоит первым в пути, перед /usr/bin
. Например, если Homebrew должен установить GNU id
, то имя ПО в /usr/local/bin
будет , gid
чтобы избежать проблем с BSD id
в /usr/bin
.
решение2
Стандартом для brew является размещение /usr/local/bin
в PATH
системных каталогах, например /usr/bin
, чтобы его команды подхватывались в первую очередь.