Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1690002
  • 博文数量: 410
  • 博客积分: 9563
  • 博客等级: 中将
  • 技术积分: 4517
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-03 19:59
个人简介

文章分类

全部博文(410)

文章存档

2017年(6)

2016年(1)

2015年(3)

2014年(4)

2013年(32)

2012年(45)

2011年(179)

2010年(140)

分类: LINUX

2011-06-24 19:27:45

和supertab兼容方法,修改snipmate的触发键,snipMate可以通过设置全局变量g:snips_trigger_key来自定义触发键,比如设置成F2功能键:在vimrc中增加
let g:SuperTabDefaultCompletionType = "context"
let g:snips_trigger_key=''

这样设置后代表片段补全和光标跳跃,反向跳跃,会列出关键字菜单。仍然可以选择菜单项,感觉更加理想。

使用vim-addon-manager的设置
let s:addon_list=[]
set runtimepath+=~/vim-addons/vim-addon-manager
call add(s:addon_list,"snipmate-snippets")
call add(s:addon_list,"SuperTab_continued.")
call vam#ActivateAddons(s:addon_list)
let g:SuperTabDefaultCompletionType = "context"


snipMate:TextMate风格的VIM code snippets插件

TextMate,传说中MacOS上的文本编辑神器,完美的融合的命令和图形界面。神器的特色功能之一就是code snippets。什么是code snippets?这个问题有点傻,不过很值得回答,我也很长时间没去想过。

举个例子,C语言中的for循环:

1
2
3
for(i=1; i<count; i++ ){
    some codes;
}

这段代码中,我们需要填写的只有变量名i,变量初始值,变量上界,变量的增加方式和内部的代码。诸如括号之类的东西都是必须有的。于是,为了方便,编辑器里面可以这样干。

输入for,然后按tab键

自动输入整段代买,且光标跳到i处;

如果不需要修改变量名,就直接按Tab,光标跳到1;

如果不需要修改初始值,光标跳到count,输入上界;

然后tab,跳到++处,如果不需要修改,就继续tab,跳到some codes。

最后tab一下,完成整个for循环代码。

要知道,输入括号都是要按住shift的,非常的费劲,不方便。有了code snippets,就能很好的避免这些麻烦。

TextMate的Code Snippets几乎完美,作为文本编辑的另一大传统神器,VIM,自然也不甘落后。一系列的Code Snippets插件冒了出来。其中用得最广的应该是snippetsEmu,以VimBall形式发布,我在Windows上总是装不上,放弃;另一个 就是一直在更新,使用更方便的snipMate!虽然还不如TextMate那么强大,不过也足够我日常用用了。

到下载snipMate,释放到 vimfiles(Windows)或.vim(Linux)目录下。安装就完成了,可以打开一个.c文件试试刚才for循环的那个例子。很high吧!

其实还可以很方便的自己定义code Snippets,过两天再来写。

===========================================================

五点半,准时下班,收工。来写一篇博文。就是昨天介绍的那个snipMate插件。我需要这类Code Snippet插件的一个重要目的就是写LaTeX,尤其是写presentation。Beamer是LaTeX中写Presentation的包,在 里面写一个frame的命令是这样的:

1
2
3
\begin{frame}
balabalabalabala
\end{frame
}

如果需要给这个Frame加上title的话就是这样:

1
2
3
4
\begin{frame}
\frametitle{title}
balabalabalabala
\end{frame
}

这玩意的snippet估计是没有哪个编辑器会内置。所以还是自己动手写一个吧,很简单,在snipMate中就更简单了。

打开vimfiles/snippets/tex.snippets文件。在里面加上下面这些代码:

1
2
3
4
5
snippet frame
    \begin{frame}
        \frametitle{${1}}
            ${2}
    \end{frame}

这样在.tex文件中,只要输入frame,然后tab,就能出现整段代码,光标会自动跳到frametitle{}中,输完标题,再tab就可以写frame的内容了。我要的就是这个。稍微解释一下这段代码,免得过两个月我忘了。

第一行的snippet是所有snippet的开头,接着是空格,然后是该snippet的触发器(trigger)。也就是输入trigger按 tab就会启动这个snippet。第三行中的${1}就是光标的第一个跳转点,也就是触发该snippet后,光标首先会跳到这个位置。${2}就是第 二个跳转位置,以此类推。语法跟TextMate基本是一样的(别人说的,我没用过TextMate)。

阅读(3427) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~