最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

oeasy教您玩轉vim - 70 - # 折疊細節(jié)

2021-11-25 10:14 作者:oeasy  | 我要投稿

折疊細節(jié)

回憶上次

  • 上次我們講的是折疊

  • 折疊有很多options

    • manual - 手動

    • indent - 縮進

    • foldlevel - 顯示折疊層次

    • foldcolumn - 折疊樹寬度

    • foldmethod - 折疊方式

  • 折疊的定義

    • 用大括號(不包含)建立折疊

    • 用大括號(包含)建立折疊

    • 當前行和下面兩行建立折疊

    • zf2j

    • zfa{

    • zfi{

  • 折疊的刪除

    • zd

  • 折疊的打開和關閉

    • zo open

    • zc close

    • :set foldlevel=1 設置折疊層次

  • 這個縮進折疊可以對于程序文件使用么???

    • 動手試試!

打開oeasy.java

  • 設置和查看屬性

  • 折疊的options

    • 設置為0 折疊整個class

    • 設置為1 折疊各個函數(shù)

    • 設置為2 全部打開

    • 默認設置為99 全部打開

    • 4列

    • :set foldcolumn=4

    • indent - 縮進

    • foldmethod 設置為

    • foldcolumn 折疊樹設置為

    • foldlevel折疊層次

    • :set foldopen=all 也可以直接打開所有折疊

    • :set foldclose=all 可以直接關閉所有折疊

  • 但是這個東西有快捷鍵么?

zr和zm

  • zr

    • z是折疊

    • rreduce

    • 讓折疊層次fold level1

    • zR 所有的折疊都打開

  • zm

    • z是折疊

    • mmore

    • 讓折疊層次fold level1

    • zM 所有的折疊都關閉

  • zo、zc區(qū)別

    • zo、zc僅對當前行起作用

    • zrzm對所有文字起作用

  • 如果我想對于某些 {range} 起作用,可以么?

foldopen、foldclose命令

  • 加上!的目的是徹底遞歸地折疊所有,能折到哪里折到哪里

  • :.foldopen

    • 當前行打開折疊 zo

  • :%foldclose

    • 所有都關閉折疊 zc

  • :1,15foldopen

    • 1,15行都折疊 zc

  • :33,Gfoldclose!

    • 33到最后一行徹底折疊 ? ?zC

更多折疊方法

  • 我們可以h foldmethod來觀察一下

  • 折疊的模式總共有6種

    • 手動 - ?manual

    • 縮進 - ?indent

    • 表達式 - expr

    • 標記 - marker

    • 語法 - syntax

    • 差異 - diff

  • 這里面就是 indent 最好用

  • 幫助手冊中的超鏈接

    • 用ctrl+]跳入

    • 用ctrl+o跳入

表達式折疊

  • 首先設置折疊方法為表達式

    • :set foldmethod=expr

  • 顯示出空出來的縮進究竟是tab還是空格

    • :set listchars=eol:$,tab:>-,space:_

  • 然后設置各種表達式

設置

  • :set foldexpr=getline(v:lnum)[0]== \"\\t\"

    • 只要這一行的第0個元素是"\t"

    • 但注意雙引號和反斜杠都需要轉義

    • 也就是tab鍵

    • 那么這行就進入折疊范圍

空行作為表達式

  • 下面這兩條差不多

    • :set foldexpr=getline(v:lnum)=~'^\\s*$'&&getline(v:lnum+1)=~'\\S'?'<1':1

    • :set foldexpr=getline(v:lnum-1)=~'^\\s*$'&&getline(v:lnum)=~'\\S'?'>1':1

  • 都可以把把空行分割開的段落都折疊起來

    • 后面的是一個表達式

    • 上一行不是空行并且上一行有非空字符那表達式就是1

關于表達式的計算

  • :set foldexpr=getline(v:lnum-1)=~'^\\s*$'&&getline(v:lnum)=~'\\S'?'>1':1

    • :set foldexpr=后面的是一個表達式

    • 上一行不是空行并且上一行有非空字符那表達式就是1

    • 這個1就是折疊的層次

語法縮進

  • 這個比較復雜

  • 要設置具體的縮進規(guī)則的語法文件

  • 但是一旦設置好了之后

  • 就一勞永逸了

  • 一般常用的語言都有現(xiàn)成的syntax.vim

  • 但是我們也可以自己嘗試

設置語法折疊

  • :syn sync fromstart

  • :set foldmethod=syntax

  • :syn region myFold start="{" end="}" transparent fold

  • 由于這個類有兩層大括號

  • 所以被分成了兩級折疊

  • foldnestmax可以控制最大層數(shù)

標記折疊

  • 這個設置方式直接在源文件里面用注釋的方式做標記

  • 有點是特別明確

  • 缺點是不易修改

  • 而且在源文件里面放那么多不相關的內容

  • 增大存儲、傳輸、理解的壓力

diff折疊

  • 主要作用是找到兩個文件中不同的部分

  • 相同的部分就給他折疊了

  • 這個也是vimdiff主要的foldmethod

  • 這么多到底用哪個?

    • indent!就很好

    • 很多語言縮進就是層次

    • 縮進就代表邏輯

總結

  • 折疊方式很多

    • 我們一般就用默認的就行

    • indent也很好用

    • 前提是縮進語法嚴格到位

  • 打開關閉

    • zc、zo 是打開關閉當前行

    • zm、zr 可以改變foldlevel

  • 配合 {range}

    • :{range}foldopen! 可以在范圍內打開行

    • :{range}foldclose! 可以在范圍內關閉行

  • 但是這個折疊

  • 一關閉vim就沒了

  • 這個折疊狀態(tài)可以保存住么???

  • 下次再說!


[Github地址] (https://github.com/overmind1980/oeasyvim)
[Gitee地址] (overmind1980/oeasyvim)
[藍橋實驗樓 邀請碼FJWYIMGB] (oeasy 教您零基礎玩轉編輯神器 Vim_Linux - 藍橋云課)


oeasy教您玩轉vim - 70 - # 折疊細節(jié)的評論 (共 條)

分享到微博請遵守國家法律
社旗县| 瑞丽市| 台中市| 临清市| 龙江县| 息烽县| 贡山| 昆山市| 察雅县| 雅江县| 滁州市| 新田县| 南安市| 格尔木市| 广州市| 凭祥市| 娄底市| 兴业县| 泸西县| 凉城县| 黎平县| 化州市| 江城| 丰宁| 双鸭山市| 湖北省| 堆龙德庆县| 呈贡县| 金堂县| 铜川市| 大庆市| 逊克县| 临夏市| 双峰县| 环江| 永德县| 开远市| 西华县| 宝应县| 浪卡子县| 延津县|