Vim 自动补全插件 YouCompleteMe 安装与配置

概述

对于代码自动补全,之前一直使用的是Shougo/neocomplcache和Shougo/neosnippet。早就听说过YouCompleteMe的大名,一直想尝试一下YCM,但是还是拖到了现在。YCM和其它Vim插件的安装有些不同,可能需要折腾一下。之所以安装稍微会麻烦些,是因为YCM 后端调用 libclang(以获取AST,当然还有其他语言的语义分析库)、前端由 C++ 开发(以提升补全效率)、外层由 python 封装(以成为 vim 插件),它可能是安装最复杂的 vim 插件了。YCM是Client-sever架构的,Vim这部分的YCM只是很小的一个客户端,与具有大量逻辑和功能的ycmd HTTP+JSON交互。server在你开启或关闭Vim是自动开启或关闭。

其它自动补全的插件基本上是基于文本的,也就是说它们基本上是使用正则去猜。区别于其它Vim的自动补全插件,YCM基于语义引擎(比如C家族的libclang)提供了语义补全,是通过分析源文件,经过语法分析之后进行补全。对于C家族的语言这种基于语义的自动补全依赖于clang/llvm,其他语言 ,会调用vim设置的omnifunc来匹配,可以查看github

YCM不是基于前缀补全的,而是子序列,所以输入 abc 可以补全 xaybgc,它对于大小写的补全也非常智能。对于C家族的语言和Python支持跳转到定义处。此外还可以对文件路径进行补全,和ultisnips也很好结合。

Read More

vim插入表格(Vim Table Mode)

hexo升级后,对GFM有了更好的支持,现在可以方便地使用GFM的表格了。为了方便在Vim里用markdown写博客,就想找一个好用的vim插件,搜了一下,有不少这类插件,比如vim-rst-tables,RST-Tables-CJK,rst_tables 改进版等,但是都对 python 有依赖。找了老半天,最后还真找到一个不需要依赖 python 的: VIM Table Mode。下面简单介绍一下这个插件。

Read More

编辑器之神Vim

世界上有三种程序员,一种用Emacs,一种用Vi,剩下的是用其它编辑器的。Emacs是神的编辑器,Vim是编辑器之神。选择Vim还是Emacs,编辑器之争到今天也不曾有什么定论,也不可能有什么定论。有人说Emacs是伪装成编辑器的操作系统,这句话并不夸张,Emacs有一个强大的语言Lisp作支撑。Vim是由Bram Moolenaar发布的Vi的衍生版本,增加了非常多的新特性,也是最受欢迎的一个版本,现在有些Linux发行版本默认情况下会将Vi直接链接到Vim。相对来讲,Vim的脚本语言弱一些,Vim则更专注于做强大的编辑器。Vim 的设计则更符合UNIX哲学--“Do one thing and do it well”。

Read More

让tagbar支持markdown

编辑ctags.cnf文件

在vimfiles目录下新建ctags.cnf文件并添加以下内容

1
2
3
4
5
--langdef=markdown
--langmap=markdown:.mkd
--regex-markdown=/^#[ \t]+(.*)/\1/h,Heading_L1/
--regex-markdown=/^##[ \t]+(.*)/\1/i,Heading_L2/
--regex-markdown=/^###[ \t]+(.*)/\1/k,Heading_L3/

在vimrc中添加以下内容

1
2
3
4
5
6
7
8
let g:tagbar_type_markdown = {
\ 'ctagstype' : 'markdown',
\ 'kinds' : [
\ 'h:Heading_L1',
\ 'i:Heading_L2',
\ 'k:Heading_L3'
\ ]
\ }

Read More

vim编辑markdown时实现预览

现在使用hexo+vim+markdown+github来写博客。但是在用vim编辑markdown文件的时候,感觉缺个实时预览的功能。在不用任何插件的情况下,可以这样来做:首先,hexo new "your title";然后,编辑你的markdown文件,保存;之后hexo server,打开http://localhost:4000/,之后你可以继续在vim里继续编辑,然后保存,再手动刷新页面来预览结果。

Read More