簡體   English   中英

如何在 Vim 中啟用自動折疊?

[英]How do I enable automatic folds in Vim?

如何在 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/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的整個主題的幫助,請參閱:help folds

JavaScript 折疊對我也不起作用。 我發現當我確實設置了語法 = javaScript (帶有大寫的 S)時,它突然起作用了。

在新版本的 Vim 中啟用折疊的方式已經改變(我使用的是 vim 7.4)。 現在您應該創建文件~/.vim/ftplugin/javascript.vim (在 linux 上)並添加您的代碼折疊指令,如 Eric Johnson 的回答中所述。 必須通過將其放入您的.vimrc來啟用特定文件類型的文件類型檢測和加載插件:

filetype plugin on

在這里嘗試了所有解決方案,但沒有一個適用於 NeoVim v0.3.1,直到我發現vim-javascript插件和折疊開始工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM