<p>Python的string-literal并置使多行字符串更容易编写,也更漂亮,但是当我缩进了四到五个缩进并且想要使用整行时(前导空格无关紧要),Vim的<code>foldmethod=indent</code>就会崩溃。在</p>
<p>例如:</p>
<pre class="lang-py prettyprint-override"><code>def getQuotation():
print "Fetching quotation from the absolutely useless function."
return ("Four score and seven years ago our fathers brought forth, "
"upon this continent, a new nation, conceived in liberty, and dedicated "
"to the proposition that \"all men are created equal\"")
</code></pre>
<p>应该这样折叠:</p>
^{pr2}$
<p>但我得到的却是:</p>
<pre class="lang-py prettyprint-override"><code>def getQuotation():
+-- 2 lines: print "Fetching quotation from the absolutely useless function."--
"upon this continent, a new nation, conceived in liberty, and dedicated "
"to the proposition that \"all men are created equal\"")
</code></pre>
<p>我尝试设置<code>foldignore=\"</code>,但没有成功。Vim的<code>help foldignore</code>提供了这样一个主题:</p>
<blockquote>
<p>Used only when 'foldmethod' is "indent". Lines starting with
characters in 'foldignore' will get their fold level from surrounding
lines. White space is skipped before checking for this character.</p>
</blockquote>
<p>有没有什么明显的东西我遗漏了,或者我将不得不求助于<code>foldmethod=expr</code>,以缩进为基础,除了我自己的角盒?在</p>
<p><strong>编辑:</strong>我至少取得了一些进展;事实证明,如果我在字符串<em>和</em>后面添加一个非空行,用<code>set fdm=indent</code>刷新缩进,那么块就会按预期折叠。即使是一个空的注释(<code>#</code>)也足够了。在</p>