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 文件的内容:
代码
  1. let maplocalleader="'"
  2. " D snippets "
  3. inoremap main =IMAP_PutTextWithMovement("int main(char[][] args)\n{\n <+ body +>;\nreturn <+ return value+>;\n}")
  4. inoremap istd =IMAP_PutTextWithMovement("import std.stdio;\n")
  5. inoremap cl =IMAP_PutTextWithMovement("class <+ name +>\n{\ninvariant\n{\n\n}\n\nthis()\n{\n}\n}")
  6. inoremap if =IMAP_PutTextWithMovement("interface <+ name +>\n{\npublic <+ first method +>;\n}")
  7. inoremap switch =IMAP_PutTextWithMovement("switch(<+ expr +>)\n{\ncase <+ cond1 +>:\n\nbreak;\n\n\n\ndefault:\n\nbreak;\n}")
  8. inoremap case =IMAP_PutTextWithMovement("case <+ cond +>:\n<+ action +>;\nbreak;")
  9. inoremap bl =IMAP_PutTextWithMovement("{\n<+ block +>;\n}")
  10. inoremap c1 =IMAP_PutTextWithMovement("/*\n<+ block +>\n*/")
  11. inoremap cs =IMAP_PutTextWithMovement("const char[] <+ name +> = \"<+ string +>\";")
  12. inoremap sa =IMAP_PutTextWithMovement("static assert(<+ const expr +>);\n")

文件格式非常简单,第一行定义了缩写的前导字符,在这里是单引号。后的字符就是缩写,在 IMAP_PutTextWithMovement("") 函数参数的文本是要插入的代码片段,需要需要跳转的部分用 <+ +> 包围起来就可以了。

需要注意的是此D语言缩写插件需要 imaps.vim 插件的支持,该插件可以在这里下载,将其放入 VIM 的 plugin 目录里就 OK了。

Happy Vimming!
  • D6e92773-af2f-4c02-95ad-b021ea8cc410-thumb
  • 描述:
  • 大小: 7.9 KB
评论
cookoo 2007-04-17
说“缩写定义”比“插件”用词更准确些。
cookoo 2007-04-17
说“缩写定义”比“插件”用词更准确些。
oldrev 2007-04-14
楼上的,代码就在文章里面阿
wzjin 2007-04-14
能否公开你的源代码,并加上注释,以后队员们可以在你代码基础上进行完善,同时可以供初学者学习。
发表评论

您还没有登录,请登录后发表评论

oldrev
搜索本博客
我的相册
7e9318d5-c74f-36e0-81a3-beb68acaa2b8-thumb
Screenshot
共 1 张
最近加入圈子
存档
最新评论