vim——vi improved
Vim是一个类似于Vi的文本编辑器,不过在Vi的基础上增加了很多新的特性,Vim普遍被推崇为类Vi编辑器中最好的一个。
Vi和Vim他们都是多模式编辑器,不同的是Vim是Vi的升级版本,它不仅兼容Vi的所有指令,而且还有一些新的特性在里面。比如代码补全、编译及错误跳转、代码高亮显示等方便编程的功能特别丰富,在程序员中被广泛使用。另外值得一提的是Vim可以很好的支持中文,尤其是简体中文,这对于我们写中国字,讲中国话的中国人,更应该是个首选了。
1.普通模式(命令模式,Normal mode)
Vim启动后的默认模式
在普通模式中,用的编辑器命令,比如移动光标,删除文本等等。这也是Vim启动后的默认模式。这正好和许多新用户期待的操作方式相反(大多数编辑器默认模式为插入模式)。
Vim强大的编辑能来自于其普通模式命令。普通模式命令往往需要一个操作符结尾。例如普通模式命令dd
删除当前行,但是第一个"d"的后面可以跟另外的移动命令来代替第二个d
,比如用移动到下一行的"j"键就可以删除当前行和下一行。另外还可以指定命令重复次数,2dd
(重复dd
两次),和dj
的效果是一样的。用户学习了各种各样的文本间移动/跳转的命令和其他的普通模式的编辑命令,并且能够灵活组合使用的话,能够比那些没有模式的编辑器更加高效的进行文本编辑。
2.插入模式(输入模式,Insert mode)
在这个模式中,可向文本缓冲中插入文本。
在普通模式中,有很多方法可以进入插入模式。比较普通的方式是按a
(append/追加)键或者i
(insert/插入)键。
插入模式中回到普通模式:ESC
键。
3.可视模式(块操作模式、Visual mode)
这个模式与普通模式比较相似。但是移动命令会扩大高亮的文本区域。
高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到这块高亮的区域上。Vim的"文本对象"也能和移动命令一样用在这个模式中。
4.选择模式(Select mode)
这个模式和无模式编辑器的行为比较相似(Windows标准文本控件的方式)。
这个模式中,可以用鼠标或者光标键高亮选择文本,不过输入任何字符的话,Vim会用这个字符替换选择的高亮文本块,并且自动进入插入模式。
5.命令行模式(Command line mode)
在命令行模式中可以输入会被解释成并执行的文本。
例如执行命令(:
键),搜索(/
和?
键)或者过滤命令(!
键)。在命令执行之后,Vim返回到命令行模式之前的模式,通常是普通模式。
6.Ex模式(末行模式,Ex mode)
这和命令行模式比较相似,在使用:visual
命令离开Ex模式前,可以一次执行多条命令。
这其中我们常用到就是普通模式、插入模式和命令行模式。
一、进入vim
vim filename:打开或新建文件,并将光标置于第一行首
vim +n filename:打开文件,并将光标置于第n行首
vim + filename:打开文件,并将光标置于最后一行首
vim filename....filename:打开多个文件,依次进行编辑
vim -R filename:只读形式编辑文件
vim -M filename:强制性地避免对文件进行修改
二、退出
Command 模式是vi或vim的默认模式,如果我们处于其它命令模式时,要通过ESC键切换过来。
当我们按ESC键后,接着再输入:号时,vi会在屏幕的最下方等待我们输入命令;
:w 保存;
:w filename 另存为filename;
:wq! 保存退出;
:wq! filename 注:以filename为文件名保存后退出;
:q! 不保存退出; (!强制修饰符)
:x 应该是保存并退出 ,功能和:wq!相同
ZZ:保存并退出
:close 可以关闭当前窗口。实际上,任何退出文件编辑的命令":quit"和"ZZ"都会关闭窗口,但是用":close"可以阻止你关闭最后一个Vim,以免以意外地整个关闭了Vim。
:only 关闭除当前窗口外的所有其它窗口。如果这些窗口中有被修改过的,你会得到一个错误信息,同时那个窗口会被留下来。
一、Normal mode 切换到 Insert mode:
i(insert):进入Insert mode,并且让光标处于当前字符之前
I(insert ):进入Insert mode,并且光标处于当前行的第一个非空字符前
a(append):进入Insert mode,并且光标处于当前字符之后
A(append):进入Insert mode, 并且光标处于当前行尾
o(open):进入Insert mode,并在当前行后新起一行,光标位于新行
O(open):进入Insert mode,并在当前行上边插入新行,光标位于新行
s(subst char):删除当前字符,然后进入Insert mode
S(subst line):删除当前行,然后进入Insert mode
二、Insert mode 切换到Normal mode
1.显示或取消行号
set nu(set number):显示行号
set nonu:取消显示行号
2.显示忽略或区分字符大小写
set ic (set ignorecase):忽略大小写
set noignorecase:区分大小写
3.设定自动缩进
set ai(set autoindent):自动缩进
set noai:取消自动缩进
4.查找到的文本高亮或取消高亮显示
set hlsearch:高亮显示搜索到的文本
set nohlsearch:取消高亮显示搜索到的文本
5.语法高亮
syntax on:打开语法高亮显示
syntax off:关闭语法高亮显示