2011-11-09 7 views
10

「予期せぬkEnd」の問題に熟知していると確信しています。 Vimは "do"と "end"にマッチしないので、彼らはいつも(私にとって)追跡するのに苦労しています。 (そして、明らかに "if"のような "end"で終わる他の要素)VimとRuby - "do"と "end"のマッチング?

これらの一致を表示するようにVimを設定してデバッグを容易にする方法はありますか?

+0

適切なインデントが役立つ場合があります。 – sidyll

+3

それは助けになり、私のすべてのファイルは完全にインデントされています。しかし、特に入れ子になっているインデントがひどく深くなってきてしまうようなことはありません。(また、問題が不適切なインデントではなく、ブロックの始めにdoを入れるのを忘れたという事実) – GlyphGryph

+0

[Syntastic](https://github.com/scrooloose/syntastic)を使用してください。 – Hauleth

答えて

5

私はthis macroを使用し、それを有効にするために私のvimrcに以下を追加:

" % to bounce from do to end etc. 
runtime! macros/matchit.vim 

私はのためのマッチング終わりを検索したい場合は、私が上にカーソルおよび%を打ちます。

+0

うーん...これは私が説明で探しているものですが、実際には/ work /には見えません。それは単に行頭にジャンプします。奇妙な。いいえ、待ってください...ああ、ifsのために働く、それは/ end/sから/ backwards /へ行くが、私はそれを "do"から進めることはできない。 – GlyphGryph

+0

実際には、ルビ構文をまったくマッチさせていないようでもありません。私はfoldmethod = indentを使うので、これは...かなり無駄です。確かに私がバグを追跡するのに役立つわけではありません。申し訳ありませんが、その良いアイデアですが、この実装は間違いなく欠けています。 :/ – GlyphGryph

+0

問題を報告しているすべてのケースで私のために働きます。別のソースからマクロを取得している可能性があります。追跡できるかどうか確認してください。 –

4

"endwise"は、自動的にそれらを追加する非常に素晴らしいvim拡張機能です。これは、見つからなかったendの量を大幅に削減します。など:私はvundleで簡単にインストールすることができますthis matchitクローンを、使用

http://www.vim.org/scripts/script.php?script_id=2386

+1

私もこれを使用しますが、時にはそれがすでに追加されていることを忘れて、自分で追加します。それから私はdo/endの海に迷っています。それはマッチが入るところです。 –

12

最近のvim(私は7.4を使用しています)を使用している場合、ビルトインmatchitマクロはルビコードでうまく動作します。

は単にルビーのファイルに/終了コンボや他の多くを行うと一致するように、あなたの.vimrc

runtime macros/matchit.vim 

ヒット%に以下を加えることによってそれを有効にします。

関連する問題