Vimでコードの折りたたみを有効にして使用するにはどうすればよいですか?


回答:


40

ありませんあなたがあなたの中にリンクされているページからのコマンドを配置する必要はありません~/.vimrc、あなただけの発行後にそれらを入力することができます:してvimコマンドプロンプトを取得します。

ただし、次の行を配置する場合:

set foldmethod=indent   
set foldnestmax=10
set nofoldenable
set foldlevel=2

あなたが与えたリンクに示されて~/.vimrcいるように、ファイルで折りたたみを使用するたびにそれらを入力する必要はありません。これset nofoldenableにより、開くときにファイルが「通常」、つまり折りたたまれていないことが確認されます。


私はCで書かれたコードを持っているので、その機能の1つについて説明します。<kbd> esc </ kbd>を押してコマンドに移動します。:の後に、zcと書いても何も起こりません。
モハマドレザレスワニ14

1
@alexは、後に入力しないzcです:set入力するときに表示されるプロンプトの後にコマンドを入力します:zcあなたが自由にカーソルを移動することができますときに使用するのと同じようにあなたは、入力ztカーソルが現在の画面の一番上に上にあるテキストを取得します。
アントン14

39

デフォルトで折りたたむ

Vimのデフォルトの折りたたみ方法はmanual、折りたたみが手動で作成されることを意味します。それ以外の場合は、何も使用して閉じたり開いたりすることが折りたたまれていないzazoまたはzcあなたが説明したように。しかし、あなたはで折り目を作成することができるzf{motion}ノーマルモードまたはzfビジュアルモード。たとえばzfj通常モードで現在の行と次の行の折り畳みを作成します。

折りたたむ indent

@Anthonによる受け入れられた答えは、折りたたみ方法をindent; に設定する方法を説明しています。つまり、折りたたみはインデントのレベルによって定義されます。

折りたたむ syntax

より便利な方法では、現在のバッファーの言語構文に基づいて折り畳みを自動的に作成できます。あなたは、プログラミング言語、レッツ・コール、それを使用している場合はLを、あなたはの定義折りたたみているLを(例えば、あなたがの折り畳み情報ここでVimのプラグインがインストールされているLが定義されているが、のようなc.vim C / C ++のために、またはパイソン-Pythonのモード)、折りたたみ方法を設定する必要がありますsyntax

set foldmethod=syntax

それでおしまい。折り畳みを操作するための最も便利なコマンドは次のとおりです。

  • zo カーソルで折り目を開きます。
  • zShift+ oは、カーソルですべての折り畳みを開きます。
  • zc カーソルで折り目を閉じます。
  • zmfoldlevel1つ増やします。
  • zShift+ m開いているすべての折り畳みを閉じます。
  • zrfoldlevel1つ減らします。
  • zShift+ rfoldlevelゼロに減少します-すべての折り畳みが開きます。

14

体系的に使用する必要はありません。通常、モーションまたはセクションごとに折り目を手動で選択します。たとえば、段落のzfip折りたたみはで、次の20行の折りたたみはzf20jです。利用za切り替えると、zd削除します。

これにはもう少し手間がかかりますが、折り畳むことで手元の作業を反映できます。


4

folding@Anthonの回答のように、現在のセッションで有効にすることができます。ただし、永続的にする場合は、少なくとも次の行.vimrcを折り畳み作業に設定する必要があります。

set foldmethod=indent

indent 折り畳みのようなもので、もっと見ることができます :help foldmethod

'foldmethod' 'fdm'      string (default: "manual")
                        local to window
                        {not in Vi}
                        {not available when compiled without the +folding
                        feature}
        The kind of folding used for the current window.  Possible values:
        fold-manual     manual      Folds are created manually.
        fold-indent     indent      Lines with equal indent form a fold.
        fold-expr       expr        'foldexpr' gives the fold level of a line.
        fold-marker     marker      Markers are used to specify folds.
        fold-syntax     syntax      Syntax highlighting items specify folds.
        fold-diff       diff        Fold text that is not changed.

これで、でファイルを開くvimたびに、設定したメソッドによってコードが折りたたまれていることがわかります。そして、あなたが使用することができzazczo


vimrcを使用する必要はありません、私はやったことがないよう、私はたまにしか折りたたみ使うよう
Anthonの

@アンソン:ああ、もちろん。回答に情報を追加します。
cuonglm
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.