Bootstrap

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>来设定。

效果如下:左侧的是缩进辅助线,右侧的是手动设置的列宽参照。

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;