VIM 稳定、实用、设计理论化,在自身领域能力极强,强烈的对称观念。
对于极复杂的大型工程一般使用 IDE,不强求, something else。
最开始接触VIM的时候,听人说VIM很好,就用了一下VIM,看VIM简陋不堪,所以就搁置了几个月,后来看到了Ruchee的vim配置文档,他的配置简单容易部署,所以后来在几分钟就建好了一个漂亮的vim编辑器的时候,高效编辑,高度灵活,我就喜欢上了这款编辑器。
下面是我github上vim项目的一部分说明
####shortcut
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| 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游戏
###一些常用快捷键说明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| /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 把当前行移到屏幕中间
|
###一些不常用但是实用的设置
1 2 3 4
| :set display=uhex 这个是用来查看^@这种不可显示的字符,自动转换这些字符为hex进制 也可以ga查看当前光标的进制 ,16 转换当前文件为16进制,,r16为恢复,只有十六进制部分修改才有用 :vert command 垂直打开command中的命令,示例 :vert h manpageview
|
####Tips
1 2 3 4 5 6
| c/c++/objc/objc++ 可以使用YCM 路径补全 可以使用YCM 光标定位 <c-o/i>上下选择前一次后一次光标位. 各个语言的补全 看~/.vim/snippets ctags 可以自行在c/php等头文件建立ctags文件 c比如/usr/local/include, php比如pear的包管理中
|
####Snip
一旦你输入下面的字符,按Tab键自动补全
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键作为方向键