分类: LINUX
2011-06-24 19:27:45
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)。