2011年12月29日星期四

vim + snipmate + pydiction

已经用vim写python有一段时间了,越来越觉得不方便。虽然我已经装了snipMate和pydiction,但两者默认配置是有冲突的,因为这两个插件都使用了Tab。今天终于忍不了,决定改一下,让vim使用起来更舒服。

考虑到自己除了写python,还要写shell,c,tex等,显然snipMate的适用范围较广,于是决定pydiction给snipMate让路: 将pydiction的Tab改为Ctrl - n,Shift + Tab改为Ctrl - p (emacs的同学很熟悉这两个键吧?XD)

看了一下python_pydiction.vim代码,修改并不难,就是将相应的键盘映射修改一下。
首先修改的是Tab的映射: (千万注意符号>并非行尾,最后还有个空格的!!!)
"inoremap <silent> <buffer> <Tab> " ==> "inoremap <silent> <buffer> <C-n>
接着是Shift + Tab的映射: (同意要注意是空格结尾!)
"inoremap <silent> <buffer> <S-Tab> " ==> "inoremap <silent> <buffer> <C-p> "

到这里,冲突就解决掉了。

对于snipMate的使用,默认的模板已经足够好了,但我还是想改一下来满足我的一个需求,就是#!的补全是:
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Filename: `正在编辑器的文件的名字`

查了一下snipMate的帮助文档,发现这个插件的确做得很好,需要的工具都提供了。python.snippets的修改如下:
snippet #!
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # Filename: `Filename('$1.py', 'filename.py')

解释一下Filename('$1.py', 'filename.py'): 如果正在编辑的文件已经有名字了的,则使用当前的名字,如果没有则使用filename.py这个名字。

没有评论: