WIKIによると、スクリプトは構文に基づいて折りたたむことができます。誰かがPython docstringを折り畳むための解決策を持っていますか?
基本的に、私が必要なのは次のように折り畳むことだけです""" text between triple quotation marks """
:
ありがとう。
WIKIによると、スクリプトは構文に基づいて折りたたむことができます。誰かがPython docstringを折り畳むための解決策を持っていますか?
基本的に、私が必要なのは次のように折り畳むことだけです""" text between triple quotation marks """
:
ありがとう。
回答:
フォールドで遊ぶときに考慮すべきいくつかのファンキーな要素があります(それらは複雑であり、ドキュメントを掘り下げることなく理解するのは簡単ではありません。)
foldmethod
するにはsyntax
、私が倍に戦っていたとき、私の問題だったが、詳細はドキュメントを見てみましょう。..構文 フォールド構文
フォールドは、 "fold"引数を持つ構文アイテムによって定義されます。|:syn-fold |
折りたたみレベルは、折りたたみをネストすることによって定義されます。フォールドのネストは「foldnestmax」で制限されます。
適切な構文同期を指定するように注意してください。これが正しく行われない場合、折り目が表示された強調表示と異なる場合があります。これは、複数の行に一致するパターンを使用する場合に特に関係があります。疑問がある場合は、ブルートフォース同期を使用してみてください。
:syn sync fromstart
注意すべき主な点は、sync fromstart
これはファイル全体で一致する正規表現があり、ヘッダーのみをキャッチしたい場合に役立つヘルパーです。あなたの場合、あなたはこれを無視することができるはずですが、知っておくべきことだけです。
以来"""
、私たちは、簡素化することができ、かなり予測可能であるstart
とend
、このような何かを見て:
syn region foldImports start='"""' end='"""' fold keepend
両方のためにstart
とend
私達はちょうど上の一致しようとしている'"""'
(または正規表現)スクリプトタグのため。私はあまりPythonの人ではないので、上のコードはテストしませんでしたが、ここから理解できると思います。
foldingmethod
すると機能syntax
します。
fold
オプションに追加されたものを試してみてください、そしてそれは私にはかなりうまくいきます。
三重引用符で囲まれた文字列内のすべての強調表示を保持する、より良い方法を次に示します。
syn region pythonString matchgroup=pythonTripleQuotes
\ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend fold
\ contains=pythonEscape,pythonSpaceError,pythonDoctest,@Spell
これをに追加し~/.vim/after/syntax/python.vim
ます。
このコマンドは正確に取得され/usr/share/vim/vim74/syntax/python.vim
、fold
キーワードのみが追加されています。ダンの回答がハイライトを保持しないのに、なぜこれがハイライトを保持するのですか?重要なのは、これには以下が含まれるということです。
contains=pythonEscape,pythonSpaceError,pythonDoctest
通常、Vimは1つの構文領域のみを適用しcontains=
ますが、構文領域に他の構文領域を含めることができることがわかります。
また、次のString
理由により、として強調表示されています。
HiLink pythonString String
構文領域を定義するだけでは不十分です。これをハイライトグループにリンクする必要があります。