zoukankan      html  css  js  c++  java
  • 打造一个有感觉的Vim(三)

    这一章介绍VIM的另外两个插件,SnipMate和ZenCoding
    SnipMate
    下载地址如下:
    http://www.vim.org/scripts/script.php?script_id=2540
    这个插件的中文意思是片段伴侣(原谅我没什么文采的直译),就是可以用一个Tab键来将某个关键字展开成代码片段,其实和VIM的abbreviate的功能差不多,不过这个插件的好处在于可以在不同的文件中将同一个关键字展开成不同的片段,还可以在展开后片段代码中通过tab键在参数中跳跃。
    实例如下:

    这里我打开了一个JS文件,SnipMate将使用javascript.snippets里的内容进行片段完成

    for<TAB>

    case<TAB>

    do<TAB>

    ai<TAB>

    使用这个插件的时候你可以自己定义片段完成,把语句加在对应文件的.snippets中即可
    例如上面的实例我在javascript.Snippets中加入了如下语句,

    # iijimaai
    snippet ai
        alert("iijimaai");

    而for完成代码如下

    snippet for
        for (var ${2:i} = 0; $2 < ${1:Things}.length; $2${3:++}) {
            ${4:$1[$2]}
        };

    其中加$的前缀表明这是参数占位,{[number]:paramName},[number]里的值表明参数的切换顺序

    这个插件会和我之前提到的NeoComplCache冲突,修改一下SnipMate.VIM中的代码就好了

    if pumvisible() " Update snippet if completion is used, or deal with supertab
            if exists('g:neocomplcache_enable_at_startup')
                if g:neocomplcache_enable_at_startup==1
                    let SuperTabKey = "\<c-n>"
                    call feedkeys(SuperTabKey) | return ''
                endif
            endif
            call feedkeys("\<esc>a", 'n') " Close completion menu
            call feedkeys("\<tab>") | return ''
        endif

    这一段原来是为了兼容SuperTab这个插件,我把它改成对neoCompl的兼容。

    完成后重启VIM,这样在有匹配框时可以通过TAB在候选项间切换,没有匹配框时用TAB来完成代码片段。如果fun刚好是可以匹配的关键字,而此时你又想通过TAB键来进行片段完成那你需要先关闭匹配弹出框,于是我在_virmc中加了一句来用<C-c>关闭匹配弹框

    inoremap <expr><C-c>     neocomplcache#close_popup()

    ZenCoding
    接下来是ZenCoding,这个插件在很多编辑器里都有,下载地址如下
    https://github.com/mattn/zencoding-vim

    中文意思是禅意扣鼎,当一个东西与禅意挂钩时那表示洗脑就要开始了。
    这个插件是用于完成html的各种标签,重点在于你要熟悉CSS选择器,这样的话几乎不用去死记硬背各种完成模式,因为那些都是和CSS选择器挂钩的。类似于通过zencoding这个插件来将你的代码通过CSS的方式解读完成。基本用法就是输入标签之后按下<C-y,>,我在_vimrc里添加了如下这句

    "设定ZenCoding的展开标签快捷键
    let g:user_zen_expandabbr_key = '<C-j>'

    可以用<C-j>来展开html标签

    废话不多说,看如下例子:

    看到这么性感的插件,我真的为自己不是前端程序猿而遗憾~~

  • 相关阅读:
    双元素非递增(容斥)--Number Of Permutations Educational Codeforces Round 71 (Rated for Div. 2)
    两两内积为0(牛客多校第七场)-- CDMA
    十进制快速幂(牛客多校第五场)-- generator 1
    分层最短路(牛客第四场)-- free
    %300为0的个数(牛客第四场)-- number
    3的倍数 或运算构造x(牛客第四场)-- triples I
    笛卡尔树--牛客第四场(sequence)
    线性基求交(线段树)--牛客第四场(xor)
    最短meeting路线(树的直径)--牛客第四场(meeting)
    最长相同01数的子串(map搞搞)--牛客第三场 -- Crazy Binary String
  • 原文地址:https://www.cnblogs.com/iiaijimaai/p/3115447.html
Copyright © 2011-2022 走看看