本文參考自 : https://www.linux.com/learn/tutorials/442438-vim-tips-folding-fun
介紹 vim 的 folding 技巧,也就是如何乾淨的把 code 折疊起來
首先,vim folding 指令都是由 z 開頭,我的記法是 zip the code
z 開頭的指令 zt zz zb 這三個很好用,順便提一下
功能是把游標目前所在的行捲到螢幕的 top / center / bottom
這在臨時上下捲動頁面半頁或是要邊寫 function 時很好用
vim 底下:h z 可以看到 folding 相關的指令 (這邊把其他不相干的刪減掉了)
BTW,最完整的教學在 :h fold.txt 裏面可以看到
zA zA open a closed fold or close an open fold recursively zC zC close folds recursively zD zD delete folds recursively zE zE eliminate all folds zF zF create a fold for N lines zO zO open folds recursively za za open a closed fold, close an open fold zc zc close a fold zd zd delete a fold zf zf{motion} create a fold for Nmove text zj zj 1 move to the start of the next fold zk zk 1 move to the end of the previous fold
看的懂英文應該基本上就知道這幾個要怎麼用了XD
最常用的是 zf + {motion}
像是 zf2j 可以向下折疊兩行 (zip folding 2 j),就跟你用 2j 在 vim 裏面往下移動兩行一樣
另外一種方法是在 normal mode 下 :N, M fold ,N M 是行數,把 N, M 行之間的 code 折起來
再來一種是 {Visual}zf 也就是用 visual 模式下選取要 folding 的區域,然後再用 zf 幫你折起來
zf 的 motion 也可以搭配 vim 的 text object 來使用,像是 zfa} 或是 zfa{ 可以向下或向上折疊一段落
當然,也可以搭配 searching 來找,zf/pattern 就是折疊到第一個你找到的 pattern
接下來是使用 folding 的方法
zo / zc 則是拿來 open/close folding 的
zO / zC 可以 打開/關閉 底下的子 folding
當然,za 和 zA 可以把 folding 當成電燈開關一樣,打開 folded 的區塊, fold 被打開的區塊
zr / zm 是將 fold level 開啟和關閉一層
zR / zM 是對所有的 fold level 作,也就是打開 / 關閉整個檔案裡所以的 folding
在被 folded 的 code 間移動有很快的作法, zj / zk ,如同你所想的,移動到 上 / 下個 folded 的 code
zd delete 掉游標所在的 folding
zE delete 所有的 folding
最後, vim 在處理被 folding 起來的區塊時,會把他當成像是一行文一樣,也就是說,可以對他做一行的操作,像是 dd 和 yy 等
No comments:
Post a Comment