版本:初稿
时间:2010-03-23
第一部分: 简介
不知道是谁说过一句话:说世界上的程序员分为三种,一种是使用VIM的,还有一种使用Emacs的,剩下的都是第三种.由此可见VIM的强大程度,可以说,这是一款非常适合程序员使用的编辑器.VIM的设计哲学是如果你的工作只需要做一次,那没问题,怎么搞都行,如果你的工作是要重复的完成某些工作,则IVIM总可以帮你找到更少的按键方式来实现相同的目标,为此,VIM设计了多种模式,常见的模式包括命令模式,编辑模式,命令模式等,这个也是和其他编辑器一个很不相同的地方,可能有些已经有其他编辑器习惯的人有点不太习惯的地方,但是如果将模式熟悉了就可以发现在不同的模式之间切换是很平常的事情,带来的好处是更少的按键和更快的输入.
VIM是VI的优秀后裔,虽然VI的后裔中不仅仅包括VIM,但是VIM是实现对VI的兼容性最好的编辑器,其他的后裔还包括STEVIE, ELvis, NVi, Vile等.除了实现对VI的兼容性外,VIM还扩展了很多的功能,包括语法高亮,代码折叠,脚本扩展等等.
(这段简介,借用了某位兄弟的内容.)
第二部分: 如何安装
Redhat, CentOS, Fedora:
yum install vim-common vim-minimal vim-enhanced vim-X11
rpm -ivh vim-common-...rpm vim-minimal-...rpm vim-enhanced-...rpm vim-X11-...rpm
Ubuntu, Debian:
apt-get install vim vim-common vim-gnome vim-gui-common vim-runtime
dpkg install vim-common_7.1.285-1_i386.deb
通过原代码安装:
(略)
第三部分:基本功能
Vi的工作模式:
1.命令模式(Command mode) ESC用来当前命令.
2.编辑模式(Insert mode) ESC可退出此模式.
3.命令行模式(Command line mode) 输入“:”进入此模式.
光标移动
h/j/k/l 左/下/上/右
H 将光标定位到屏幕第 1 行行首
M 将光标定位到屏幕中间行行首
L 将光标定位到屏幕 1 行行首
G 光标定位到文件的 1 行行首
1G 2G 3G .... 将光标定位到数字所示行行首
0 定位到当前行行首
$ 定位到当前行行尾
) 定位到下一句开始
( 定位到当前句开始
% 定位光标到匹配的括号处
/search_string 从当前行向下查找“search_string”
?search_string 从当前行向上查找“search_string”
n 继续查找下一个“search_string”
N 继续查找上一个“search_string”
编辑命令
i 当前光标左侧插入
I 当前行最左侧即行首插入
a 当前光标右侧插入
A 当前行最右侧即行末插入
ESC 退出编辑模式
u 取消上一次操作
U 取消对整行的所有操作
dd 剪切当前行
3dd 剪切从当前行开始的3行
D 剪切当前行自光标开始到行尾所有内容
C 剪切当前行结合自身实践自光标开始到行尾所有内容,并进入编辑模式(insert mode).
dw 剪切从光标开始到单词(word)末尾的所有内容
yy 复制当前整行
3yy 复制从当前行开始的3行
p 粘贴剪切或复制的内容
. 在当前光标处,再次上次的命令
退出Vi
:ZZ 保存并退出
:wq 保存并退出
:w 只保存
:q! 退出不保存
第四部分:高级功能
标记当前行
“m”加任何字符,如“mc”
"''c"将定位到标记位置
Vi剪切板操作(借用Windows的概念)
yy 复制当前整行
3yy 复制从当前光标开始的 3 行
y''t 复制从光标开始到“t”标记处所有内容
增加减少缩排量
按“V”键进入"visual mode"模式
j,k或方向键移动光标
按">>"增加缩排量,按“<<”减少缩排量
Vi 选项
:set number 显示行号
:set nowrap 行宽超过屏幕时不自动换行
:set wrap 自动换行
...(略)
执行Unix命令
:!pwd 显示当前工作目录
:r!date 将“date”命令的结果加入光标下方的新建行
查找和替换
:%s/word/string/ 替换整个文件每行第一个word
:1,$s/word/string/ 与上一条命令等效
:%s/word/string/g 替换整个文件每行所有word
:%s/word/string/gc 替换整个文件每行所有word,并要求确认
:%s/word/string/g 忽略大小写
:''a,''bs/word/string/gi 替换范围是标记“a”到标记“b”
:%s/*$/ 删除所有行尾空格
:2,30 s/word/string/g 替换范围:第2行到第30行.
|