Настройка псевдонима для использования Macvim в терминале вместо стандартного Vim

1063
Alex Smirnov

Я хочу использовать консольное приложение 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
Просто записка. MacVim поставляется с bash-скриптом `mvim`. Итак, вы запускаете MacVim, используя `mvim file`. jm666 7 лет назад 1
@ jm666 правильно, если вы хотите запустить версию GUI, вы запускаете `mvim`, но MacVim также имеет консольную версию, которая находится в папке MacVim в соответствии с указанным мной путем Alex Smirnov 7 лет назад 0

1 ответ на вопрос

1
jm666

mvimУниверсален Отправной (Баш) скрипт для 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 

the 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просто жесткую ссылку на другое имя