[分享] 使用vim的snipMate插件实现代码片段的自动完成 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
sdjl
V2EX    程序员

[分享] 使用vim的snipMate插件实现代码片段的自动完成

  •  
  •   sdjl 2013-05-27 20:41:49 +08:00 10495 次点击
    这是一个创建于 4599 天前的主题,其中的信息可能已经有所发展或是发生改变。
    让vim自动完成代码片段
    ==================

    使用vim编写代码时, 经常会输入一定模式的代码片段, 比如在写html代码时常输入如下的代码:
    <div id="name" class="name" >

    </div>

    使用vim的snipMate插件可以让你仅输入div+tab即可"自动完成"上面的代码片段, 更厉害的是, snipMate会自动定位到name单词所在位置, 我们只需要继续敲键盘就可以输入id了, 然后再次按下tab键便能跳到下一个name, 以及跳到div的里面继续输入子html内容. 整个过程不需要使用esc键回到"normal模式"

    还有, 你可以针对各种语言自定义自己的代码片段, 使用snipMate让你编码更流畅

    项目地址: http://www.vim.org/scripts/script.php?script_id=2540



    安装 snipMate
    ============

    1 下载最新版 snipMate, 并解压

    2 把snipMate中的文件夹复制到 ~/.vim/ 下, snipMate的plugin文件路径看起来是这个样子的:
    ~/.vim/plugin/snipMate.vim

    3 确保~/.vimrc中有以下配置:
    :filetype plugin on



    如何自定义代码片段
    ===============


    编辑 ~/.vim/snippets/ 下的文件即可, 比如想给Javascript添加代码片段, 编辑 ~/.vim/snippets/Javascript.snippets 即可

    snipMate已经实现了许多常见语言的常用片段



    另一种简单的代码提示
    ================

    如果你觉得snipMate较麻烦, 那么还有一种简单的方式实现"自动完成"功能, 不需要安装任何插件, 仅需在 ~/.vimrc中添加如下配置即可:

    autocmd FileType css set omnifunc=csscomplete#CompleteCSS
    autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
    autocmd FileType Javascript set omnifunc=Javascriptcomplete#CompleteJS
    :imap <S-tab> <c-x><c-o>

    然后在insert模式下通过shift+tab来提示


    欢迎关注我们的开发者微信公共账号, 第一时间收听更多技术性干货资讯:

    (公共账号名称: zarkx开发)
    5 条回复    1970-01-01 08:00:00 +08:00
    123123
        1
    123123  
       2013-05-27 23:03:36 +08:00
    这……这种插件配置一搜一大把,LZ 又为互联网冗余数据增砖添瓦。
    教程类感觉还是直接放个连接更好

    如果是 html 代码还是 ZenCoding 的语法会更给力
    之前一直用的是 Vim 上的 UltiSnips,现在已经转用 ST 了
    sdjl
        2
    sdjl  
    OP
       2013-05-27 23:58:57 +08:00
    @123123 能试一下它们之间的区别吗? 有更多的尝试是一件好事
    123123
        3
    123123  
       2013-05-28 00:45:26 +08:00
    @sdjl 从 snipMate 换到 UltiSnips 的,用起来到是没觉得有什么差别,不过没记错的话 UltiSnips 的语法更强大一些
    chemzqm
        4
    chemzqm  
       2013-05-28 01:14:38 +08:00   1
    这个插件一个最给力的地方就是默认就带了许多有用的片段,插入模式输入<C-R>tab 可查看。
    ufo22940268
        5
    ufo22940268  
       2013-05-28 08:48:48 +08:00
    @chemzqm 又发现了一个牛逼的功能,<C-R>tab
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1031 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 18:26 PVG 02:26 LAX 10:26 JFK 13:26
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86