vim縮進參考線


編輯縮進嵌套的文件時想找到對應的層級比較困難,寫了一個函數,使用cc選項設定一條輔助線,標識到指定的縮進層級。代碼如下:

?
ReferenceLine
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
" --------------------------------------------------
" [參考線切換] {{{
" --------------------------------------------------
fu ! ReferenceLine(t)
     if exists( 'w:ccnum' )
         let ccnum=w:ccnum
     elsei exists( 'b:ccnum' )
         let ccnum=b:ccnum
     else
         let ccnum=0
     en
     let oldcc=ccnum
     " let ccc=&cc
     " ec oldcc
     let ccc= ',' .& cc . ','
     " add/sub
     if a:t== 'add' || a:t== 'sub'
         " check old cc
         if match (ccc, ',' .oldcc. ',' )<0
             let oldcc=0
             let ccnum=0
         en
         " step
         let csw=& sw
         if a:t== 'add'
             let ccnum=ccnum + csw
         elsei a:t== 'sub'
             let ccnum=ccnum - csw
             if ccnum < 0 | let ccnum=0 | en
         en
         if oldcc > 0 | let ccc=substitute(ccc, ',' .oldcc. ',' , ',' , '' ) | en
         let ccc=ccc.ccnum
         " ec ccc
         " ec ccnum
         let ccc=substitute(ccc, '^0,\|,0,\|,0$' , ',' , 'g' )
         let ccc=substitute(ccc, '^,\+\|,\+$' , '' , 'g' )
         " ec ccc
         let w:ccnum=ccnum
         let b:ccnum=ccnum
         exec "setl cc=" .ccc
     " del
     elsei a:t== 'del'
         let ccc=substitute(ccc, ',' .oldcc. ',' , ',' , '' )
         let ccc=substitute(ccc, '^,\+\|,\+$' , '' , 'g' )
         " ec ccc
         let w:ccnum=0
         let b:ccnum=0
         exec "setl cc=" .ccc
     en
endf
nn <silent> <A-u> : call ReferenceLine( 'sub' ) <CR>
nn <silent> <A-o> : call ReferenceLine( 'add' ) <CR>
" }}}

使用方法:
Alt+o 增加參考線、Alt+u 減少參考線,最后兩行是鍵映射,可以按照需求自行修改。
設定參考線后,如果想要設定cc做列寬參照,請使用set cc+=<num>來設定。

效果如下:左側的是縮進輔助線,右側的是手動設置的列寬參照。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM