编辑缩进嵌套的文件时想找到对应的层级比较困难,写了一个函数,使用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>来设定。

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

vim缩进参考线的更多相关文章

  1. 【Linux】vim缩进配置 (转载)

    1.安装vim,终端输入: wanpeng@ubuntu:~$ sudo apt-get install vim-full 2.终端输入,打开配置文件: wanpeng@ubuntu:~$ vim ~ ...

  2. vim 缩进设置

    1.在自己的家目录(/home)下建立.vimrc文件.控制台输入vi ~/.vimrc 回车. 2.在.vimrc文件中输入如下文本: set tabstop=4 set softtabstop= ...

  3. 设置Ubuntu下vim缩进为4个空格

    输入命令编辑vim配置文件: sudo vim /etc/vim/vimrc 文件中添加如下: 保存退出即可

  4. vim选中多行缩进(python多行缩进)与删除多行前面的空格

    最近用vim写python,有时候会在一段代码前面套一个循环的操作,这个时候将这一段代码整体向后平移四个空格,来满足vim缩进的要求,如何做到这一点呢? 1. ESC之后,ctrl+v进入多行行首选中 ...

  5. [No000018F]Vim自动缩进配置、原理和tab键替换空格-Vim使用技巧(4)

    一.Vim缩进介绍 在没有设置Vim自动缩进的条件下,可以手动使用Vim命令对特定行进行缩进处理.在Vim插入模式下,按下 Tab 键时默认会输入一个制表符,可通过Vim配置项将 Tab 替换为空格, ...

  6. vim的一些配置

    所有用户的共同配置位于 /etc/vimrc 或者 /ect/vim/vimrcz中,可能还会有其他的配置文件,例如vimrc.tiny,具体的应用场景文件内会有说明. 某个特定用户的vim配置位于 ...

  7. 转载:如何利用Vim进行Erlang开发

    转自:http://ovalpo.info/how_to_use_vim_for_erlang_dev/ 如何利用Vim进行Erlang开发 by Martin J. Logan on Septemb ...

  8. vim 高级使用技巧第二篇

    上篇我贴上了我使用的vim配置及插件配置,有这些东西只能是一个脚本堆积,无从谈高效的代码阅读开发. 下面我们就来写经常使用的命令,就从配置F系列快捷键开始吧. F+ n 快捷键配置 F1基本上时帮助, ...

  9. linux vim编辑

    常用vim操作自我总结,大神请回避: vim 打开退出保存 打开:直接打开 vim practice_1.txt也可以先打开vim,后:e 文件路径 保存::w 文件名或者退出保存:wq! 普通模式下 ...

随机推荐

  1. Linux解决安装包无法找到问题Unable to locate package rar

    1:问题 在默认安装的Linux中有时候会找不到需要安装的软件包,那就需要更新了 例如在执行apt-get install xx的时候就报错了 E: Unable to locate package ...

  2. (转)Unity3D中脚本的执行顺序和编译顺序(vs工程引用关系)

    自:http://www.cnblogs.com/champ/p/execorder.html 在Unity中可以同时创建很多脚本,并且可以分别绑定到不同的游戏对象上,它们各自都在自己的生命周期中运行 ...

  3. 造轮子 | 怎样设计一个面向协议的 iOS 网络请求库

    近期开源了一个面向协议设计的网络请求库 MBNetwork,基于 Alamofire 和 ObjectMapper 实现,目的是简化业务层的网络请求操作. 须要干些啥 对于大部分 App 而言,业务层 ...

  4. Android中MVP模式与MVC模式比較(含演示样例)

    原文链接 http://sparkyuan.me/ 转载请注明出处 MVP 介绍 MVP模式(Model-View-Presenter)是MVC模式的一个衍生. 主要目的是为了解耦,使项目易于维护. ...

  5. JavaScript常用设计模式

    单例模式:确保类只能被实例化一次. var obj = {} 2.函数返回值 var func = function () {return {}} var obj = func(); 3.构造函数初始 ...

  6. jQuery 操作 radio、select、checkbox

    <script type="text/javascript"> $(function () { 一.radio 1.获取选中值,三种方法都可以: $('input:ra ...

  7. Struts2(九)OGNL标签一与Struts2标签

    一.什么是OGNL  Object Graph Navigation Language对象图导航语言. 是Struts2默认的表达式语言,开源,功能更强大.和EL表达式有点相似 存取对象的属性,调用对 ...

  8. JAVA连接Mysql事例

    一.在Eclipse里面创建一个JAVA项目 相关连接: http://www.cnblogs.com/liqiu/p/3407016.html 二.导入mysql-connector-java-5. ...

  9. stopPropagation 和stopImmediatePropagation区别

    1.示例代码 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UT ...

  10. java 加密

    加密.大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密. 双向加密大体意思就是明文加密后形成密文,能够通过算法还原成明文. 单向加密仅仅是对信息进行了摘要计算,不能通过算法生成明文. ...