LoginSignup
8
5

More than 5 years have passed since last update.

vim scriptデバッグ方法

Posted at

現在、 @mattn 氏作のQiita-vimがどうしても使いたくて、色々と修正をしています(Qiita API v2に対応させる必要があるため)
その時に使ったデバッグ方法です
(vim script初心者のため最適解ではない可能性があります)


vim scriptのデバッグ方法はいくつかあります

:debugコマンド

:debug <command>

と実行することで、コマンドをステップ実行することができます。
ステップ実行の際のコマンドで、主に自分が使ったものをあげておきます。
尚正確かつ全てのコマンドについてはこちらのvim-jpさんの:help日本語訳のページにあります。
説明のテキストもそこから借りています(正確さのため)

1 2
step コマンドを実行しそれが終わるとデバッグモードに戻る。
ユーザー関数やソースファイルの呼び出し時には呼び出し先の行に進む。
bt 現在のデバッグセッションの呼び出しスタックトレースを表示する
finish 実行中のスクリプトやユーザー関数を終了し呼び出し元でデバッグモードに戻る。
up 呼び出しスタックトレースを 1 つ上へ移動する。
down 呼び出しスタックトレースを 1 つ下へ移動する。
quit 異常停止する。これはCTRL-Cを使うことに似ているが、全てを停止するわけではない。次のブレークポイントで停止する。

自分は上記のコマンドのみ使いました...(breakポイントは設定してみたのですがうまく使えなかった)

:verboseコマンド

:<num>verbose <command>

上記:debugでのステップ実行がいちいちめんどくさい時は、これで全コマンドログを見ることができます。
breakポイントの設定ができればそちらの方がいいのですが自分はうまく使いこなせなかったので...
初めはこちらでログを見ていました。
<num>の部分に与えた数値によって挙動が変わるようです。
参考例では99を設定していたので自分もそのまま使いましたが、どうやらもっと小さな値で良いようです...(これについては参考サイトを忘れてしまったためうろ覚えです)

参考: [Gist] mugyu/vimscript_debug.vim


ちなみにこれは後から見つけたのですが、ログをファイルに出力することもできるようです。
(尚情報源が古いので今動くのか確認していません。)(まぁvimは後方互換大事にしていると聞くので多分使えるとは思いますが...)
誰か情報持っていれば教えてくださるとありがたいです

dackdive's blog/vimでランタイムログを出力する


これまたちなみにですが、Qiita-vimを動かせるようになったらまた投稿します。今度はQiita-Vimから。

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5