したがって、デフォルトのMac OSX Yosemiteで実行し、いくつかのvi /tmp/foo
テキストを入力して最後に実行した場合:Wq
(よく作成するタイプミス):wq
...すべてが問題ないようですが、何らかの理由で終了コードは1になります。同じ操作を繰り返したがそれを実行しない場合は、:Wq
0が返されます。
これは、コミットメッセージを入力するgitコミットについてクレイジーです。この間違いをすると、gitエントリviがファイルに書き込まれないため、突然コミットメッセージが失われます。
ファイルに書き込むときに実際のエラーがない限り、これ以上発生せずに常に0を返すようにこの動作を変更するにはどうすればよいですか?
答え1
これはvimで意図的に行われます。
/ * Exモードで実行すると、エラーのためゼロ以外のシャットダウンで終了しました。 *コード。 POSIXではこれが必要ですが、 *基準。 */ if(exmode_active) 終了値+ = ex_exitval;
- この
ex_exitval
変数はエラーメッセージによって設定されます。emsg
:
Called_emsg = TRUE; if(emsg_silent==0) ex_exitval = 1;
- そして
ex_exitval
いいえ削除されました。
したがって、exモードでは、「すべての」エラーメッセージ(:
コマンド) この結果を生成します。クイックチェックにより、viモードZZ
もexモードエラーメッセージの影響を受けることがわかります。