回心誌

日々是回心

【cython、vim】vimでcythonコードの折りたたみ

d.hatena.ne.jp

上記記事によると、pythonコードの折りたたみを自動でやってくれるありがたいプラグインがあるようで、ありがたく使わせていただくことにした。

といわけで、そろそろPythonのヤツも欲しいなと思ったので、プラグインを探しました。割合古いものですが、見やすいので大分気に入っています。

python_fold - Folding expression for python : vim online

これを ~/.vim/plugin の下に設置すればそれでおkです。

落としてきて言われた通り置くと、確かに折りたためてる!すげー!

しかし、当然だがcythonのコードには対応していない。
cython用のカスタマイズしたので、その方法をここに記す。
(たいしたことはしてないが)

"def"で検索し、以下の箇所が該当したので、そこにちょこっとコードを追加する。

   " Classes and functions get their own folds
    if line =~ '^\s*\(class\|def\)\s'
    return ">" . (ind / &sw + 1)
    endif

このコード↑を、こう↓
(書き換えてるのは2行目のif文の条件だけ)

   " Classes and functions get their own folds
    if line =~ '^\s*\(class\|def\|cdef\|cpdef\)\s' && line =~ ':\s*$'
    return ">" . (ind / &sw + 1)
    endif

正直、正規表現はよく分からんが、class、def、cdef、cpdefで始まってコロン(:)で終わる行があったら折りたたむ動きができてるはず。


Vim script テクニックバイブル ~Vim使いの魔法の杖

Vim script テクニックバイブル ~Vim使いの魔法の杖