私はこのようなものを使用します:1,40 fo
しかし、最も効率的な方法ではないと思います。
君は?
foldmethod=marker
入力するマッピングと、折り畳みを開始および終了する場所<!-- {{{ -->
を使用して持っています。<!-- }}} -->
次のような開始ブロックタグのある行に開始マーカーを配置します。
<div id="topmenu"> <!-- {{{ -->
そのため、折りたたむと、余分なコメントを追加しなくても、折りたたみに何が含まれているかがすぐにわかります。
CSS の場合はさらに簡単です。使用するだけでfoldmarker={,}
、すべての定義が自動的に折りたたまれ、必要なときに開くことができるすべてのクラス、タグ、および ID の非常に明確なリストが表示されます。実際、すべての CSS ファイルの最後に次の行があります。
/* vim: set fdm=marker fmr={,}: */
必要に応じて、折り畳む領域を視覚的に選択して押すこともできzf
ます。
vimrc でこれを使用して、インデントとマーカーを切り替えます。
let g:FoldMethod = 0
map <leader>ff :call ToggleFold()<cr>
fun! ToggleFold()
if g:FoldMethod == 0
exe 'set foldmethod=indent'
let g:FoldMethod = 1
else
exe 'set foldmethod=marker'
let g:FoldMethod = 0
endif
endfun
インデントは、ほとんどの美化された html で問題なく機能しますが、ドキュメントの大きな宣言的な目次スタイルの折りたたみにはマーカーを使用します。誰がファイルを作成したかによって、一方が他方よりもうまく機能するため、両方にすばやくアクセスする必要があります。
vim for html の最適な折りたたみ方法:代わりに haml を使用します。css の最適なオプション:代わりに sass を使用します。
私は実際に深刻です。彼らはそれをはるかにコンパクトにします。
私はfoldmethod=ignore
ほぼ独占的に使用しています。ただし、行を無視したいという私の願望は、デフォルトで、下の行ではなく、上または下の行のより高い折りレベルになり、次のようになりました。
" Default foldmethod
" Similar to fdm=indent, but lets blank and comment lines default high.
set fen fdm=expr fdi=
set foldexpr=EswaldFoldLevel(v:lnum)
function! EswaldFoldLevel(lnum)
let ignored = '^\s*\([#/*]\|$\)'
if getline(a:lnum) !~ ignored
" In the general case, just use the indent level.
" It would be nice if it didn't skip several levels...
return indent(a:lnum) / &sw
endif
let previndent = 0
let prevnum = a:lnum - 1
while prevnum > 0
if getline(prevnum) =~ ignored
let prevnum = prevnum - 1
else
let previndent = indent(prevnum) / &sw
break
endif
endwhile
let nextindent = 0
let maxline = line('$')
let nextnum = a:lnum + 1
while nextnum <= maxline
if getline(nextnum) =~ ignored
let nextnum = nextnum + 1
else
let nextindent = indent(nextnum) / &sw
break
endif
endwhile
return max([previndent, nextindent])
endfunction
(シンタックスハイライトですみません…)
私はそれをカスタムプラグインとして使用し、個々のファイルタイプがそれをオーバーライドできるようにします。たとえば、Python は前の行を参照するのではなく、次の行だけを参照します。