2007-04-13
简单的D语言 VIM 缩写插件
关键字: D Dlang VIM D语言
昨晚我写了一个非常简单的 VIM 的D语言缩写插件,希望能让用VIM编辑D程序的指头轻松一点。
请看下图,当在VIM的插入模式键入“'main”这个字符序列时,该插件能自动将文本替换为一个完整的 main() 函数定义,并且能自动选中 <+ body +> 部分等待输入替换。Ctrl+j 键可以跳转到下一个由 <+ ????? +> 标记的地方,同样会自动选定。

插件中的代码片段由 d_imaps.vim 文件定义,此文件应当放到 ~/.vim/ftplugin(Windows 用户推荐放到 $VIMRUNTIME/ftplugin/) 目录下,下面是 d_imaps.vim 文件的内容:
文件格式非常简单,第一行定义了缩写的前导字符,在这里是单引号。后的字符就是缩写,在 IMAP_PutTextWithMovement("") 函数参数的文本是要插入的代码片段,需要需要跳转的部分用 <+ +> 包围起来就可以了。
需要注意的是此D语言缩写插件需要 imaps.vim 插件的支持,该插件可以在这里下载,将其放入 VIM 的 plugin 目录里就 OK了。
Happy Vimming!
请看下图,当在VIM的插入模式键入“'main”这个字符序列时,该插件能自动将文本替换为一个完整的 main() 函数定义,并且能自动选中 <+ body +> 部分等待输入替换。Ctrl+j 键可以跳转到下一个由 <+ ????? +> 标记的地方,同样会自动选定。
插件中的代码片段由 d_imaps.vim 文件定义,此文件应当放到 ~/.vim/ftplugin(Windows 用户推荐放到 $VIMRUNTIME/ftplugin/) 目录下,下面是 d_imaps.vim 文件的内容:
代码
- let maplocalleader="'"
- " D snippets "
- inoremap
int main(char[][] args)\n{\n <+ body +>;\nreturn <+ return value+>;\n}")main =IMAP_PutTextWithMovement(" - inoremap
import std.stdio;\n")istd =IMAP_PutTextWithMovement(" - inoremap
class <+ name +>\n{\ninvariant\n{\n\n}\n\nthis()\n{\n}\n}")cl =IMAP_PutTextWithMovement(" - inoremap
interface <+ name +>\n{\npublic <+ first method +>;\n}")if =IMAP_PutTextWithMovement(" - inoremap
switch(<+ expr +>)\n{\ncase <+ cond1 +>:\n\nbreak;\n\n\n\ndefault:\n\nbreak;\n}")switch =IMAP_PutTextWithMovement(" - inoremap
case <+ cond +>:\n<+ action +>;\nbreak;")case =IMAP_PutTextWithMovement(" - inoremap
{\n<+ block +>;\n}")bl =IMAP_PutTextWithMovement(" - inoremap
/*\n<+ block +>\n*/")c1 =IMAP_PutTextWithMovement(" - inoremap
const char[] <+ name +> = \"<+ string +>\";")cs =IMAP_PutTextWithMovement(" - inoremap
sa =IMAP_PutTextWithMovement("static assert(<+ const expr +>);\n")
文件格式非常简单,第一行定义了缩写的前导字符,在这里是单引号。
需要注意的是此D语言缩写插件需要 imaps.vim 插件的支持,该插件可以在这里下载,将其放入 VIM 的 plugin 目录里就 OK了。
Happy Vimming!
评论
cookoo
2007-04-17
说“缩写定义”比“插件”用词更准确些。
cookoo
2007-04-17
说“缩写定义”比“插件”用词更准确些。
oldrev
2007-04-14
楼上的,代码就在文章里面阿
wzjin
2007-04-14
能否公开你的源代码,并加上注释,以后队员们可以在你代码基础上进行完善,同时可以供初学者学习。
发表评论
- 浏览: 105147 次
- 性别:

- 来自: 昆明

- 详细资料
搜索本博客
我的相册
Screenshot
共 1 张
共 1 张
最近加入圈子
最新评论
-
出色的开源项目管理软件— ...
我也是前几天刚刚从trac换到redmine,感觉好多了,trac有的redmi ...
-- by danielking -
转贴:鲁迅未收入全集的文 ...
借问酒家何处有,牧童遥指杏花村
-- by hqs7636 -
Range Coding 的 D 实现
引用oldrev 2008-01-12LZMA SDK 只是一个 LZMA 算法 ...
-- by oldrev -
D 静态数组初始化大bug
看看日期好伐?
-- by oldrev -
D新闻组里的天才代码
没看过产生的汇编代码,测试了是可行的。如果用宏来实现就完美了
-- by oldrev






评论排行榜