$ PATH di Vim tidak cocok dengan Terminal


10

Saya menggunakan MacVim dan ketika saya tidak meluncurkannya dari Terminal ( mvim) $ PATH-nya tidak termasuk apa yang telah saya atur di .bash_profile saya. Tampaknya hanya memiliki nilai default /usr/bin:/bin:/usr/sbin:/sbin,.

Saya menjalankan OS X 10.5.8. Bahkan jika saya dapat mengaturnya secara manual di .vimrc saya itu tidak apa-apa, meskipun saya lebih suka untuk menariknya dari tempat yang sama dengan Terminal. Saya sudah mencoba mengikuti apa yang disarankan oleh satu situs, tetapi let $PATH += /blah/foo:/bar/etctidak berhasil.

Edit / Solusi: Lihat jawaban saya di bawah ini. MacVim memiliki opsi untuk memperbaikinya.


Jawaban:


12

MacVim tampaknya mendapatkan $ PATH dengan cara yang mengabaikan dotfile khusus pengguna biasa.

Saya tidak bisa mengatakan mengapa mereka lebih suka melakukannya dengan cara ini, tetapi tampaknya itu benar. Dalam preferensi (di bawah tab Advanced), Anda dapat memilih untuk "Luncurkan proses Vim dalam shell login", tetapi itu hanya $PATHsedikit meningkatkan bagi saya.

Yang terbaik yang dapat saya katakan, MacVim menggunakan /usr/libexec/path_helper- yang pada gilirannya menggunakan item yang ditemukan (1) dalam /etc/pathsfile dan (2) apa pun tambahan yang ditemukan dalam /etc/paths.d/direktori. Setiap perubahan yang dibuat dalam direktori home pengguna (via .profileatau sejenisnya) diabaikan.

Singkatnya, Anda mendapatkan default OSX, plus aplikasi apa pun yang menambahkannya /etc/paths.d. (Misalnya, MacTex melakukannya pada sistem saya.) Jadi, jika Anda ingin menyesuaikan jalur MacVim Anda, salah satu caranya adalah menambahkan file dengan item /etc/paths.d. (Saya tidak akan langsung mengedit /etc/pathssejak itu Anda berisiko risiko perubahan dibatalkan oleh pembaruan sistem.)

Terima kasih telah memberi tahu saya tentang hal ini. Saya akan mengajukan bug wishlist di MacVim.


Saya juga akan berpikir demikian, tetapi saya telah menambahkan beberapa hal '/etc/paths.d/' yang muncul di Terminal tetapi tidak dengan MacVim.
donat

Dan sebenarnya, ada lebih banyak di file '/ etc / paths' saya daripada apa yang ada di jalur MacVim.
donat

@ Donut: yah, itu aneh. Di komputer saya, jika saya menambahkan sesuatu /etc/paths.d, itu muncul saat saya boot MacVim. Apa format yang Anda letakkan di sana? Seharusnya satu item per baris, saya percaya, dengan direktori $ PATH pada setiap baris (misalnya, / usr / texbin).
Telemachus

Saya benar-benar melewatkan paragraf pertama Anda pada awalnya: Memilih untuk "Luncurkan proses Vim dalam shell login" melakukan trik untuk saya. Lihat jawaban saya.
donat

7

BTW, preferensi "Luncurkan proses Vim dalam shell login" tidak lagi tersedia di MacVim (setidaknya tidak v7.3). Saya melihat bahwa meluncurkan MacVim dari Finder mendapatkan jalur yang salah, tetapi meluncurkannya dari shell (sebagai "mvim") mendapatkan jalur yang benar.


3

Ini tidak bersumber dari .bash_profile, tetapi Anda dapat menggunakannya di .vimrc Anda:

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

Anda harus memiliki: atau itu tidak akan menjadi variabel PATH yang benar.


Saya baru saja mencobanya, dan ini sepertinya tidak mengubah $ PATH untuk MacVim. Saya juga mengujinya dengan Vim di Terminal (baik /usr/bin/vim(dari Apple) dan /opt/local/bin/vim(dari MacPorts), dan tampaknya tidak perlu. Vim di terminal sudah mengambil $ PATH yang tepat yang bersumber dari file dot saya.
Telemachus

1
Saya mencoba ini juga tetapi tidak berhasil.
donat

2

Saya tidak percaya saya tidak melihat ini sebelumnya. Oke, saya bisa percaya. Bagaimanapun, MacVim hadir dengan opsi yang menyelesaikan ini. Di bawah Preferensi cukup centang "Luncurkan proses Vim di shell login". Itu dia, berhasil. Manis. Bodohnya aku.

Ups

Saya tidak sengaja menulis jawaban ini tanpa menyadari bahwa Telemakus telah memberi saya jawaban yang benar . Tandai sebagai jawabannya.


Senang itu diurutkan
Telemachus

1

Artikel Mac Dev Center ini mungkin bermanfaat.


Tidak bisa membuatnya bekerja. Bisa jadi melakukan sesuatu yang salah. Artikel ini menyarankan untuk menambahkan properti 'LSEnvironment' dalam 'file daftar properti informasi' aplikasi yang saya anggap sebagai ~ / Library / Preferences / org.vim.MacVim.plist. Saya menjadikannya sebuah kamus dengan 'PATH' (juga mencoba 'path' dan '$ PATH') sebagai kunci dan apa yang saya inginkan untuk path sebagai nilai string. Tampaknya masih menarik PATH dari beberapa sumber misterius. Cuplikan layar file plist
donat

1

Saya tidak punya masalah menambahkan file ke direktori paths.d. Saya menambahkan file bernama mysql, yang isinya:

/ usr / local / mysql / bin [Kembali]

Lalu saya menempatkan file ini di bawah direktori paths.d, dan mengubah kepemilikannya menjadi root: wheel. Sekarang direktori mysql secara otomatis ditambahkan ke variabel $ PATH saya.

Saya tidak menyelidiki sepenuhnya, tetapi mungkin (a) termasuk [KEMBALI] di akhir baris, dan / atau (b) mengatur kepemilikan file untuk di-root, mungkin diperlukan.



1

Saya mengalami ini hari ini. MacVim tidak lagi memiliki opsi "login shell", dan mengedit file seluruh sistem untuk pengaturan khusus pengguna tidak jelas.

Berikut ini solusinya dengan hanya menggunakan opsi vim (lihat :help :!dan :help shell).

Di ~/.vimrctambahkan baris Anda

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

Ini membuat bashshell default Anda dari (Mac) Vim, dan menambahkan -lflag (shell login) ke perintah yang digunakan :!{cmd}. Saat menjalankan :shell, bash dimulai sebagai "shell interaktif yang bukan shell login".

Untuk membuat $PATHpekerjaan, Anda harus mengaturnya ~/.bash_profileuntuk :!, dan ~/.bashrcuntuk :shell. (Lihat INVOCATIONdi man bash)

UPDATE: Ini tidak perlu di komputer saya yang lain, jadi ada kemungkinan hal lain yang menjadi penyebab utama.


1
Anda dapat melakukan hal serupa untuk zsh. Tentukan $PATHdi .zprofile, dan termasuk -lbendera baik set shellatau set shellcmdflag.
jladan

0

Saya tahu lebih banyak tentang unix daripada tentang mac, jadi saran berikut ini mungkin berhasil atau tidak. Coba letakkan ini file .vimrc Anda:

! source ~/.bash_profile

Itu mungkin berhasil, tetapi ada sedikit peringatan: .bash_profile hanya dibuat satu kali. Ini mungkin berisi beberapa perintah non-idempoten (hal-hal yang hanya boleh dijalankan sekali). Inti masalah:

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

Semakin banyak yang dipanggil, semakin besar dan semakin berlebihan $PATH. Namun, jika itu bukan masalah besar, rekomendasi unix adalah menempatkan perintah satu kali ~/.bashrcdan menjalankan source ~/.bashrcdari .vimrcfile Anda .


Baik sumber .bash_profile atau .bashrc tidak berfungsi. Saya mencoba menjalankan secara manual :source .bash_profiletetapi hanya muncul dengan kesalahan "Bukan perintah editor" untuk setiap perintah dalam file dan sama dengan .bashrc.
donat

maaf ... apa yang aku pikirkan ... kamu boleh coba! sumber .bash_profile
David Berger

Sudah mencoba keduanya .bash_profile dan .bashrc tapi tetap tidak jalan. Inilah yang saya gunakan di .bash_profile saya untuk mengubah PATH: 'PATH = / usr / local / bin: /Applications/Espresso.app/Contents/SharedSupport/Tools /: / Applications / MacVim /: $ PATH' Dan di dalam saya .bashrc: 'export PATH = / Applications / MAMP / bin / php5 / bin: $ PATH'. Dan .bash_profile yang benar-benar memengaruhi sesi Terminal saya.
donat

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.