как изменить путь к команде vim

как изменить путь к команде vim

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, чтобы его команды подхватывались в первую очередь.

Связанный контент