Vimで自動折りたたみを有効にするにはどうすればよいですか? set foldmethod=syntax
は何もしないようです。
構文に基づいた折りたたみを許可するには、次のようなものを.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を使用しない人はドキュメントを編集するときにマークを保持しません。手動の折り畳みは、誰かがソース管理でコードを編集し、すべての折り畳みが間違った場所に配置されるまで、うまく機能します。
:help fold-methods
さまざまなフォールド方法の詳細を学習します。:help folding
折り畳みを操作するためのキーボードコマンドを学習します。:help folds
折り畳みのすべてのトピックに関するヘルプ。JavaScriptの折りたたみも機能しませんでした。 set syntax = javaScript(大文字のSを使用)を実行すると、突然動作しました。
ここですべてのソリューションを試してみましたが、 vim-javascript プラグインと折りたたみが機能するようになるまで、NeoVim v0.3.1で動作しませんでした。
Vimの新しいバージョンで折りたたみを有効にする方法が変更されました(vim 7.4を使用しています)。次に、ファイル~/.vim/ftplugin/javascript.vim
(Linux)を作成し、Eric Johnsonの回答で説明されているように、コードの折りたたみ手順を追加する必要があります。これを.vimrc
に入れることにより、特定のファイルタイプのファイルタイプの検出とプラグインのロードを有効にする必要があります。
filetype plugin on