我用vim

xiaoee posted @ 2010年4月12日 12:45 in Operating System with tags vim 编辑器 , 2885 阅读
        从最开始用vim时不知道怎么输入文字,怎么退出,到现在被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    "跳转到上一个单词的首字母
Ctrl+f "向前翻页
Ctrl+b "向后翻页
zt,zz,zb "分别用作把当前行显示到最上面,中间,最下面,调整显示
shift+h/m/l "分别用作把光标定位到页面开头,中间,末尾

其它非常有用的命令:
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>>


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter