5

私はこのようなものを使用します:1,40 foしかし、最も効率的な方法ではないと思います。

君は?

4

4 に答える 4

8

foldmethod=marker入力するマッピングと、折り畳みを開始および終了する場所<!-- {{{ -->を使用して持っています。<!-- }}} -->次のような開始ブロックタグのある行に開始マーカーを配置します。

<div id="topmenu"> <!-- {{{ -->

そのため、折りたたむと、余分なコメントを追加しなくても、折りたたみに何が含まれているかがすぐにわかります。

CSS の場合はさらに簡単です。使用するだけでfoldmarker={,}、すべての定義が自動的に折りたたまれ、必要なときに開くことができるすべてのクラス、タグ、および ID の非常に明確なリストが表示されます。実際、すべての CSS ファイルの最後に次の行があります。

/* vim: set fdm=marker fmr={,}: */

必要に応じて、折り畳む領域を視覚的に選択して押すこともできzfます。

于 2010-01-31T09:57:02.563 に答える
6

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 で問題なく機能しますが、ドキュメントの大きな宣言的な目次スタイルの折りたたみにはマーカーを使用します。誰がファイルを作成したかによって、一方が他方よりもうまく機能するため、両方にすばやくアクセスする必要があります。

于 2010-01-31T10:34:23.697 に答える
3

vim for html の最適な折りたたみ方法:代わりに haml を使用します。css の最適なオプション:代わりに sass を使用します

私は実際に深刻です。彼らはそれをはるかにコンパクトにします。

于 2010-01-31T09:32:36.720 に答える
1

私は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 は前の行を参照するのではなく、次の行だけを参照します。

于 2010-07-01T15:32:01.803 に答える