web-dev-qa-db-ja.com

Vimで自動折り畳みを有効にするにはどうすればよいですか?

Vimで自動折りたたみを有効にするにはどうすればよいですか? set foldmethod=syntaxは何もしないようです。

73
Eric Johnson

構文に基づいた折りたたみを許可するには、次のようなものを.vimrc

set foldmethod=syntax
set foldlevelstart=1

let javaScript_fold=1         " JavaScript
let Perl_fold=1               " Perl
let php_folding=1             " PHP
let r_syntax_folding=1        " R
let Ruby_fold=1               " Ruby
let sh_fold_enabled=1         " sh
let vimsyn_folding='af'       " Vim script
let xml_syntax_folding=1      " XML

構文ベースの折りたたみは、$ VIM/syntaxにある言語の構文ファイルで定義されています。ただし、一部の言語では、構文ファイルに折りたたみ規則が組み込まれていません。たとえば、Python。これらの言語の場合、 http://vim.sf.net から何かをダウンロードする必要があります。そうでない場合は、インデントに基づいて折り目を使用する必要があります。これを効果的に行うには、次を.vimrcファイルに追加します。

set foldmethod=indent
set foldnestmax=2

他の種類の折りたたみ

6種類の折り畳みがあります。

manual          manually define folds
indent          more indent means a higher fold level
expr            specify an expression to define folds
syntax          folds defined by syntax highlighting
diff            folds for unchanged text
marker          folds defined by markers in the text

個人的には、構文フォールドのみを使用しています。通常、すべてのインデントレベルを折りたたむのではなく、メソッドを折りたたむだけです。一貫性のないインデントと、奇妙な形式のレガシーコードが動作していると、インデントの折り畳みが困難または不可能になることがよくあります。ドキュメントにマークを追加するのは面倒で、Vimを使用しない人はドキュメントを編集するときにマークを保持しません。手動の折り畳みは、誰かがソース管理でコードを編集し、すべての折り畳みが間違った場所に配置されるまで、うまく機能します。

もっと読む

  1. 見る :help fold-methodsさまざまなフォールド方法の詳細を学習します。
  2. 見る :help folding折り畳みを操作するためのキーボードコマンドを学習します。
  3. 見る :help folds折り畳みのすべてのトピックに関するヘルプ。
134
Eric Johnson

JavaScriptの折りたたみも機能しませんでした。 set syntax = javaScript(大文字のSを使用)を実行すると、突然動作しました。

3
Bet Lamed

ここですべてのソリューションを試してみましたが、 vim-javascript プラグインと折りたたみが機能するようになるまで、NeoVim v0.3.1で動作しませんでした。

1
geekymartian

Vimの新しいバージョンで折りたたみを有効にする方法が変更されました(vim 7.4を使用しています)。次に、ファイル~/.vim/ftplugin/javascript.vim(Linux)を作成し、Eric Johnsonの回答で説明されているように、コードの折りたたみ手順を追加する必要があります。これを.vimrcに入れることにより、特定のファイルタイプのファイルタイプの検出とプラグインのロードを有効にする必要があります。

filetype plugin on
1
Diego