VIM 稳定、实用、设计理论化,在自身领域能力极强,强烈的对称观念。

对于极复杂的大型工程一般使用 IDE,不强求, something else。

最开始接触VIM的时候,听人说VIM很好,就用了一下VIM,看VIM简陋不堪,所以就搁置了几个月,后来看到了Ruchee的vim配置文档,他的配置简单容易部署,所以后来在几分钟就建好了一个漂亮的vim编辑器的时候,高效编辑,高度灵活,我就喜欢上了这款编辑器。
下面是我github上vim项目的一部分说明

shortcut

Ctrl+P          快速查找当前文件夹下所有子目录的文件,ctrl+j/k上下选择文件
:ag             查找当前目录下的所有文件的关键字
,gd             使用YCM的快速查找头文件定义,类似vs中的F12
,ci             注释当前行(可选中)
,cm             块注释(可选中)
key<Tab>        UltiSnip And YCM 可以自动补全,UltiSnip对py,ycm对c好一些
                <c-j/k>上下选择下一个瞄准位
<c-n><c-j/k>    用<c-n>当前选中的行,用<c-j/k>来移动行的位置(vim-multipe-cursors)
<m-j/k>         用alt/command+j/k移动当前行的位置(功能同上)
<c-n>           不停的选中<c-n>,可以执行多光标编辑
                <c-p>回到前一个,<c-x>放弃当前这个光标到下一个
                其中i,a,I,A可以在insert模式,c,s可以在normal模式,c是清除当前选中的文字
                有个小bug,就是在多光标选中模式下,要先按i或者a这个键,再按I/A
,mt             生成每个语言的ctags文件,可以通过ctrl+]跳转和ctrl+t返回
+/-             +可以扩大选择区域/-相反
,bb /,bn<type char> 按等于号对其或者自定义符号对齐
:Sw             当需要root权限保存时,不用重新打开
:DiffSaved      比较在保存文件之后修改了什么那些内容
:Man glob       查看linux关于glob的man文档(only linux/mac)
:Man glob.php   查看从php.net中访问glob的相关语法和示例(only linux/mac)
K               判断文件类型,自动调用:Man function/command name

PHP补全

可以使用Ctrl+x,Ctrl+o来补全内容

vim学习

如果是初学者,要学会这几个技巧
vim有很多的‘模式’,在normal模式下
jkhl: 这四个键分别代表:下上左右
按字母i,进入insert插入模式,然后就可以输入文字
按ESC键,退出insert进入normal模式
退出要先按英文冒号:然后输入q

这些是基本的规则,如果要熟练的话,需要做一些高级的练习:

简明Vim练级攻略

vim游戏

一些常用快捷键说明

/xxx                    查找xxx字符串
,ci                     注释选定行(自动识别文件类型后添加注释)
,n/,p                   切换buffer的标签(因为vim的一个窗口里面有多个buffer)
                        同时设置了新的快捷键F2/F3对应,n/,p
10G                     数字10和大写的G,跳到第十行

:s/^/#                  用"#"注释当前行 ,":s/<search>/<replace>"
:%s/x/b                 在所有行替换x为b,":%s/<search>/<replace>"
:2,50s/x/b              在2~50行替换x为b
:.,+3s/x/b              在前行和当前行后面的三行,替换x为b
:set notextmode         这个可以去掉^M这个符号
:set pastetoggle        可以解决在linux命令行复制内容的时候,
                        内容被识别为vim操作和乱序缩进,在我的配置中快捷键为F4

f<char>                 查找当前行的字符
gb                      go browser,光标下如果是url链接,自动用默认浏览器打开链接,
                        如果是选中的字符串,就用浏览器搜索, ,gb是另外一个插件提供的同样功能
gf                      如果光标下是一个文件路径,则可以用vim自动打开这个文件
gd                      找到光标下的标签定义
Ctrl+Tab/Ctrl+Shift+Tab 切换vim标签
Ctrl+w,v/h              在gvim下创建多窗口
Ctrl+h/j/k/l            在gvim下切换多窗口
]p                      和p的功能差不多,但是它会自动调整被粘贴的文本的缩进去适应当前代码的位置
K                       在Man里面查找光标当前所在处的词
Ctrl+X,Ctrl+O           自动补全,ycm占用Ctrl+n/p
zz                      把当前行移到屏幕中间

一些不常用但是实用的设置

:set display=uhex       这个是用来查看^@这种不可显示的字符,自动转换这些字符为hex进制
                        也可以ga查看当前光标的进制
,16                     转换当前文件为16进制,,r16为恢复,只有十六进制部分修改才有用
:vert command           垂直打开command中的命令,示例 :vert h manpageview

Tips

c/c++/objc/objc++   可以使用YCM
路径补全            可以使用YCM
光标定位            <c-o/i>上下选择前一次后一次光标位.
各个语言的补全      看~/.vim/snippets
ctags               可以自行在c/php等头文件建立ctags文件
                    c比如/usr/local/include, php比如pear的包管理中

Snip

一旦你输入下面的字符,按Tab键自动补全

#!
class
html5

leader和buffer

leader默认是一个按钮,指的是反斜杠'\',不过我在配置中设置成了',',减少小指的负担。

buffer其实就是你当前下面的buffer而已。

当你了解到了基本的使用方法后,你可以读看看我在.vimrc中的文档,里面有很多详细的技巧,熟悉后能和sublime和notepad++一样顺手。

当然_vimrc.bundles这个文件里面是需要加载的插件,里面有介绍每个插件是拿来干嘛的,也可以了解一下。

我之前学习vim的时候,收集到的一些资料,这次重新复习了里面的内容,整理了一下发布了出来,就把它当成中级vim的入门手册吧

下载地址

Thanks

这份vim配置的所以完成,会如此热爱vim,是看到了ruchee的vimrc的配置,其完善的配置让我感觉vim是如此的简单

ruchee

我也参考了很多的vim配置:

vimfiles

dotfiles

vimrc

前段时间找到了vim的集成配置,功很强大

The Ultimate Vim Distribution

初学教程

Learn Vimscript the Hard Way

为什么Vim使用HJKL键作为方向键