Vim

使 vim fold 也在函式後隱藏換行符

  • December 7, 2020

如何製作 vim 的折疊功能 - 當使用 foldmethod=syntax 時 - 在每個函式後隱藏一個換行符,if-else 和 struct(使用 Go)。

下面是如何為 C 做的:

  • 獲取原始語法文件(在 Unix 下,通常在 中找到/usr/share/vim)並將其複製到(再次,在 Unix 下)~/.vim/syntax
  • 更改 cBlock 區域定義中的“結束”模式:
syntax region cBlock    start="{" end="}" transparent fold

變成

syntax region cBlock    start="{" end="}\(\n\n\)\?" transparent fold

在這裡,第一個\n匹配緊跟在右大括號後面的換行符,第二個匹配空行。如果後面跟著一個註釋,這將不起作用}:塊仍然會折疊,但下面的換行符不會。

我這裡沒有 Go 的語法文件(據我所知),但它應該以類似的方式工作。

注意:更靈活的方法是創建一個新文件~/.vim/after/syntax並更改區域定義,但我在這裡沒有成功。僅僅複製區域定義是行不通的。

引用自:https://unix.stackexchange.com/questions/16838