我用vim
它毫无疑问地成为我最喜欢的编辑器。
vim小巧快捷,命令的分类清晰,分工明确,各司其职,命令格式统一,组合起来,威力无穷。
vim官方网站
这里我只是说一下自己学习和使用vim的一些情况。
学习基本的入门知识,vim为我们提供了一个 vimtutor。在命令行中敲入vimtutor就可以进入。
基本上把vimtutor跟着做一遍之后,用vim写东西就没什么大问题了。接下来只是要多多练习,积累命令与经验。
用vimtutor zh命令可以进入中文版教程。但是默认是繁体的。
可以下载一份简体中文版的(或者自己转换一下)。。替换掉原来的,看着舒服点。
再要进一步提高也用不着更多的资料,vim的help就足够了,其实耐心的一点点把vim help看一遍还是很有意思的。
当然默认安装的vim文档都是英文的,看英文的效率相对要低一些,当然对提高英文还是有帮助的,但我们只是
想学习vim的使用,我们完全可以用中文的文档。vim官方网站也有中文文档的安装文件(附件中包含也有一份)。
这样我们就可以安心的学习vim 啦。
使用vim,先得学会配置Vim,每个人的使用习惯不同,配置也各不相同。
vim安装目录下的 vimrc_example.vim样例配置作了基本的设置,复制到自己
的用户文件夹下改名为.vimrc,其实就这样也就可以正常很好的使用了。
然后就加了点简单的配置就满足我不高的要求了。我一般就拿vim来写程序。于是加了一点点下面的配置:
set nu "设置显示行号
set autoindent "设置自动缩进
set ignorecase "设置普通搜索时忽略大小写
set smartcase "如果搜索时有大写字母,则上面一条不起作用
set tabstop=4 "设置tab为4个空格长
set softtabstop=4 "
set shiftwidth=4 "设置自动缩进长度为4个空格长
colorscheme torte "设置一种颜色方案
其实可以先在 gvim中先用菜单的方式来查看各种选项的效果,再来慢慢修改自己的配置。
下面是我经常使用的一些命令。
基本的移动命令:
j,k,h,l "下,上,左,右移动,基本中的基本
i "在当前字符的前面插入
a "在当前字符的后面插入
I "在第一个非空字符的前面插入
A "在行末插入
gg "跳转到文件首
G "跳转到文件尾
nG "跳转到第n行
^ "跳转到本行第一个非空字符
0 "跳转到行首
$ "跳转到行末
跳转命令在完成跳转的同时,也确定了一个从当前位置到跳转位置的范围。这个对于我们组合使用各种命令很有用。
基本的搜索命令:
/string "向下搜索字符串string
?string " 向下搜索字符串string
* "搜索当前光标下的字符串
n,N "跳到下一个,上一个匹配串
:s "正则表达式搜索
经常是加注释和去注释
:m,n s/^/\/\//g "用//注释第m到n行
:m,n s/^\/\///g "删除第m到n行的注释
基本的选择,删除,复制,粘贴命令:
x "删除当前光标下的字符
dd "删除当前行
D "删除当前行当前光标之后的内容
d^ "删除当前行当前光标之前的内容
v "进入字符选择模式
V "进入行选择模式,这个最常用
ctrl+v "进入块先反模式,这个没怎么用过
选择了内容之后就可以对其整体进行操作了。
经常做的就是:
x,d :删除选择的内容
y :复制先择的内容
yy :复制当前行
删除或者复制的内容会被放在vim的缓冲器中,可以用:reg查看,我一般就只用默认的那个:""。
许多的缓冲器组成了一个缓冲栈,新的内容会进栈。老的内容会自动移到下一个缓冲器中。
我们可以在进行复制,粘贴前用"r,来指定使用r号缓冲器。
然后就可以用来粘贴了:
p :粘贴剪切板中的内容
这个会把内容粘贴到当前光标的后面,如果剪切板中的内容是行,则会粘贴到
当前行的下面
P :大写的p会把行内容粘贴到当前行的上面
修改替换命令:
r "修改当前字符
R "修改当前字符到本行末的字符
caw "change a word,修改当前的单词.
这个命令我也用的很多,aw是一个对象,代表一个单词。
daw "删除一个单词
再说一下另外几个跳转命令和翻页命令:
w "跳转到下一个单词的首字母
e "跳转到下一个单词的末字母
b "跳转到上一个单词的首字母
其它非常有用的命令:
o :在当前行下面新开一行
O :在当前行上面新开一行
这个o真的很好用,很多时候我们会写这样的程序:
if (0==x) {
}
当输入完}后我们用O命令就可以在上面新开一行,来写{}中的内容了。
这个我貌似用的相当频繁。
% "在匹配的括号(,{,[等之间跳转
这个对于查看括号匹配,及其范围非常有效
fx "跳转到本行中下一个x的位置
Fx "跳转到本行上一个x的位置
可以发现vim中的绝大多数命令都是成对的,方便记忆,也使vim的命令体系
更加完美了。
前面说过,vim中的跳转会同时确定一个范围,我们可以利用这个来对范围操作,
同前面说过,用v命令选择也可以作范围操作,但利用跳转和对象范围显然是更
明确也更快捷的。
dG "删除当前行到文未的行
dfx "删除当前位置到下本行中下一个x间字母的内容,包括首尾。
下面这个命令绝对是神奇的设计:
. :就是dot,它用来重复上一次的修改
在许多时候有几个地方要做相同的修改,用:s匹配显得太麻烦,就可以先在其中
一处作修改,再移到其它几处,用.来快速修改。
''或者`` "就是再次分号,可以在当前位置和上一次跳转的来回切换
Ctrl+o "回到上个位置
Ctrl+i "回到下个位置
vim中的跳转位置也是以栈的形式组织。每次跳转就是一个位置入栈。
对了还有几个命令:
J “用来把下一行接到本行后面
感觉许多时候很实用
Ctrl+p "自动补全
这个在写代码的时候非常方便,之前定义过的变量,甚至头文件中的宏,变量啊什么的,
在下次写的时候可以在敲了几个字母后用这个自动补全。
Ctrl+x+f "这个用来动补全路径。
比如下面:
#!/usr/bin/pyt
用这个命令可以看到/usr/bin/下面匹配pyt的文件。
我用的一些插件:
minibufexpl :这个插件用来以标签的形式显示打开的文件。
有很多时候我们会打开做个文件,特别是当我们查看一个项目的时候。可以用:ls命令查看
当前打开的所有文件,前面的数字唯一标识一个文件,通过下面的命令可以在不同的文件
之间跳转:
n+Ctrl+6 "跳转到第n个文件
但是这样得每次都用:ls来查看一个文件标识号,有了minibufexpl,它会把当前打开的文件
用标签的方式显示在窗口上面。非常方便。如果设置了鼠标支持,更可以通过鼠标点击来改变
当前文件。
其实vim安装的时候还带了一个叫做netrw的插件,用来编辑(浏览)文件夹。于是可以像下面这样:
vim path "path 可以是目录也可以是文件。
如果用vim打开一个目录,会出现一个文件列表,可以方便选择文件编辑。注意,目录也是一个文件,
这样可以用Ctrl+6来从文件跳转到目录。
我还使用了一个用来方便查看C代码的工具cscope。有了cscope,我就可以在C语言代码中自由漫步了,
此时的vim基本可以比得上一般的 IDE了。
cscope首页http://cscope.sourceforge.net/
还值得一提的就是在vim中用下面的命令可以执行任何shell命令:
:!cmd "执行shell命令cmd
这样你就可以在vim里完成你在终端下可以完成的所有事情了。
最后忘说怎么退出vim 了:
:q "退出
:wq "保存退出
:q! "强制退出
ZZ "保存退出
我最常用的就是ZZ,最方便嘛。
说到底,使用vim最开始就是一体力活,慢慢地才变成一种享受。
以上是我个人的使用经验,作为自我激励,要是能帮到谁,那我会非常高兴的。
推荐阅读: <<seven habits of effective text editing>>
<<vim user manual>>
<<VIM_Quick_Reference_Card>>