1

Я хочу использовать консольное приложение MacVim вместо стандартного vim. Для этого я пытаюсь установить псевдоним:

alias vim="/usr/local/Cellar/macvim/8.0-119_1/MacVim.app/Contents/MacOS/Vim" Но по некоторым причинам команда alias не работает, и каждый раз, когда я выполняю which vim он не изменяется и всегда показывает '/usr/local/bin/vim' как путь. В чем дело?

Установка Macvim с помощью brew install macvim --with-override-system-vim у меня не работает, так как требует установки слишком тяжелой версии XCode с графическим интерфейсом (~ 5 ГБ)

1 ответ1

1

mvim - это универсальный стартовый (bash) скрипт для MacVim . Он работает на основе своего собственного имени, например, если его имя начинается с m или g запустит версию GUI, в противном случае версию консоли.

Вы можете увидеть это в источнике mvim :

case "$name" in m*|g*|rm*|rg*) gui=true ;; esac

Любое другое имя запустит консольную версию. Итак, достаточно создать жесткую ссылку с оригинальным mvim . Например, если ваш mvim находится в /usr/local/bin/mvim то

sudo ln /usr/local/bin/mvim /usr/local/bin/tvim

создаст tvim а команда tvim запустит консольную версию MacVim . Конечно, вы также можете создать ссылку на vim как

sudo ln /usr/local/bin/mvim /usr/local/bin/vim

просто убедитесь, что /usr/local/bin находится перед /usr/bin в вашем $PATH .

Теперь к вашему вопросу:

Затенение команд с помощью псевдонимов не является лучшей практикой. Во всяком случае, это работает. Так что ваши

alias vim="/usr/local/Cellar/macvim/8.0-119_1/MacVim.app/Contents/MacOS/Vim"

запустит vim MacVim. Команда which не отображает псевдонимы. Вы можете проверить это самостоятельно, набрав прямо в терминале:

alias bubu=/bin/date

в which bubu ничего не будет показано, но если вы запустите команду bubu вы получите дату.

Вы можете проверить, какая команда будет выполняться, используя type . Например

type bubu
#bubu is alias /bin/date

так же

type vim
#will show the /usr/local/Cellar/macvim/8.0-119_1/MacVim.app/Contents/MacOS/Vim

Кроме того, вы можете проверить текущие переменные непосредственно из вашего запущенного vim , просто используйте :set runtimepath или :set helpfile покажет для файла по умолчанию /usr/bin/vim что-то вроде:

... /usr/share/vim/vimfiles,/usr/share/vim/vim74,/usr/share/vim/vimfiles/after

но для вашего MacVim (в режиме консоли) будет отображаться как:

... /usr/local/Cellar/macvim/8.0-119_1/MacVim.app/Contents/Resources/vim/vimfiles

Итак, наконец:

  • Ваш псевдоним, вероятно, работает, только тот, which не показывает это
  • Вы можете использовать предоставленный mvim просто жестко связать его с другим именем

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .