78

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

4

4 に答える 4

143

構文に基づいて折りたたむことができるようにするには、次のようなものを次のように追加します.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またはにある言語の構文ファイルで定義されます/usr/share/vim/vimXX/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折りたたみのトピック全体のヘルプについては、を参照してください。
于 2011-01-25T03:06:28.517 に答える
3

JavaScriptの折りたたみも私にはうまくいきませんでした。構文=javaScript(大文字のS)を設定すると、突然機能することがわかりました。

于 2015-07-01T12:50:11.703 に答える
2

ここですべてのソリューションを試しましたが、NeoVim v0.3.1で機能するものはありませんでした。vim -javascriptプラグインが見つかり、折りたたみが機能し始めるまでは。

于 2018-11-29T23:08:57.120 に答える
1

新しいバージョンのVimでフォールディングを有効にする方法が変更されました(私はvim 7.4を使用しています)。次に、(Linuxで)ファイルを作成し、~/.vim/ftplugin/javascript.vimEricJohnsonの回答で説明されているようにコード折り畳み命令を追加する必要があります。特定のファイルタイプのファイルタイプの検出と読み込みプラグインは、これを次の場所に配置して有効にする必要があります.vimrc

filetype plugin on
于 2016-08-19T11:38:32.340 に答える