web-dev-qa-db-ja.com

「vimランタイムログ」はありますか?

時々、vimrcでカスタマイズ/コマンドを試します。すべてが正しいように見えますが、機能しません。

Vimの起動時に何が起こっているのか、どのコマンドが失敗したのかを知るのは難しいため、vimrcで問題の原因となっているものをデバッグするのは本当に困難です。これは試行錯誤のアプローチであり、時間がかかり、実際にPITAです。たとえば、私は問題を抱えています 一部のファイルにsnipmateプラグインを使用 だけで、問題を発見する方法についての手がかりがありません。

Vimの起動時に「実行時ログ」があり、実行したコマンド、失敗したコマンドなどを示しますか?これは私を大いに助けます。

-V [N]オプションを指定してvimを実行すると、かなり大きなランタイムログが実行されます。ここで、Nはデバッグレベルです。

vim -V9myVim.log

myVim.logというファイル名で現在のディレクトリにデバッグレベル9のログを作成します

144
sleepynate

:messagesは、vimステータスラインに(おそらく短時間)表示されたすべての警告、エラー、および情報メッセージを表示します。

:echo errmsgは、最新のエラーメッセージを出力します。

g<は、ほとんどの人が知らない別の機能です。 :help g<から:

g<コマンドを使用すると、前のコマンド出力の最後のページを表示できます。これは、ヒット入力プロンプトで<Space>を誤って入力した場合に特に便利です。

たとえば、:!lsを試してからプロンプトをキャンセルし、g<を押します。

88
Justin M. Keyes

この関数を.vimrcに追加します。

_function! ToggleVerbose()
    if !&verbose
        set verbosefile=~/.log/vim/verbose.log
        set verbose=15
    else
        set verbose=0
        set verbosefile=
    endif
endfunction
_

次に、ディレクトリ_~/.log/vim_を作成し、ToggleVerbose()を呼び出して、ログを_~/.log/vim/verbose.log_に取得します。冗長レベルを上げたという理由だけで通常は表示されない"表示するには深すぎるネストされた変数"エラーをキャッチできることに注意してください。

13
ZyX

ランタイムログ自体はないと思いますが、デバッグモードで実行できます。
http://web.archive.org/web/20090323034339/http://www.troubleshootingwiki.org/Debugging_Vim_Scripts

2
Jay

&verboseのため、rootで実行するときに「ToggleVerbose()」関数を使用するには「set nocp」を追加する必要がありました。

1
masuch

これはおそらくすべてに反しますSOの略ですが、ここに私がやることがあります。

0
puk