$ PATH у Vim не відповідає терміналу


10

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

У мене працює ОС X 10.5.8. Навіть якщо я міг би встановити його вручну у своєму .vimrc, це було б добре, хоча я вважаю за краще витягнути з того самого місця, що і термінал. Я спробував дотримуватися того, що запропонував один сайт, додавши let $PATH += /blah/foo:/bar/etcбезрезультатно.

Редагування / рішення: Дивіться мою відповідь нижче. MacVim має можливість виправити це.


Відповіді:


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.


Я б також подумав про це, але я додав декілька речей '/etc/paths.d/', які з’являються у Terminal, але не в MacVim.
пончик

А насправді у моєму файлі '/ etc / paths' є більше, ніж у шляху MacVim.
пончик

@Donut: ну, це не дивно. Якщо я щось додам, на моїй машині /etc/paths.dце відображається під час наступного завантаження MacVim. Який формат ви туди вкладаєте? Я вважаю, що це повинен бути один елемент на рядок, з каталогом $ PATH у кожному рядку (наприклад, / usr / texbin).
Телемах

Спочатку я зовсім пропустив ваш перший абзац: вибір "Запуск процесів Vim у оболонці входу" зробив для мене хитрість. Дивіться мою відповідь.
пончик

7

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


3

Це не отримано з .bash_profile, але ви можете використовувати це у своєму .vimrc:

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

Ви повинні мати: або це не буде правильною змінною PATH.


Я просто спробував це, і, схоже, це не змінить $ PATH для MacVim. Я також тестував його з Vim в терміналі (і /usr/bin/vimвід Apple), і /opt/local/bin/vim(від MacPorts), і це видається непотрібним. Vim в терміналі вже підбирає належний $ PATH, як джерело моїх точкових файлів.
Telemachus,

1
Я також спробував це безрезультатно.
пончик

2

Не можу повірити, що раніше цього не бачив. Гаразд, я можу повірити. У будь-якому випадку, MacVim поставляється з можливістю вирішення цього питання. У розділі Налаштування просто встановіть прапорець "Запустити процеси Vim в оболонці входу". Це все, це працює. Снізький. Дурний мене.

На жаль

Я випадково написав цю відповідь, не розуміючи, що Телемах вже дав мені правильну відповідь . Позначив його як відповідь.


Радий, що це відсортовано
Телемах

1

Ця стаття Центру Mac Dev може бути корисною.


Не можу змусити його працювати. Може щось робити не так. У статті пропонується додати властивість "LSEnvironment" у додаток "файл списку властивостей інформації", який я вважав ~ / / Library / Preferences / org.vim.MacVim.plist. Я зробив це словником із "PATH" (також спробував "шлях" та "$ PATH") як ключовий, і те, що я хочу для шляху як значення рядка. Досі, здається, тягне PATH з якогось загадкового джерела. Скріншот файлу plist
пончик

1

У мене не було проблем із додаванням файлу до каталогу paths.d. Я додав файл під назвою mysql, вміст якого:

/ usr / local / mysql / bin [Повернення]

Потім я помістив цей файл під каталог paths.d і змінив його право власності на root: wheel. Тепер каталог mysql автоматично додається до моєї змінної $ PATH.

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



1

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

Ось рішення з використанням лише параметрів 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)

ОНОВЛЕННЯ: На моєму іншому комп’ютері це було не потрібно, тому, ймовірно, є щось інше, що є першопричиною.


1
Ви можете зробити подібну річ для zsh. Визначити $PATHв .zprofile, і включають в себе -lпрапор в будь-якому set shellабо set shellcmdflag.
jladan

0

Я знаю більше про Unix, ніж про Mac, тому наступні поради можуть не працювати. Спробуйте вкласти цей файл .vimrc:

! source ~/.bash_profile

Це може зробити трюк, але є невеликий застереження: .bash_profile призначений лише для отримання одного разу. Він може містити деякі неідентифікуючі команди (речі, які слід виконати лише один раз). Справа в точці:

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

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


Ні джерело .bash_profile, ні .bashrc не працювали. Я спробував запустити вручну, :source .bash_profileале він просто виявляє помилку "Не команда редактора" для кожної команди у файлі і та сама .bashrc.
пончик

вибачте ... що я думав ... ви можете спробувати! джерело .bash_profile
Девід Бергер

Спробував і .bash_profile та .bashrc, але все одно не йшов. Ось що я використовую у своєму .bash_profile для зміни PATH: 'PATH = / usr / local / bin: /Applications/Espresso.app/Contents/SharedSupport/Tools /: / Applications / MacVim /: $ PATH' та в моєму .bashrc: 'експортувати PATH = / Програми / MAMP / bin / php5 / bin: $ PATH'. І саме .bash_profile насправді впливає на мої сеанси на терміналах.
пончик

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.