Saya mengalami sedikit masalah aneh vim
dengan Snow Leopard: Saya mendapatkan kode keluar bukan nol hanya dari menjalankan vim
dan kemudian berhenti.
$ vim
# exit immediately using :q
$ echo $?
1
Namun, jika saya menggunakan path lengkap ke vim
, saya tidak melihat perilaku ini
$ /usr/bin/vim
# exit immediately using :q
$ echo $?
0
Awalnya saya pikir vim
datang dari suatu tempat sebelumnya di jalan saya, tetapi:
$ which vim
/usr/bin/vim
Jadi saya bingung. Apa yang menyebabkan ini?
UPDATE: Masalah ini secara ajaib diselesaikan sendiri, yang membuat saya sangat curiga. Teori terbaik saya saat ini adalah bahwa saya memiliki masalah dengan .vimrc
plugin saya atau yang saya perbaiki secara tidak sengaja saat mengubah pengaturan saya dengan cara lain. Jika saya dapat melacak apa yang saya lakukan untuk memperbaikinya, saya pasti akan memperbarui dengan info itu. Terima kasih atas jawabannya.
-u NONE
, yang memberitahu vim untuk memuat tidak ada file konfigurasi sama sekali. Mungkin bisa membantu dalam beberapa situasi.Jawaban:
Apakah Anda memiliki
filetype off
vimrc? Coba ganti dengan:Saya memiliki masalah ini menggunakan Patogen Tim Pope di OS X. Artikel ini membantu saya memecahkan masalah. Jika Anda menggunakan Patogen ...
... lakukan ini sebagai gantinya:
http://andrewho.co.uk/weblog/vim-pathogen-with-mutt-and-git
sumber
.vimrc
.filetype on
atas yang sudah adafiletype off
.Saya bisa memikirkan dua penjelasan yang mungkin.
vim
sebenarnya adalah alias. Perhatikan bahwawhich
tidak menunjukkan alias, Anda harus menggunakantype
bukan (kecuali Anda menjalankan csh atau Tcsh).Vim pergi mencari beberapa file dalam path relatif ke direktori instalasinya, yang ditentukannya dari melihat
argv[0]
(nama executable yang dilewatkan dari shell), dan entah bagaimana gagal menemukan path itu jika dipanggil melalui path relatif. Secara teknis itu mungkin, tapi saya rasa Vim tidak melakukan itu.sumber
Itu tidak terjadi di sini, dengan sistem serupa: Snow Leopard, dan versi stok Vim.
Coba perintah ini:
Itu akan membuat Anda daftar semua syscalls Vim membuat saat itu menginisialisasi dan kemudian segera dimatikan. (
dtruss
setara denganstrace
di Linux, jika Anda pernah menggunakannya sebelumnya.)Apa yang Anda cari adalah garis yang dekat dengan akhir yang menunjukkan kode kesalahan, biasanya -1. Melihat argumen untuk panggilan sistem akan membawa Anda ke masalah. Satu kemungkinan kemungkinan tinggi adalah file yang hilang, yang mungkin akan muncul pada
open()
panggilan.Jika Vim keluar dengan bersih saat dijalankan dengan cara ini, Anda mungkin memiliki masalah izin, yang
sudo
diperlukandtruss
untuk menjalankannya. Dalam hal ini, Anda mungkin dapat memperbaikinya dengan memperbaiki izin .sumber
dtruss
output untuk pertanyaan Anda. (Atau setidaknya, 25 baris terakhir atau lebih.) Apa yang tidak dapat Anda pahami dapat mengarahkan orang lain ke jawaban yang benar.sudo
"diperbaiki", memberi tahu Anda bahwa Anda perlu menjalankan Izin Perbaikan? Atau apakah itu lebihdtruss
menunjukkan kesalahan syscall, dan jika demikian, yang mana dan mengapa itu gagal?.vim
direktori zipp'd seseorang dan.vimrc
, dan semuanya memiliki path lengkap dan file yang hilang dari plugin yang tidak digunakan.Saya mendapatkan masalah kode pengembalian ini. Saya melacaknya kembali ke
loadview
perintah eksekusi diam-diam di vimrc saya yang memberikan pandangan gigih:Saat memasukkan buffer tanpa nama file, itu
silent! loadview
akan mengeksekusi, menyembunyikan kesalahanyang juga menyebabkan kode kembali diatur ke satu.
sumber