工欲善其事必先利其器——从vim开始coding!(先附上一个VI的常用命令:http://www.washington.edu/computing/unix/vi.html)
对Vim的大名早就如雷贯耳,同样如雷贯耳的是vim的各种难用,更加如雷贯耳的是Vim在各种大神眼中的地位——coding神器;
这里本着最简单快速上手的原则给出一些最最有用的快捷键和编程配置,通过这些就不觉得vim有多难用了。
作为一个初学者经验是这样的,如果你有同样的症状,我要从心理上安慰你莫怕莫怕,新手都是同感:
- 不同于任何编辑器,其插入(输入文本)和编辑(删除,复制,粘贴,移动光标)竟然是两个模式,导致你要不停的i/o键和esc键之间切换模式,感觉异常痛苦,而且忘记切换的时候按错键还会发生各种你不知道的快捷键造成诡异的文本编辑结果。——这是正常的
- 感觉不能随意使用鼠标和方向键,竟然要使用诡异的hjkl来移动光标——这也是正常的,如果你用的是纯粹的vi的话。但是vim是可以支持方向键的,也可以通过配置支持鼠标,不过支持了方向键和鼠标你的双手移动范围就要增大了,这也不利于提高效率。
- 无法选中文本,复制粘贴都不能CTRL-C和V——这更加正常,因为vim不需要选中就能复制粘贴,更不需要CTRL-C和V两个键同时按才能复制粘贴,你原来的选中-复制-移动光标-粘贴,vim其实可以一步搞定。
- 删除,退格也不好用,撤销恢复也不好用——亦有同感,但是vim大神有自己的规则去干这些事。
- 等等一些莫名的症状。。。
我要说的是: 所谓大神,皆有大招,人世间所有的痛苦都来自不了解不熟悉。
—————
Vim最有用的快捷键:
- 首先练习移动光标(感觉回到了dos年代的移动小海龟..)
H、L 向前,向后 J、K 向上,向下w 移动光标到下一个单词. b 移动光标到上一个单词. 0 移动光标到本行最开头. $ 移动光标到本行结尾处. H 移动光标到屏幕的首行. M 移动光标到屏幕的中间一行. L 移动光标到屏幕的尾行. gg 移动光标到文档首行. G 移动光标到文档尾行. nG 移动光标到第n行,n是你代码的行号 n<Enter> 向下移动n行 n<Space> 向后移动n个字符c-f (即 ctrl 键与 f 键一同按下) 本命令即 page down. c-b (即 ctrl 键与 b 键一同按下, 后同) 本命令即 page up.
以上真的有用,切要谙熟于心!
- 然后是编辑文档,拷贝, 删除与粘贴,其中d是删除,y是拷贝,p是粘贴
yy 表示拷贝光标所在行. dd 表示删除光标所在行. p 粘贴到光标所在的下一行dw 删除一个词 d$ 向后删除到本行的行尾 d0 向前删除到本行的行首dgg 向上删除直到第一行 dG 向下删除直到最后一行 dnG 删除当前行到第n行的所有内容
yw, y$, y0, ygg, yG有着类似的性质,都表示复制;x(X) 删除后(前)一个字符
u 撤销!!!!
- 然后是数字命令
5w(e) 移动光标到下五个单词. 5yy 表示拷贝光标以下 5 行. 5dd 表示删除光标以下 5 行.类似的你可以尝试加数字到很多上面的命令前;
- 最后是vim的命令
set:nu 开启行号
set:nonu 取消行号
set:diff 比较两个文件的不同,用:vsp filename打开另一个文件:sp 分割窗口
:/ word 查找word字符:ls 显示刚刚用过的命令;
Vim简单实用配置
最后的最后是vim用于代码工作的简单配置,有了这个,堪称小而轻的IDE
set number #开启行号
syntax on #语法高亮
set autoindent #自动缩进
set smartindent #智能缩进
set tabstop=4 #tab为4格
set shiftwidth=4
set smarttab #智能tab
set softtabstop=4
set showmatch #显示自动匹配()[]{}
filetype on #检测文件类型
set history=100 #历史记忆100个
set background=dark #背景黑色
set ruler #打开光标标尺
set clipboard+=unnamed #和外界共享粘贴板内容
set autowrite #自动保存
set cursorline #显示光标所在行
set magic
set foldenable #开启代码折叠
set foldlevel=4 #折叠最大4层
set foldmethod=indent #折叠方式为缩进
set foldcolumn=0
set nocompatible #抛弃vi
set completeopt=preview,menu
filetype plugin indent on #根据文件类型加载插件,一下是各种代码自动补全的插件
autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete
autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
autocmd FileType java set omnifunc=javacomplete#Complete
set mouse=a #开启鼠标
当然vim强大到远不止这些,但是这些足够一个新手折腾了,“坚持就是胜利”,vim是最好的诠释;
——–补充——-
- python文件好像要求tab必须是空格,请做一下设置:
:set expandtab #写在vimrc里,这样新写的文件tab就会是4个空格
:%ret! 4 #如果是其他编辑器已经写好的文件,则可以在vim里一键将所有tab转成空格其它相关命令:
:set tabstop=4 设定tab宽度为4个字符
:set shiftwidth=4 设定自动缩进为4个字符
:set expandtab 用space替代tab的输入
:set noexpandtab 不用space替代tab的输入
- vim 查找替换
:%s/four/4/g 在所有行替换 four为4,当前行则把%去掉