9

Я использую MacVim, и когда я не запускаю его из терминала (mvim), его $ PATH не включает то, что я установил в своем .bash_profile. Кажется, он имеет только значения по умолчанию, /usr/bin:/bin:/usr/sbin:/sbin .

Я использую OS X 10.5.8. Даже если бы я мог установить его вручную в моем .vimrc, это было бы хорошо, хотя я бы предпочел, чтобы он извлекался из того же места, что и Терминал. Я попытался следовать тому, что предложил один сайт, добавив let $PATH += /blah/foo:/bar/etc безрезультатно.

Изменить / Решение: см. Мой ответ ниже. MacVim имеет возможность исправить это.

10 ответов10

12

MacVim, кажется, получает $ PATH способом, который игнорирует пользовательские точечные файлы обычного пользователя.

Я не могу сказать, почему они предпочитают делать это таким образом, но, похоже, это правда. В настройках (на вкладке "Дополнительно") вы можете выбрать "Запустить процессы Vim в оболочке входа в систему", но это только немного улучшает $PATH для меня.

Лучшее, что я могу сказать, MacVim использует /usr/libexec/path_helper - который, в свою очередь, использует элементы, найденные (1) в /etc/paths и (2) что-либо еще найденное в каталоге /etc/paths.d/ . Любые изменения, сделанные в домашнем каталоге пользователя (через .profile и т. П.), Игнорируются.

Короче говоря, вы получаете значения по умолчанию OSX, а также любые приложения, которые добавляют себя в /etc/paths.d . (Например, MacTex делает это в моей системе.) Поэтому, если вы хотите изменить путь к MacVim, одним из способов будет добавление файла с элементами в /etc/paths.d . (Я бы не стал напрямую редактировать /etc/paths так как вы рискуете, что изменения будут отменены обновлениями системы.)

Спасибо, что сообщили мне об этом. Я отправил сообщение об ошибке в MacVim.

7

Кстати, предпочтение "Запустить процессы Vim в оболочке входа в систему" больше не доступно в MacVim (по крайней мере, не v7.3). Я вижу, что запуск MacVim из Finder дает неверный путь, но запуск его из оболочки (как "mvim") дает правильный путь.

3

Он не получен из .bash_profile, но вы можете использовать это в вашем .vimrc:

let $PATH=$PATH . ':/blah/foo'

Вы должны иметь: или это не будет правильной переменной PATH.

2

Я не могу поверить, что я не видел этого раньше. Хорошо, я могу в это поверить. В любом случае, MacVim поставляется с опцией, которая решает эту проблему. В разделе "Настройки" просто установите флажок "Запустить процессы Vim в оболочке входа". Вот и все, это работает. Snazzy. Глупый я.

ой

Я случайно написал этот ответ, не понимая, что Телемах уже дал мне правильный ответ. Помечен как ответ.

1

Эта статья Mac Dev Center может быть полезна.

1

У меня не было проблем с добавлением файла в каталог paths.d. Я добавил файл с именем mysql, содержимое которого было:

/ USR / местные / MySQL / бен [Return]

Затем я поместил этот файл в каталог paths.d и изменил его владельца на root:wheel. Теперь каталог mysql автоматически добавляется в мою переменную $ PATH.

Я не исследовал полностью, но, возможно, (a) включая [RETURN] в конце строки и / или (b) установку владельца файла на root, возможно, потребуется.

0

Я задал очень похожий вопрос на сайте Vim StackExchange и разместил там ответ, который мне подходит !

0

Я столкнулся с этим сегодня. MacVim больше не имеет опцию "login shell", и редактирование общесистемных файлов для пользовательской настройки является схематичным.

Вот решение, использующее только параметры vim (см . :help :! и :help shell).

В вашем ~/.vimrc добавьте строки

set shell=/bin/bash
set shellcmdflag=-l\ -c

Это делает bash оболочкой по умолчанию из (Mac)Vim и добавляет флаг -l (оболочка входа в систему) к командам, вызываемым с помощью :!{cmd} При выполнении :shell , bash запускается как «интерактивная оболочка, которая не является оболочкой входа в систему».

Чтобы заставить $PATH работать, вам нужно установить его в ~/.bash_profile для :! и ~/.bashrc для :shell . (См. INVOCATION в man bash)

ОБНОВЛЕНИЕ: Это не было необходимым на моем другом компьютере, так что, вероятно, что-то еще, что является основной причиной.

0

Я знаю больше о Unix, чем о Mac, поэтому следующий совет может или не может работать. Попробуйте поместить этот файл .vimrc:

! source ~/.bash_profile

Это может сработать, но есть небольшая оговорка: .bash_profile предназначен только для одного источника. Он может содержать некоторые неидемпотентные команды (вещи, которые должны выполняться только один раз). Дело в точке:

$PATH += /blah/foo:/bar/etc

Чем больше вызывается, тем больше и больше резервируется $PATH . Однако, если это не так уж и сложно, рекомендуется для unix поместить одноразовую команду в ~/.bashrc и запустить source ~/.bashrc из вашего файла .vimrc .

0

MacVim создаст ~/.zprofile и /etc/profile , так что вы можете поместить туда свои настройки PATH .

См. Https://github.com/b4winckler/macvim/wiki/Trountication#for-zsh-users и этот вопрос о переполнении стека.

(Протестировано с MacVim версии 7.3 (65)).

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