1.  使用及配置文档

2.  重要插件

  • minibufexpl 模拟编辑器的多标签编辑(打开超过一个文档时自动出现Buffer栏,Ctrl+W进入窗口切换状态后再按W键就可以进行切换窗口的操作。如果设置了let g:miniBufExplMapCTabSwitchBufs = 1,那么可以直接用“Ctrl+Tab”和“Ctrl+Shift+Tab”切换到上一个和下一个Buffer;如果设置了let g:miniBufExplMapWindowNavVim = 1,那么可以用“Ctrl+H”切换到左侧的窗口、“Ctrl+K”切换到上方窗口等。);
    • 未安装此插件时(装了也照样可以用)可以用ls指令查看当前Buffer、b Buffer编号切换到对应Buffer、bp和bn分别是切换到上一个和下一个Buffer、bd则删除当前显示的单个Buffer。
    • 启用了minibufexpl以后,就不要用“:q”来关闭一个文件了,而是应该用“:bd Buffer号码”来关闭非当前Buffer,否则会在关闭文件的同时把当前主编辑窗口关掉,剩下的窗口通常会自动进行重新布局,十有八九窗口布局就这样乱掉了。。谁有更省事的操作方法还请告诉我。。
    • :tab ball指令则可以将所有的Buffer转化成窗口标签显示。
  • SuperTab 根据文本中曾经出现过的内容进行自动补全(Tab键),默认是会记住上次使用的补全模式(omni全能补全或者关键字补全);
  • taglist 在左侧窗口显示代码结构(需要ctags的可执行文件;用“:Tlist”可以激活;或者在配置文件添加“let Tlist_Auto_Open=1”自动激活);
  • EnhancedCommentify 方便的注释/反注释(在没有修改mapleader变量的情况下,“\x”是注释/反注释当前选中的代码块);
  • python_fold Python语言的代码折叠模块(zc是折叠,zo是展开);
  • insenvim 提供编程语言的函数提示,不过好像不支持Python;
  • showpairs 高亮显示匹配的括号;
  • python.vim 众多Python代码编辑辅助功能的集合;
      ]t  移动到当前缩进块的开头
    ]e移动到当前缩进块的结尾
    ]v选中当前缩进块中的所有行
    ]<将当前块的缩进减少一级
    ]>将当前块的缩进增加一级
    ]#给当前选中的行增加一级注释标记
    ]u给当前选中的行减少一级注释标记
    ]c选中当前类的所有行
    ]d选中当前函数的所有行
    ]<up>跳到有当前缩进级别的上一行
    ]<down>跳到有当前缩进级别的下一行
    ]j跳到下一个类的类定义行
    ]J跳到上一个类的类定义行
    ]f跳到下一个函数的定义行
    ]F跳到上一个函数的定义行
  • Python函数提示 在有ctags支持的情况下直接用omni全能补全即可(顺序按Ctrl+x, Ctrl+o启用),其他补全模式还有:
    整行补全CTRL-X CTRL-L
    根据当前文件里关键字补全CTRL-X CTRL-N
    根据字典补全CTRL-X CTRL-K
    根据同义词字典补全CTRL-X CTRL-T
    根据头文件内关键字补全CTRL-X CTRL-I
    根据标签补全CTRL-X CTRL-]
    补全文件名CTRL-X CTRL-F
    补全宏定义CTRL-X CTRL-D
    补全VIM命令CTRL-X CTRL-V
    用户自定义补全方式CTRL-X CTRL-U
    拼写建议CTRL-X CTRL-S
  • pysmell插件能够扩展omni全能补全对函数提示的处理能力,可以考虑选用。
  • pyflakes.vim Python的错误检查工具,在保存buffer或者退出编辑模式时都会对代码进行检查并给出错误提示。需要Vim包含Python 2.5以上运行环境支持(MacVim为了兼容Tiger,默认只兼容Python 2.3.5,因此只能自行重新编译MacVim才能使用pyflakes.vim)。(找到的错误显示在quickfix窗口,用:h quickfix来查询用法。)
  • pylint.vim Python代码风格和常见错误检查工具,检查很仔细,运行速度慢……所以建议用“let g:pylint_onwrite = 0”让它不要在每次保存Python文件的时候都检查,而是用“:Pylint”指令来调用。(此插件的安装说明见pylint.vim文件中的注释)(找到的错误显同样示在quickfix窗口,用:h quickfix来查询用法。)

2.1  其他有趣插件

  • Win Manager:给Vim左边放上一个文件管理器,方便打开文件等等。好多人说NERDTree是完成这件事的一个更好选择。我现在暂时是用Vim自带的文件管理功能。
  • snipMate:据说是类似 TextMate 风格的扩展,敲个for之类的就补全出整个结构来备用。感觉对C语言、html之类的应该非常有用。
  • Eclim:让 Vim 可以调用 Eclipse 的一些功能,比如代码检查、智能代码提示等等。
  • Conque:可以在 Buffer Window 中执行一个 Shell 解释器,这样就能在 Shell 操作的时候利用 Vim 的特性。
  • Screen (vim + gnu screen/tmux):向命令行多窗口环境 screen/tmux 发指令的插件,还没弄明白是怎么回事儿。。
  • VimIM:利用 Vim 扩展实现的输入法,在联网的情况下也可以利用搜狗云输入法来加强整句输入的效果。
  • Fcitx for Vim:Fcitx 的 Vim 插件,可以在切换 Vim 编辑模式时自动切换 Fcitx 输入法的状态,避免中文输入状态影响 Vim 命令的执行。

3.  要诀与技巧

3.1  文件编码自动识别与转换

为了让 Vim 自动识别常见中文编码,在_vimrc或.vimrc里加入下面设置命令即可:

 set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936

文件编码转换

在Vim中输入 :set fenc=编码 即可将文档的编码转换为相应的编码格式,这是只需要保存文档,文档的编码就变了。

如果在Vim中输入 :set enc=编码 即可改变Vim的显示编码,这是就可以看到文档中的乱码了,不过这是即使对文档做了修改并保存,文档仍旧以之前的文档编码保存。

3.2  启动时最大化窗口

在_vimrc或.vimrc里加入如下指令:

 au GUIEnter * simalt ~x

3.3  打开内置文件管理器

下面的“.”是要打开的路径,也可以用自己想浏览的路径来代替。

 :edit .

3.4  在多个文件中查找字符串

vim6可以通过调用操作系统系统的“grep”指令实现,vim7可以像下面这样:

用“ :vimgrep /pattern/ files”,例如:“:vimgrep /File/ *.php”就是在当前目录下所有.php文件中找File这个字。当前目录可以用“:pwd”来看。然后可以用“:copen”打开 quickfix窗口查看结果。

3.5  设置快捷键执行当前脚本及检查脚本语法

(待续)

3.6  整理eol (End of Line) (处理看到的^M)

有时在编辑文件的时候,会看到行尾出现^M,这说明这个文件里面混用了Windows风格的行结束符(\r\n)和Unix风格的行结束符(\r),于是vim晕掉了,只好把文件当作Unix风格来处理,结果Windows风格的行结束符就会显示出多余的^M来。这种情况不处理,混用的文件在一些不够聪明的编辑器下就会乱掉。替换方法如下:

 :%s/^M//g
其中的^M不能直接用6上面那个,而是一个特殊字符,得先按Ctrl+v然后按Ctrl+m(此例中回车键也可)才能出来。

3.7  绕过粘帖文本时缩进混乱的问题

有时 Ctrl+V 粘帖文本时,会在后续的行多出很多额外的缩进,导致格式混乱(在粘帖程序源代码的时候特别容易遇到)。这可以通过进入 paste 模式来绕过。具体操作方法是,在 vim 键入如下指令:

:set paste
,就进入了 paste 模式,之后再进入插入模式(比如按 i 来进入),就可以正常粘帖不错乱了。解除 paste 模式,可以使用指令:
:set nopaste

GlossyBlue theme adapted by David Gilbert
Powered by PmWiki