$ PATH dans Vim ne correspond pas au terminal

10

J'utilise MacVim et quand je ne le lance pas depuis le Terminal ( mvim), son $ PATH n'inclut pas ce que j'ai défini dans mon .bash_profile. Il semble que d'avoir les valeurs par défaut, /usr/bin:/bin:/usr/sbin:/sbin.

J'utilise OS X 10.5.8. Même si je pouvais le définir manuellement dans mon .vimrc, ce serait correct, même si je préfèrerais qu'il tire du même endroit que Terminal. J'ai essayé de suivre ce qu'un site a suggéré, let $PATH += /blah/foo:/bar/etcen vain.

Edit / Solution: Voir ma réponse ci-dessous. MacVim a une option pour résoudre ce problème.

Donut
la source
Question
Brad Parks

Réponses:

12

MacVim semble obtenir le $ PATH d'une manière qui ignore les fichiers de points personnalisés d'un utilisateur normal.

Je ne peux pas dire pourquoi ils préfèrent le faire de cette façon, mais cela semble être vrai. Dans les préférences (sous l'onglet Avancé), vous pouvez choisir de "Lancer les processus Vim dans un shell de connexion", mais cela n'améliore que $PATHlégèrement pour moi.

Le mieux que je puisse dire, MacVim utilise /usr/libexec/path_helper- qui à son tour utilise les éléments trouvés (1) dans le /etc/pathsfichier et (2) tout autre élément trouvé dans le /etc/paths.d/répertoire. Toutes les modifications apportées dans le répertoire personnel d'un utilisateur (via .profileou similaire) sont ignorées.

En un mot, vous obtenez les valeurs par défaut OSX, ainsi que toutes les applications qui s'y ajoutent /etc/paths.d. (Par exemple, MacTex le fait sur mon système.) Donc, si vous souhaitez ajuster votre chemin MacVim, une façon serait d'ajouter un fichier avec des éléments /etc/paths.d. (Je ne modifierais pas directement /etc/pathsdepuis lors, vous courez le risque que les modifications soient annulées par les mises à jour du système.)

Merci de me l'avoir fait savoir. Je suis parti pour déposer un bogue de liste de souhaits sur MacVim.

Télémaque
la source
J'aurais pensé cela aussi, mais j'ai ajouté quelques éléments '/etc/paths.d/' qui apparaissent dans Terminal mais pas avec MacVim.
donut
Et en fait, il y a plus dans mon fichier '/ etc / chemins' que ce qui est dans le chemin de MacVim.
Donut
@Donut: eh bien, c'est étrange. Sur ma machine, si j'ajoute quelque chose /etc/paths.d, cela apparaît la prochaine fois que je démarre MacVim. Quel format y mettez-vous? Il devrait y avoir un élément par ligne, je crois, avec un répertoire $ PATH sur chaque ligne (par exemple, / usr / texbin).
Télémaque le
J'ai totalement raté votre premier paragraphe à l'origine: Choisir de "Lancer les processus Vim dans un shell de connexion" a fait l'affaire pour moi. Voir ma réponse.
beignet
7

BTW, la préférence "Lancer les processus Vim dans un shell de connexion" n'est plus disponible dans MacVim (du moins pas dans la version 7.3). Je vois que lancer MacVim à partir du Finder obtient le mauvais chemin, mais le lancer à partir d'un shell (comme "mvim") obtient le bon chemin.

LS
la source
3

Il ne provient pas de .bash_profile, mais vous pouvez l'utiliser dans votre .vimrc:

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

Vous devez avoir le: ou ce ne sera pas une variable PATH correcte.

Richard Turner
la source
Je viens de l'essayer, et cela ne semble pas changer le $ PATH pour MacVim. Je l'ai également testé avec Vim dans le terminal (à la fois /usr/bin/vim(d'Apple) et /opt/local/bin/vim(de MacPorts), et cela semble inutile. Vim dans le terminal récupère déjà le bon $ PATH tel qu'il provient de mes fichiers de points.
Telemachus
1
J'ai également essayé cela en vain.
beignet
2

Je ne peux pas croire que je n'ai pas vu ça avant. D'accord, je peux le croire. Quoi qu'il en soit, MacVim est livré avec une option qui résout ce problème. Sous Préférences, cochez simplement "Lancer les processus Vim dans un shell de connexion". Ça y est, ça marche. Snazzy. Stupide que je suis.

Oops

J'ai accidentellement écrit cette réponse sans me rendre compte que Télémaque m'avait déjà donné la bonne réponse . Marqué le sien comme réponse.

Donut
la source
Heureux qu'il soit trié
Télémaque le
1

Cet article Mac Dev Center peut être d'une certaine utilité.

Lawrence Velázquez
la source
Je ne peux pas le faire fonctionner. Peut-être fait quelque chose de mal. L'article suggère d'ajouter la propriété «LSEnvironment» dans le «fichier de liste des propriétés d'informations» d'une application que je supposais être ~ / Library / Preferences / org.vim.MacVim.plist. J'en ai fait un dictionnaire avec 'PATH' (également essayé 'path' et '$ PATH') comme clé a et ce que je veux pour le chemin comme valeur de chaîne. Semble toujours tirer PATH d'une source mystérieuse. Capture d'écran du fichier plist
donut
1

Je n'ai eu aucun problème à ajouter un fichier dans le répertoire paths.d. J'ai ajouté un fichier appelé mysql, dont le contenu était:

/ usr / local / mysql / bin [Retour]

Ensuite, j'ai placé ce fichier dans le répertoire paths.d et changé sa propriété en root: wheel. Maintenant, le répertoire mysql est automatiquement ajouté à ma variable $ PATH.

Je n'ai pas enquêté complètement, mais peut-être (a) inclure le [RETOUR] à la fin de la ligne, et / ou (b) définir la propriété du fichier sur root, pourrait être nécessaire.

Jan Hettich
la source
1

J'ai rencontré ça aujourd'hui. MacVim n'a plus l'option «shell de connexion» et la modification des fichiers à l'échelle du système pour un paramètre spécifique à l'utilisateur est sommaire.

Voici une solution utilisant uniquement les options vim (voir :help :!et :help shell).

Dans votre ~/.vimrcajouter les lignes

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

Cela crée bashvotre shell par défaut à partir de (Mac) Vim, et ajoute l' -lindicateur (shell de connexion) aux commandes appelées avec :!{cmd}. Lors de l'exécution :shell, bash est démarré comme un "shell interactif qui n'est pas un shell de connexion".

Pour faire le $PATHtravail, vous devez le configurer ~/.bash_profilepour :!et ~/.bashrcpour :shell. (Voir INVOCATIONdans man bash)

MISE À JOUR: Ce n'était pas nécessaire sur mon autre ordinateur, il y a donc probablement quelque chose d'autre qui est la cause première.

jladan
la source
1
Vous pouvez faire une chose similaire pour zsh. Définissez $PATHdans .zprofileet incluez le -ldrapeau dans set shellou set shellcmdflag.
jladan
0

J'en sais plus sur Unix que sur Mac, donc les conseils suivants peuvent ou non fonctionner. Essayez de mettre ceci dans votre fichier .vimrc:

! source ~/.bash_profile

Cela pourrait faire l'affaire, mais il y a une légère mise en garde: le .bash_profile n'est destiné à être obtenu qu'une seule fois. Il peut contenir des commandes non idempotentes (choses qui ne devraient être exécutées qu'une seule fois). Exemple concret:

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

Le plus qui est appelé, le plus grand et le plus redondant $PATH. Cependant, si ce n'est pas un gros problème, la recommandation sur Unix serait de mettre la commande unique ~/.bashrcet de l'exécuter à source ~/.bashrcpartir de votre .vimrcfichier.

David Berger
la source
Ni le sourcing .bash_profile ni le .bashrc n'ont fonctionné. J'ai essayé de l'exécuter manuellement, :source .bash_profilemais il arrive juste avec une erreur "Pas une commande d'éditeur" pour chaque commande dans le fichier et la même chose avec .bashrc.
donut
désolé ... à quoi je pensais ... vous pourriez essayer! source .bash_profile
David Berger
J'ai essayé à la fois .bash_profile et .bashrc mais toujours pas. Voici ce que j'utilise dans mon .bash_profile pour changer PATH: 'PATH = / usr / local / bin: /Applications/Espresso.app/Contents/SharedSupport/Tools /: / Applications / MacVim /: $ PATH' Et dans mon .bashrc: 'export PATH = / Applications / MAMP / bin / php5 / bin: $ PATH'. Et c'est .bash_profile qui affecte réellement mes sessions Terminal.
beignet