Snow Leopardで奇妙な問題に封じ込められました。vim
単に実行して終了すると、ゼロ以外の終了コードが表示されます。vim
$ vim
# exit immediately using :q
$ echo $?
1
ただし、フルパスを使用すると、vim
この動作は表示されません。
$ /usr/bin/vim
# exit immediately using :q
$ echo $?
0
最初、私はvim
それが私の道のより早い場所から来たと思いましたが:
$ which vim
/usr/bin/vim
だから私は迷っています。原因は何ですか?
更新:この問題は魔法のように自然に解決され、非常に懐疑的でした。現在の最良の理論は、.vimrc
他の方法で設定を調整している間に誤って修正したプラグインに問題があることです。問題を解決するために私が行ったことを正確に追跡できる場合は、その情報を必ず更新してください。答えてくれてありがとう。
答え1
vimrcにありますかfiletype off
?次のように変更してください。
filetype on
filetype off
Tim PopeのPathogenを使用して、OS Xでこの問題に直面しました。この記事この問題を解決するのに役立ちました。病原体を使うなら..
call pathogen#runtime_append_all_bundles()
…代わりにこうしてください。
filetype on
filetype off
call pathogen#runtime_append_all_bundles()
call pathogen#helptags()
filetype plugin indent on
答え2
私は2つの可能な説明を考えることができます。
vim
実際にはエイリアスです。気づくwhich
エイリアスを表示したくない場合は、以下をtype
使用する必要があります。(cshやtcshを実行しない限り)Vim はインストールディレクトリの相対パスでファイルを探します。これは
argv[0]
、シェルから渡された実行可能ファイルの名前を調べることによって決定されます。相対パスを介して呼び出すと見つかりません。これは技術的には可能ですが、Vimが実際にはそうするとは思いません。
答え3
単にvimを実行して終了すると、ゼロ以外の終了コードが得られます。
これには、Snow LeopardとVimの基本バージョンと呼ばれる同様のシステムがあるため、そのようなことは起こりません。
次のコマンドを試してください。
$ sudo dtruss vim +q
これにより、Vimが初期化された直後に終了したときに実行されるすべてのシステムコールのリストが表示されます。 (以前に使用したことがある場合は、Linuxでもdtruss
同じです。)strace
あなたが探しているのは、エラーコード(通常は-1)を表示する最後の近くの行です。システムコールのパラメータを見ると問題が発生します。可能な限りの可能性は、ファイルが欠落して通話中に表示される可能性があることですopen()
。
sudo
この方法で実行すると Vim が完全にシャットダウンされる場合、実行を許可する必要がある権限の問題がある可能性があり、dtruss
現在解決中です。この場合、次の方法で問題を解決できます。修理権限。
答え4
この戻りコードの問題が発生しました。loadview
継続的なビューを提供するvimrcで自動的に実行されるコマンドを追跡してみました。
" Persistent views
if has("mksession")
set viewdir=$HOME/.vimviews
if has("unix")
silent execute '!mkdir -p $HOME/.vimviews'
endif
au BufWinLeave * silent! mkview "make vim save view (state) (folds, cursor, etc)
au BufWinEnter * silent! loadview "make vim load view (state) (folds, cursor, etc)
endif
ファイル名なしでバッファに入ると実行され、silent! loadview
エラーを隠します。
E32:ファイル名なし
これにより、戻りコードも1に設定されます。