vi/vim 基本使用方法

来源:互联网 发布:网络保密十不准 编辑:程序博客网 时间:2024/04/30 23:39
vi/vim 基本使用方法
本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!

vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。

1、vi的基本概念
  基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(lastline mode),各模式的功能区分如下:

1) 命令行模式command mode)

  控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last linemode。

2) 插入模式(Insert mode)

  只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。

3) 底行模式(last line mode)

  将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。

不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式commandmode)。

2、vi的基本操作
a) 进入vi

  在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:

   $ vi myfile


   不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insertmode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到「插入模式(Insert mode)」再说吧!

b) 切换至插入模式(Insert mode)编辑文件

  在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insertmode)」,这时候你就可以开始输入文字了。

c) Insert 的切换

  您目前处于「插入模式(Insertmode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(commandmode)」再删除文字。

d) 退出vi及保存文件

  在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:

: w filename (输入 「w filename」将文章以指定的文件名filename保存)

: wq (输入「wq」,存盘并退出vi)

: q! (输入q!, 不存盘强制退出vi)


3、命令行模式(command mode)功能键
1). 插入模式

  按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;

  按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;

  按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。

2). 从插入模式切换为命令行模式

  按「ESC」键。

3). 移动光标

  vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。

  按「ctrl」+「b」:屏幕往“后”移动一页。

  按「ctrl」+「f」:屏幕往“前”移动一页。

  按「ctrl」+「u」:屏幕往“后”移动半页。

  按「ctrl」+「d」:屏幕往“前”移动半页。

  按数字「0」:移到文章的开头。

  按「G」:移动到文章的最后。

  按「$」:移动到光标所在行的“行尾”。

  按「^」:移动到光标所在行的“行首”

  按「w」:光标跳到下个字的开头

  按「e」:光标跳到下个字的字尾

  按「b」:光标回到上个字的开头

  按「#l」:光标移到该行的第#个位置,如:5l,56l。

4). 删除文字

  「x」:每按一次,删除光标所在位置的“后面”一个字符。

  「#x」:例如,「6x」表示删除光标所在位置的“后面”6个字符。

  「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符。

  「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符。

  「dd」:删除光标所在行。

  「#dd」:从光标所在行开始删除#行

5). 复制

  「yw」:将光标所在之处到字尾的字符复制到缓冲区中。

  「#yw」:复制#个字到缓冲区

  「yy」:复制光标所在行到缓冲区。

  「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。

  「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。

6). 替换

  「r」:替换光标所在处的字符。

  「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

7). 回复上一次操作

  「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。

8). 更改

  「cw」:更改光标所在处的字到字尾处

  「c#w」:例如,「c3w」表示更改3个字

9). 跳至指定的行

  「ctrl」+「g」列出光标所在行的行号。

  「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

4、Last line mode下命令简介
  在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「commandmode」下后,再按「:」冒号即可进入「last line mode」。

A) 列出行号

 「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。

B) 跳到文件中的某一行

 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。

C) 查找字符

 「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。

 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。

D) 保存文件

 「w」:在冒号输入字母「w」就可以将文件保存起来。

E) 离开vi

 「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。

 「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。

5、vi命令列表
1、下表列出命令模式下的一些键的功能:

h
左移光标一个字符

l
右移光标一个字符

k
光标上移一行

j
光标下移一行

^
光标移动至行首

0
数字“0”,光标移至文章的开头

G
光标移至文章的最后

$
光标移动至行尾

Ctrl+f
向前翻屏

Ctrl+b
向后翻屏

Ctrl+d
向前翻半屏

Ctrl+u
向后翻半屏

i
在光标位置前插入字符

a
在光标所在位置的后一个字符开始增加

o
插入新的一行,从行首开始输入

ESC
从输入状态退至命令状态

x
删除光标后面的字符

#x
删除光标后的#个字符

X
(大写X),删除光标前面的字符

#X
删除光标前面的#个字符

dd
删除光标所在的行

#dd
删除从光标所在行数的#行

yw
复制光标所在位置的一个字

#yw
复制光标所在位置的#个字

yy
复制光标所在位置的一行

#yy
复制从光标所在行数的#行

p
粘贴

u
取消操作

cw
更改光标所在位置的一个字

#cw
更改光标所在位置的#个字


2、下表列出行命令模式下的一些指令
w filename
储存正在编辑的文件为filename

wq filename
储存正在编辑的文件为filename,并退出vi

q!
放弃所有修改,退出vi

set nu
显示行号

/或?
查找,在/后输入要查找的内容

n
与/或?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?联用)继续查找,直到找到为止。
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Vi IMproved (VIM) 是 Bram Moolenaar 开发的与 UNIX 下的通用文本编辑器 vi兼容并且更加强大的文本编辑器。它支持语法变色、正规表达式匹配与替换、插入补全、自定义键等等功能,为编辑文本尤其是编写程序提供了极大方便。VIM可以运行在“任何”操作系统上,包括我们常用的 Windows 和 UNIX/Linux。一旦掌握了VIM,你就掌握了一项跨平台的利器。

     尽管 VIM 功能十分强大,但对于刚接触它的人尤其是用惯类似 Windows 的 notepad 的人来说,VIM并不十分易于掌握,毕竟它兼容的是 vi 而不是 notepad。本文旨在介绍 VIM 中我所了解的用法,希望有更多的人喜欢VIM。应该指出的是,VIM 中有太多的功能和命令,有许多你并不用的着,因此没有记的必要,有些我也不知道,这要靠你来发现,关键是多看:help ,多试。另外,取决于你的 VIM 的版本以及编译安装时的设置,文中讲述的某些功能或命令在你的 VIM中也许并不存在,如有需要请升级。

     1. vi 的基本用法 phpma.com
vi 的屏幕区域分为两个部分:最下面一行是命令行,一般用于提示信息或命令行输入;除此之外为正文显示区域。跟 notepad不同的是,vi 中存在两种模式:普通(Normal)模式和插入(Insert)模式。

     进入 vi 后默认即为普通模式。新手一般初次进入 vi 后就想输入一串字符,结果发现 vi 一连串莫名其妙的反应。其实,在 vi的普通模式下,任何按键包括普通字符都表示某个命令,并不表示在当前光标处插入字符。常用的命令有:(注意区分大小写)

: 进入命令行 phpma.com
i 或 a 进入插入模式。区别是:i 进入插入模式后,光标在当前字符前面; a 进入插入模式后,光标在当前字符后面
h j k l 分别是光标左移、下移、上移、右移(一般来说你不会用到它们来移动光标,按方向键就可以了)
x 删除一个字符
dd 删除一行
J 删除本行的回车符,把下一行并入本行末尾
r字符 替换光标所在字符为新字符
^ $ 分别是光标移到行首和行末
数字G 移动光标到第若干行,如果直接按 G 则移动到最后一行

在普通模式中,命令以按键形式输入。而在命令行中,命令以字符串形式输入。下面是常用的命令行:

:q 退出! (更确切的说应该是关闭当前文件)
:w 文件名 存盘。如果还是保存为当前文件,不必写文件名
:wq 存盘退出
:new 文件名 打开或新建文件(同时关闭当前文件)。如果不指定文件名或者文件名不存在则是新建文件
:help 帮助! 看完后用 :q 关掉窗口。可以在 help 后面加某个帮助主题的名称,如 :help dd 或 :helphelp

还有一点是,如果某个命令得到警告(拒绝执行),则要在命令的命令词后加叹号表示强制执行。比如你修改过文件,但又想放弃存盘并退出,如果输入:q,vi 会告诉你文件已修改,这时,你只能输入 :q! 退出。又如用 :w! a.txt 表示把当前文件存为 a.txt 而不管a.txt 是否已经存在。

插入模式就不用多说了,添加你的新内容吧。不过,你也许会发现 BackSpace 键和 Delete 键的运用很受限制,也不能像notepad 那样选择、复制和粘贴。这些都是由于这是 vi 的标准,后面我们将看到 VIM 扩展的功能可以解决这些问题。记住按ESC 退出插入模式,回到普通模式。

2. 复制和粘贴
为了便于选取文本,VIM 引入了可视(Visual)模式。要选取一段文本,首先将光标移到段首,在普通模式下按 v进入可视模式,然后把光标移到段末。需要注意,光标所在字符是包含在选区中的。这时可以对所选的文本进行一些操作,常用的(可视模式)命令有:

x 或 d 剪切(即删除,同时所选的文本进入剪贴板)
y 复制
r字符 所有字符替换为新字符
u U ~ 分别是所有字母变小写、变大写、反转大小写
> < 分别是缩进和反缩进

当输入了命令以后,VIM 将回到普通模式,这时可以按 p 或 P 进行粘贴。普通模式下有关复制和粘贴的命令:

v 进入可视模式
p 或 P 在当前位置粘贴剪贴板的内容,p 粘在光标所在字符后面,P 粘在前面

不得不承认,虽然引入了可视模式,复制和粘贴在 VIM 中仍然是比较麻烦的操作,这也许是 VIM 唯一的缺点。:-) 此外,VIM还引入了选择(Select)模式,跟可视模式类似。结合一些键的定义和选项设置,可以实现跟 notepad相同的复制和粘贴的使用习惯。限于篇幅和水平,在此不提。

3. VIM 的定制
VIM 在 vi的基础上扩展了许多功能和命令,提供了许多选项。但是有些功能默认是关闭的,有些选项可能也不符合个人的使用习惯。为此,我们需要编写一个vimrc 文件。在 DOS/Windows 版本的 VIM 中,这个文件应放在 VIM 的目录下,文件名为“_vimrc”。在UNIX 版本 的 VIM 中,这个文件一般可以放在用户的个人主目录下,文件名为“.vimrc”。VIM 启动时将会把 vimrc文件中的每一行作为命令行依次执行,我们可以在该文件中加入若干命令,使 VIM启动时自动开启一些有用的功能,定义一些常用的快捷键等。

//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

下面是一个 vimrc 文件的示例:(请注意区分浏览器的换行与实际的换行。)

" 设置 Backspace 和 Delete 的灵活程度,backspace=2 则没有任何限制
set backspace=2
" 设置在哪些模式下使用鼠标功能,mouse=a 表示所有模式
set mouse=a
" 设置路径,在 <C-W>f 等命令中涉及此参数
" 对于 Windows 编程,path 可设为如
" set path=.,"C:\Program Files\Microsoft VisualStudio\vc98\Include",,
" 对于 UNIX 编程,path 可设为如下
set path=.,/usr/include,/usr/include/qt,,
" 打开光标的行列位置显示功能
set ruler
" 设置跳格距离
set tabstop=4
" 设置自动缩进格数
set shiftwidth=4
" 打开自动缩进功能
set autoindent
" 设置哪些键可以行间绕转,如下设置则 Backspace 和方向键等均可行间绕转
set whichwrap=b,s,h,l,<,>,[,]
" 根据当前文件语法自动变色。VIM 识别上百种文本文件的语法,如 html、c++、java 等
syntax on
" 以下是个人习惯,定义 <F2><F3> 等键,便于插入模式和可视模式之间的切换
" (1) 使 x d y 自动返回插入模式
vnoremap y "ryi
vnoremap x "rxi
vnoremap d di
" (2) 普通模式和插入模式下均可按 <F3> 粘贴
imap <F3><Esc>:if col(".")!=1<Bar>exe 'normal"rp'<Bar>else<Bar>exe'normal"rP'<Bar>endif<CR>`[i
nmap <F3> "rP
" (3) 普通模式和插入模式下均可按 <F2> 进入可视模式
imap <F2><Esc>:if col(".")!=1<Bar>exe 'normallv'<Bar>else<Bar>exe'normalv'<Bar>endif<CR>
nmap <F2> v
 

下面给出我常用的 vimrc 文件。另外,你的 VIM 安装目录下很可能也带有一个默认的 vimrc文件,你都可以参考。如果遇到没有见过的命令或者参数,可以自己看看 :help 。

vimrc
4. VIM 的其它命令
要真正使用 VIM,光靠 vi 的基本命令当然不行,下面就来介绍更多的命令。以下的命令,有些是 VIM 特有的,有些在 vi中也存在,我就不加区分了。其中,以“:”开头表示该命令在命令行输入,以“i”开头表示这是插入模式下的命令,其它则是普通模式下的命令。<C-X> 表示按 Ctrl+X。

4.1 使用帮助

<C-]> 在 :help 中,遇到超连接可以按 Ctrl+]跳转
<C-T> 在 :help 中,按 Ctrl+T 往回跳转

4.2 打开多个文件 phpma.com

:split 文件名 切分出一个新窗口,打开指定文件。如果省略文件名,则仍显示当前文件,可用于同时观察文件的不同部分。(注意跟:new 的区别)
<C-W>f 切分显示光标所指的文件名,VIM 会在 path中搜索该文件名,比如常用它打开 #include 语句中的文件
<C-W><C-W>当同时打开几个文件时,按<C-W><C-W>在各窗口之间切换
<C-W>_ 当同时打开几个文件时,按<C-W>_ 使当前窗口最大化
:set scrollbind 设置卷动绑定属性。所有设置了卷动绑定属性的窗口将一起卷动。可以用 :set noscrollbind解除绑定

4.3 撤销和恢复
编辑过程中出现错误在所难免,不过没有关系,VIM允许无限次的撤销。只要你没有关闭文件,你甚至可以一直撤销下去,回到几个小时以前刚打开这个文件开始工作时的状态。

u 撤销(Undo)上次所做的修改
<C-R> 恢复(Redo)上次撤销的内容

4.4 字符串搜索替换

/字符串 向下搜索字符串
?字符串 向上搜索字符串
* # 分别是向下和向上搜索光标所指的词
n 重复上一次搜索
:起始行,结束行s/搜索串/替换串/g 从起始行到结束行,把所有的搜索串替换为替换串
:set ignorecase 设置忽略字母大小写。可以用 :set noignorecase 取消忽略字母大小写

例如 /hello 从当前光标位置开始向下搜索 hello,不带字符串的命令 / 可重复上一次搜索,相当于 n。又如:1,$s/hello/hi/g 把全文中的 hello 改为 hi,其中 $表示最后一行。另外,你还可以先进入可视模式选择一段文本,按 :进入命令行并输入 s/hello/hi/g ,VIM将在选区中进行替换操作。

搜索字符串用的是正规表达式(Regular expression),其中许多字符都有特殊含义:

\ 取消后面所跟字符的特殊含义。比如 \[vim\] 匹配字符串“[vim]”
[] 匹配其中之一。比如 [vim] 匹配字母“v”、“i”或者“m”,[a-zA-Z] 匹配任意字母
[^] 匹配非其中之一。比如 [^vim] 匹配除字母“v”、“i”和“m”之外的所有字符
. 匹配任意字符
* 匹配前一字符大于等于零遍。比如 vi*m 匹配“vm”、“vim”、“viim”……
\+ 匹配前一字符大于等于一遍。比如 vi\+m 匹配“vim”、“viim”、“viiim”……
\? 匹配前一字符零遍或者一遍。比如 vi\?m 匹配“vm”或者“vim”
^ 匹配行首。例如 /^hello 查找出现在行首的单词 hello
$ 匹配行末。例如 /hello$ 查找出现在行末的单词 hello phpma.com
\(\) 括住某段正规表达式
\数字 重复匹配前面某段括住的表达式。例如 \(hello\).*\1匹配一个开始和末尾都是“hello”,中间是任意字符串的字符串

对于替换字符串,可以用“&”代表整个搜索字符串,或者用“\数字”代表搜索字符串中的某段括住的表达式。

举一个复杂的例子,把文中的所有字符串“abc……xyz”替换为“xyz……abc”可以有下列写法:
:%s/abc\(.*\)xyz/xyz\1abc/g
:%s/\(abc\)\(.*\)\(xyz\)/\3\2\1/g
其它关于正规表达式搜索替换的更详细准确的说明请看 :help pattern 。


//---------------------------------------------------------------------------------------------------------------------------------------------------------------------

4.5 插入补全
在插入模式下,为了减少重复的击键输入,VIM提供了若干快捷键,当你要输入某个上下文曾经输入过的字符串时,你只要输入开头若干字符,使用快捷键,VIM将搜索上下文,找到匹配字符串,把剩下的字符补全,你就不必敲了。这样,编程序时你起多长的变量名都没关系了,:-)而且还可以减少输入错误。我认为,插入补全是 VIM 最为突出的一项功能。

i<C-P> 向上搜索,补全一个词。例如,上文中出现过filename 这个词,当你想再输入 filename 时,只要按f<C-P> 即可。假如 VIM 向上搜索,找到以 f开头的第一个匹配不是 filename,你可以继续按 <C-P>搜索下一个匹配进行补全。当然,如果你想一次 <C-P>就成功,你可以多输入几个字符比如 filen 再按 <C-P>补全
i<C-N> 向下搜索,补全一个词
i<C-X><C-L>补全一行。比如你写过一行 for (int i = 0; i < 100;i++),你想再写一模一样的一行,只要输入for<C-X><C-L>即可。如果补全出来的不是你想要的那一行,你可以按 <C-P> 或<C-N> 选择上一个或下一个匹配行
i<C-X><C-F>在文件系统中搜索,补全一个文件名

如果按 <C-P> 或<C-N> 补全一个词,在当前文件中没有找到匹配,VIM 将搜索#include 语句中的文件,而文件的位置将在 path 中搜索。

4.6 键的定义
在 VIM 中你可以定义一个键,按了这个键等于按了某一串预定的键。比如
:map! <F10><Esc>ddi
表示如果你在插入模式下按 <F10> 就相当于连续按了<Esc>ddi,这将会使 VIM退回到普通模式,删除一行,再进入插入模式。

map命令有许多变化形式,每种变化形式所定义的键只在某些模式下有效,而在其它模式下无效。你需要根据情况使用正确的变化形式:

:nmap 键只对普通模式有效
:imap 键只对插入模式有效
:vmap 键只对可视模式有效
:cmap 键只在命令行下有效
:map 键在普通模式和可视模式都有效
:map! 键在插入模式和命令行下都有效

还要注意,如果你定义 :map d di 这将引起循环定义错误。这时,你需要使用 :noremap d di来定义。同样,noremap 也有对不同模式的变化形式。

比如,你想在文件的每一行的倒数第二个字符处插入字符串“abc”,你可以定义
:nmap <F10>$hiabc<Esc>j
在 普通模式下按一次 <F10>将会:光标移到行末,光标左移一格,进入插入模式,输入“abc”,退回到普通模式,光标下移一行。不停地按<F10>将解决问题。这是我临时处理多行重复操作的常用手段,当然,这是一种笨办法。:-) 而上文写到的对<F2><F3> 的定义则是 map 更复杂的用法。你还可以定义
:map <F9>:w<CR>:!gcc -o %<-I/usr/include/qt -lqt %<CR>
:map <F5> :!./%<
实现按 <F9> 编译当前文件,按<F5> 执行。

在插入补全当中提到的补全一行需要按<C-X><C-L>,如果你觉得麻烦,你可以定义
:inoremap <C-L><C-X><C-L>
减少击键次数。同样,对<C-X><C-F>也可以作类似定义。

4.7 其它命令

:!命令行 执行一条外部命令
. 在光标当前位置处重复上一次操作
i<C-V>后续字符 输入特殊的 ASCII字符或键。除了插入模式外,也适用于命令行。后续字符可以是键盘上的任意键,也可以是三位的十进制数字表示字符的 ASCII 码
i<C-O>命令执行一个普通模式的命令,执行完毕后回到插入模式
<C-W>i 跳转到光标所指标识符的定义行。比如你在编程时遇到一个函数CreateWindow,想看它的定义语句,你就可以在它上面按<C-W>i,VIM将打开新窗口,把光标移到它定义的地方。当然,前提是在当前文件或它的 #include 文件中存在 CreateWindow的定义。这也牵涉到 path 的设置。不过,VIM 找得不一定很准
K 看光标所指标识符的 man 帮助页
i<C-Y> 把上一行对应列的字符抄下来
i<C-E> 把下一行对应列的字符抄上来(写这一行时我就用了<C-Y>)
<C-A> 光标所指整数加一
<C-X> 光标所指整数减一
<C-O> 光标返回到以前的位置。相当于光标移动的“撤销”
<C-I> 光标返回到后来的位置。相当于光标移动的“恢复”
<C-V>进入可视模式,选取一个矩形区域。该命令通常用于对多行进行列操作。接着按 I 可以在块前的每一行同时插入字符;按 A可以在块后的每一行同时插入字符;按 x、d 或 y 可以剪切或复制;等等 
:X 对当前文件加密

5. VIM 6.0 的一些新特性
2001 年 9 月 26 日发布的 VIM 6.0 增加了一些以往没有的新特性。下面仅仅是一些简单的介绍,更详细的描述请自己看:help 。

打开目录
在 VIM 6.0 中,:new 和 :split等命令不但可以打开普通文件,还可以打开目录。一个目录打开以后将列出里面的文件信息,可以按回车继续打开相应的文件或者子目录,也可以按 ?得到其它目录操作(修改文件名,删除文件等)的帮助。

折叠
当一个文本太长而你又对其中很长一大段内容不关心的话,可以把你不关心的那些行折叠起来,让它们从你的视线中消失。被折叠的行将以一行显示代替,例如:
+--217 行:<b>2. VIM的定制</b>---------------------
折叠可以有多种方式控制,可以通过设置 foldmethod 选项的值来改变。默认情况下 foldmethod=manual为手工折叠。下面介绍几个使用折叠的最简单的命令:

(可视模式下) zf 手工创建折叠。在可视模式下选择一段文本,然后按 zf 可以手工创建一个折叠
方向键左或右 打开折叠。普通或插入模式下,在折叠行上横向移动光标将打开被折叠的行
zc 关闭折叠


垂直切分窗口

:vsplit 文件名 垂直切分窗口。跟 :split 命令相似,但新窗口与原窗口左右并列。


更多的正规表达式
VIM 6.0 比以前增加了许多新的正规表达式,其中我认为最有用的是换行匹配符\n。以前的版本中,正规表达式只能在同一行上匹配。现在,只要显式地给出 \n,正规表达式可以跨多行。

diff 模式
专门用于比较编辑两个或多个内容相近的文件的模式。一般来说,比如你要比较编辑 A 跟 B 两个文件,你可以命令行启动 vim -d AB 或者这样:先打开文件 A,然后 :vsplit 打开文件 B,对文件 A 和 B 都输入命令 :diffthis。这时 VIM将非常清晰的对比显示出两个文件的不同之处,编辑起来十分方便。

仔细一看,这个 diff 模式动用了 VIM 许许多多的特性,包括卷动绑定,折叠和语法变色等等。好高级啊!

我所熟悉的 VIM 的功能已经介绍得差不多,剩下的要靠你自己来学习了。其实,VIM 的功能还有很多很多。还是那句话,多看:help ,多试。VIM 的帮助还是挺容易看的,相信你看了以后会有更多的惊喜。另外,VIM的主页上有不少有用的技巧提示,也是一个很好的去处。如果你有什么心得或者新发现,欢迎跟我讨论。