前段时间有朋友在微博上@我推荐了一款vim的插件,用来显示对齐线,感觉效果不错,就给大家推荐一下.
下载链接: Indent Guides

截图如下:

1

一. 安装
不用多说,直接解压放到vimfiles or .vim下

二. 配置
基本可以不用配置,不过由于默认的对齐线宽度太宽,不太美观,所以我改成1了,如下

详细的配置,可以参看他的文档,这里不再多说

三. 使用
默认的键盘映射是

OK,插件就介绍到这里,其实如果只是单纯的介绍插件,就不用写这篇文章了。
我在用这个插件的时候,又发现了另一个需求,即标尺的功能。vim7.3里面默认提供了colorcolumn,例如执行:

就可以高亮第80列,效果如下:

1

但是有时候我们想看一下几行的字符是不是在同一列上时,手工去输入列数实在太麻烦了,所以我就单独写了一个函数,来满足这个需求:

按下,ch 就可以将当前光标下的列高亮,再按下一次,取消高亮;并且可以同时多列高亮。

这两个工具搭配在一起使用,相信会取得更好的效果。

OK,就是这样~

暂无相关产品
  1. 「将当前光标下的列高亮」——:set cuc。

    [回复]

    Dante 回复:

    依云你太牛了。。总感觉你已经把vim文档都背熟了的说。。果然下次发文前应该先和你私下沟通一下是否已经有解决方案了。。。

    [回复]

    依云 回复:

    呵呵,对于 Pythoner 来说,这个需求很常见啦。

    [回复]

  2. 求上边截图配色方案,很舒服的感觉~~~

    [回复]

    Dante 回复:

    好像是依云推荐的,manuscript.vim

    [回复]

    依云 回复:

    我怎么不记得了……不过这个配色我确实有记载的。

    [回复]

  3. 我也是用 cursorcolumn
    同依云,对于pytoner, 这个对齐太重要了

    另外推荐用vim73 那个cuc效果很棒

    [回复]

    依云 回复:

    vim73 新支持的特性是 cc,cuc 早就支持了的哦。

    [回复]

  4. LZ的配色是什么?能分享下么?

    [回复]

    Syndim 回复:

    另外这个能区分tab和空格么?

    [回复]

    依云 回复:

    你如果也是 Pythoner 的话,去 ftplugin/python.vim 里加两句就好啦。

    setl et
    setl tw=8

    [回复]

    張旭 回复:

    您好!我還不是一個 pythoner
    可是我想讓 vim 顯示 tab 或空格、行尾換行符號,請問也是這樣做嗎?

    我已經 set tabstop=4
    這樣 tab 應該是已經取代成空格了

    [回复]

    依云 回复:

    set list

    [回复]

  5. 我一直用 :set lcs=tab:\|\ 一直困扰空格缩进怎么办!C 代码我一直用四个空格缩进的。
    另,python 以版式定逻辑真够蛋疼的。

    [回复]

    fifver 回复:

    将空格转换为tab,可使用以下命令
    :set noexpandtab
    :%retab

    [回复]

    自由建客 回复:

    我要的就是空格而非制表符!

    [回复]

    fifver 回复:

    不好意思,又重新看了一遍上面的留言。如果你是指缩进线的话,又不想使用上面的方法,那么你可以试一试这个插件(Indent Guides):http://www.vim.org/scripts/script.php?script_id=3361。若你已用过,或是所指其它,我也不清楚了,抱歉。

    [回复]

    自由建客 回复:

    哈哈……我的意思就是说我看到这篇文章就找到解决方案了。

    [回复]

    Yggdroot 回复:

    这个插件满足你的要求:https://github.com/Yggdroot/indentLine,效果跟Indent Guides不同,Indent Guides显示的是很粗的“线”,这个插件显示的很细。

    [回复]

  6. 发现在.vimrc中用colorscheme,然后这个guideline就不会出来了,是不是color_autodetect有问题?有人碰到过吗?

    [回复]

  7. 您好,我想请教一个问题。在vim里面怎么匹配一个制表符?例如有一行内容是用tab键和空格隔开的几个单词,我想匹配用tab隔开的然后加一个换行符,用%s/\t/\r/g似乎不行啊。

    [回复]

    依云 回复:

    查找时使用 \n 表示 EOL(行结束)。

    [回复]

  8. 我的意思是例如下面:

    坦克 fire in the hole
    飞机 I can fly.

    坦克和飞机后面跟的是制表符,而后面的单词跟的是空格。怎么正则成下面的形式:

    坦克
    fire in the hole
    飞机
    I can fly

    [回复]

    yefei 回复:

    你是在windows下用的gvim吧,windows中换行符是^M,先按ctrl-Q,再按ctrl-M就可以输入了换行符了,替换的时候把你的表达式中的 \r 替换成这样的表示就行了

    [回复]

    hellowrold 回复:

    换行没问题的,关键是怎么区分空格和制表符,单词之间是空格,而前面用的是制表符。虽然可以用\s来替换空白,但没法区分啊

    [回复]

    - 回复:

    正则匹配就是\t,如果没有匹配到,先要检查下是否不是制表符。

    [回复]

  9. 您好!请问,vim有没有可以根据等号对齐的插件?
    比如说,有多个给变量赋值的语句,如:
    $a = 1;
    $ab = 2;
    $abc = 3;
    $abcd = 4;
    $abcde = 5;

    有没有办法实现,所有的 = 都在同一列,而且 = 之后每行的空格个数是相同的?
    谢谢您!

    [回复]

    ccjjxl 回复:

    vim插件(tabular)

    [回复]

    Ni许嵩 回复:

    谢谢您!

    [回复]

  10. vimer 您好!

    我照你說的將套件放到 .vim 解壓縮,
    然後輸入 ctrl+, 接着輸入 ig(我的 mapleader 是 ctrl+,)
    結果底下出現:
    http://images.plurk.com/5c94f92a93dfb87454376434bab3ddee.jpg

    壓下 enter 後,變成:
    http://images.plurk.com/0539cf3d5961eb8349c7a916eb274e95.jpg

    可以指點一下嗎?謝謝!

    [回复]

    - 回复:

    根据截图中的关键字搜索,然后参考下面两个连接的描述,应该是你的colorschema可能存在问题:
    http://hlee.iteye.com/blog/1664838
    https://github.com/nathanaelkane/vim-indent-guides/issues/31

    你可以试试链接中的解决方案:
    adding
    colorscheme default
    to .vimrc

    [回复]

  11. 请问一个有没有指定特定行高亮的方法或者操作啊
    就是像set cc = n, n列就高亮,行高亮有没有啊!谢谢!

    [回复]

    Dante 回复:

    这还真没有,但是你可以通过 high light配置出来

    [回复]

    aptx4869 回复:

    话说你不觉得这
    :set cc=80
    配色效果好难看么……

    所以我会再设置一下

    :hi ColorColumn cterm=underline ctermbg=8

    之类的

    [回复]

    Dante 回复:

    嗯,我之前有设置过,后来觉得还不如红色显眼,虽然丑点。。

    [回复]

  12. 楼主,我这样做:
    下载然后解压,然后把插件目录放到vimfiles目录下,重启gvim7.3(xp系统),可是什么都没发生,能介绍的详细点吗?谢谢

    [回复]

  13. 借宝地帮着宣传https://github.com/Yggdroot/indentLine这个插件,支持用空格缩进的对齐线的显示。

    [回复]

    Lex 回复:

    请问你这个插件如何开启

    [回复]

    Yggdroot 回复:

    默认是开启的。

    [回复]

    leyle 回复:

    对比了博主和你的插件,还是你这个插件好用些,颜色调浅到基本不影响查看源代码时,仔细看又能看到那个对齐线,就很好了,多谢你开发了这个插件。

    [回复]

  14. 为什么我怎么都不会出现了?mapleader ig 这句是什么意思?

    希望指点 谢谢

    [回复]

    endle 回复:

    个人理解是按住一个被定义为 mapleader 的键盘按键,然后按i 再按g
    默认应该是 \ 吧

    [回复]

    seanchen 回复:

    let mapleader =’,’ “先设置先置命令,leaper
    let g:mapleader =’,’ “先设置先置命令,leaper
    LZ,我的设置如上,但是还是不会用mapleader,是按着mapleader不放按其他的,还是按照顺序按呢?总之没出现你的效果啊~菜鸟求解答哦~

    [回复]

    endle 回复:

    我的做法是 按住mapleader不松手,然后先按 i,再按 g,最后松开mapleader
    我也是一知半解,没法给更多的解答

    [回复]

    - 回复:

    mapleader的话,我个人的理解就好像组合键,而且mapleader也是分模式的,简单地说,你可以认为他是一个自定义的ctrl键,首先定义mapleader,然后在定义其他映射时就可以直接使用一个变量,而不是使用实际的leader键了,好处是更换leader时更方便;
    比如说:键盘上的各键位大部分都初始化定义了一些功能,我新增的键位映射,如果不想覆盖原有的配置,只能使用其他的,但是使用crtl或者alt这类的组合键按起来较远并且不方便,就可以使用leader+键位这种方式,增加可以设置的组合键,同时更重要的是,如果不使用leader+键位这种方式直接设置映射为,+ig这种方式,以后更换键位映射时要逐条修改,容易发生遗漏并且不利于键位映射的管理。

    [回复]

  15. 翻了 github 上的文档才知道
    let g:indent_guides_guide_size=1
    是需要设置 soft-tab 的,否则无效。
    难道只有我一个人因为这个问题纠结很久吗?

    [回复]

    Corey 回复:

    还有我还有我!你不是一个人,终于知道怎么解决了,感谢!!

    [回复]

    Corey 回复:

    我能说还是没解决吗,我按照github的截图的第二个设置,一模一样,但是宽度还是没变

    [回复]

    Corey 回复:

    我懂了,制表符都会变色,只有用空格来缩进才行

    [回复]

  16. 用了若干年的vim,觉得它在可视化显示的地方,真丑陋。比如博主提到的上述两个东西。

    另外,楼上的endle,ig 的意思就是连续按和i,g这三个按键而已。不是你想的那么复杂——当然,间隔时间不能太长,不然vim会分别理解这三个按键。

    [回复]

    endle 回复:

    写下哈。我给想麻烦了

    [回复]

  17. 楼主太强了。
    对IT还这么喜欢。
    只是楼主还不知道你的同学在做销售已经赚了多少钱而已吧?

    [回复]

    Dante 回复:

    实在没能理解你说这些话的意思。

    [回复]

    - 回复:

    我觉得层主的意思是不是说让楼主了解下其他同学现在的经济情况,比如说收入如何,有没有固定资产,从事什么行业等等。

    [回复]

  18. Pingback: 第四部 » 博客推荐14:Vimer的程序世界

  19. 你好,我的vim7.3里下载了插件也复制了所有文件,可是没有效果 vim输入 /ig 提示找不到模式,头都搞大了-_-

    [回复]

  20. Pingback: vim(gvim)支持对齐线multiprocess | multiprocess

  21. 为什么我设置了soft-tab,还是那么粗呢,奇丑无比啊~呼叫vimer~~

    [回复]

    linuxie 回复:

    额,已经解决了,果然只有空格来缩进才行~

    [回复]

  22. 你好,我按照你的命令直接在vim的命令行执行就可以,但是写入 .vimrc 文档里面就没有作用,这个是什么原因呢?

    [回复]