细述
移动光标
^
k 提示: h 的键位于左边,每次按下就会向左移动。
< h l > l 的键位于右边,每次按下就会向右移动。
j j 键看起来很象一支尖端方向朝下的箭头。
v
进入、退出和保存
vim 文件名
:进入编辑器
:q!
:退出编辑器,丢弃改动
:wq
:保存(write)文件并退出(quit)
:w FileName
:修改文件名的保存
v motion :w FileName
:要保存文件的部分内容
- 移动光标到本行。
- 接着按
v
键,将光标移动至下面第五个条目上。您会注意到之间的文本被高亮了。 - 然后按
:
字符。您将看到屏幕底部会出现:'<,'>
。 - 现在请输入
w TEST
,其中 TEST 是一个未被使用的文件名。确认您看到了:'<,'>w TEST
之后按 [回车] 键。 - 这时 Vim 会把选中的行写入到以 TEST 命名的文件中去。使用
:!dir
或:!ls
确认文件被正确保存。
提示:按 v
键使 Vim 进入可视模式进行选取。您可以四处移动光标使选取区域变大或变小。接着您可以使用一个操作符对选中文本进行操作。例如,按 d
键会删除选中的文本内容。
提取和合并文件
要向当前文件中插入另外的文件的内容,请输入 :r FILENAME
- 请把光标移动到本行上面一行。 特别提示:执行步骤2之后您将看到第五讲第三节的文字,请届时往下移动以再次看到本讲内容。
- 接着通过命令
:r TEST
将前面创建的名为 TEST 的文件提取进来。您所提取进来的文件将从光标所在位置处开始置入。 - 为了确认文件已经提取成功,移动光标回到原来的位置就可以注意有两份第五讲第三节的内容,一份是原始内容,另外一份是来自文件的副本。
提示:您还可以读取外部命令的输出。例如,:r !ls
可以读取 ls
命令的输出,并把它放置在光标下面。
编辑文本
按下 x
键来删除光标所在位置的字符
按下 i
在光标处开始插入文本(原内容后移)
按 A(Shift+a)
键,在行尾添加文本
打开类命令
输入o
将在光标下方(行内位置无关紧要)打开新的一行,并进入插入模式
输入大写O
在光标上方打开
附加类命令
输入a
将在光标之后插入文本
删除类命令
dw
:从光标处删除至一个单词的末尾(word后的空格也被删除),标点算一个单词,
d$
:从当前光标删除到行末
dd
:删除整行 2dd
:删除两行
撤销类命令
输入 u
来撤消最后执行的命令,输入 U
来撤消对整行的修改。
多次输入 CTRL-R
(先按下 CTRL 键不放开,接着按 R 键),这样就可以重做被撤消的命令,也就是撤消掉撤消命令。
置入类命令
输入 p
将最后一次删除的内容置入光标之后,对 x
生效。(paste ?)
会将 dd
删除的一行,置入光标的下一行
替换类命令
输入 r
和一个字符替换光标所在位置的字符(replace)
输入 R
可以连续替换多个字符
更改类命令
ce
:改变文本直到一个单词的末尾(ce
命令不仅仅删除了一个单词,也进入了插入模式)
c [number] motion
:motion 动作参数与删除类一致
复制粘贴文本
y
复制文本p
粘贴文本(yank)
可以把 y
当作操作符来使用;例如 yw
可以用来复制一个单词
关于命令和对象
许多改变文本的命令都由一个操作符和一个动作构成。使用删除操作符 d 的删除命令的格式如下:
d(操作符) motion(动作)
其中:
d
- 删除操作符
motion
- 操作符的操作对象(在下面列出)
一个简短的动作列表:
w
- 从当前光标当前位置直到下一个单词起始处,不包括它的第一个字符
e
- 从当前光标当前位置直到单词末尾,包括最后一个字符
$
- 从当前光标当前位置直到当前行末
因此输入 de
会从当前光标位置删除到单词末尾
特别提示: 对于勇于探索者,请在正常模式下面仅按代表相应动作的键而不使用操作符,您将看到光标的移动正如上面的对象列表所代表的一样。
使用计数指定动作
在动作前输入数字,会使它重复那么多次。
使用操作符时输入数字可以使它重复那么多次:d number motion
- 输入
2w
使光标向前移动两个单词。 - 输入
3e
使光标向前移动到第三个单词的末尾。 - 输入
0
(数字零) 移动光标到行首。
定位及文件状态
Ctrl-g
:显示当前编辑文件中光标所在行位置及文件状态信息
G
:光标跳转到文件最后一行
gg
:光标跳转到文件第一行
numG
:返回按下Ctrl-g
时所在的行
搜索类命令
/字符串
:在当前文件中查找该字符串
n
:查找与上一次相同的字符串
N
:反方向查找
?字符串
:逆向查找字符串
Ctrl-O
:回到之前的位置,重复按可以回退更多步
Ctrl-I
:跳转到较新的位置
%
:可以查找配对的括号)]}
,再按就跳回配对的第一个括号处
替换命令
:s/old/new [Enter]
:只改变光标所在行的第一个匹配串
:s/old/new/g [Enter]
:替换全行的匹配串
:#,#s/old/new/g
:#,#
代表替换操作的若干行的首位两行的行号
:%s/old/new/g
:替换整个文件中的每个匹配串
:%s/old/new/gc
:找到整个文件中的每个匹配串,并对每个串提示是否进行替换
VIM内执行外部命令
:![外部命令]
::!ls
、:!dir
所有的外部命令都可以以这种方式执行,包括带命令行参数的那些
所有的 :
命令都必须以敲 [回车]
键结束
设置类命令的选项
设置可使查找或者替换可忽略大小写的选项
- 要查找单词 ignore 可在正常模式下输入
/ignore [回车]
。 要重复查找该词,可以重复按n
键。 - 然后设置 ic 选项(Ignore Case,忽略大小写),请输入:
:set ic
- 现在可以通过键入
n
键再次查找单词 ignore。注意到 Ignore 和 IGNORE 现在也被找到了。 - 然后设置 hlsearch 和 incsearch 这两个选项,请输入:
:set hls is
- 现在可以再次输入查找命令,看看会有什么效果:
/ignore [回车]
- 要禁用忽略大小写,请输入:
:set noic
提示:要移除匹配项的高亮显示,请输入: :nohlsearch
提示:如果您想要仅在一次查找时忽略字母大小写,您可以使用 \c
:/ignore\c [回车]
使用在线帮助系统
Vim 拥有一个细致全面的在线帮助系统。要启动该帮助系统,请选择如下三种方法之一:
- 按下
[HELP]
键 (如果键盘上有的话) - 按下
[F1]
键 (如果键盘上有的话) - 输入
:help [回车]
请阅读帮助窗口中的文字以了解帮助是如何工作的。
输入 CTRL-W CTRL-W
(连输两个哦) 可以使您在窗口之间跳转。
输入 :q [回车]
可以关闭帮助窗口。
提供一个正确的参数给:help
命令,您可以找到关于该主题的帮助。请试验以下参数(可别忘了按回车键哦):
:help w
:help c_CTRL-D
:help insert-index
:help user-manual
创建启动脚本
Vim 的功能特性要比 Vi 多得多,但其中大部分都没有缺省启用。为了使用更多的 特性,您得创建一个 vimrc 文件。
- 开始编辑 vimrc 文件,具体命令取决于您所使用的操作系统:
:edit ~/.vimrc
这是 Unix 系统所使用的命令:edit $VIM/_vimrc
这是 MS-Windows 系统所使用的命令 - 接着读取 vimrc 示例文件的内容:
:r $VIMRUNTIME/vimrc_example.vim
- 保存文件,命令为:
:write
下次您启动 Vim 时,编辑器就会有了语法高亮的功能。
您可以把您喜欢的各种设置添加到这个 vimrc 文件中。
要了解更多信息请输入 :help vimrc-intro
补全功能
使用 CTRL-D
和 [TAB]
可以进行命令行补全
- 请确保 Vim 不是在以兼容模式运行:
:set nocp
- 查看一下当前目录下已经存在哪些文件,输入:
:!ls
或者:!dir
- 现在输入一个目录的起始部分,例如输入:
:e
- 接着按
CTRL-D
键,Vim 会显示以 e 开始的命令的列表。 - 然后按
[TAB]
键,Vim 会补全命令为:edit
。 - 现在添加一个空格,以及一个已有文件的文件名的起始部分,例如:
:edit FIL
- 接着按
[TAB]
键,Vim 会补全文件名(如果它是惟一匹配的)。
提示:补全对于许多命令都有效。您只需尝试按 CTRL-D
和 [TAB]
。
它对于 :help
命令非常有用。
vimtutor zh
第一讲小结
- 光标在屏幕文本中的移动既可以用
箭头键
,也可以使用hjkl
字母键。h
(左移)j
(下行)k
(上行)l
(右移) - 欲进入 Vim 编辑器(从命令行提示符),请输入:
vim 文件名 回车
- 欲退出 Vim 编辑器,请输入
ESC :q! 回车
放弃所有改动。 或者输入ESC :wq 回车
保存改动。 - 在正常模式下删除光标所在位置的字符,请按:
x
- 欲插入或添加文本,请输入:
i
输入欲插入文本ESC
在光标前插入文本A
输入欲添加文本ESC
在一行后添加文本
特别提示:按下 ESC
键会带您回到正常模式或者撤消一个不想输入或部分完整
的命令。
第二讲小结
- 欲从当前光标删除至下一个单词,请输入:
dw
- 欲从当前光标删除至当前行末尾,请输入:
d$
- 欲删除整行,请输入:
dd
- 欲重复一个动作,请在它前面加上一个数字:
2w
- 在正常模式下修改命令的格式是:
operator [number] motion
其中:
operator
- 操作符,代表要做的事情,比如 d 代表删除
[number]
- 可以附加的数字,代表动作重复的次数
motion
- 动作,代表在所操作的文本上的移动,例如 w
代表单词(word),$
代表行末等等。
6. 欲移动光标到行首,请按数字0键:0
7. 欲撤消以前的操作,请输入:u
(小写的u)
欲撤消在一行中所做的改动,请输入:U
(大写的U)
欲撤消以前的撤消命令,恢复以前的操作结果,请输入:CTRL-R
第三讲小结
- 要重新置入已经删除的文本内容,请按小写字母
p
键。该操作可以将已删除的文本内容置于光标之后。如果最后一次删除的是一个整行,那么该行将置于当前光标所在行的下一行。 - 要替换光标所在位置的字符,请输入小写的
r
和要替换掉原位置字符的新字符即可。 - 更改类命令允许您改变从当前光标所在位置直到动作指示的位置中间的文本。
比如输入
ce
可以替换当前光标到单词的末尾的内容;输入c$
可以替换当前光标到行末的内容。 - 更改类命令的格式是:
c [number] motion
第四讲小结
CTRL-G
用于显示当前光标所在位置和文件状态信息。G
用于将光标跳转至文件最后一行。 先敲入一个行号然后输入大写G
则是将光标移动至该行号代表的行。gg
用于将光标跳转至文件第一行。- 输入
/
然后紧随一个字符串是在当前所编辑的文档中正向查找该字符串。 输入?
然后紧随一个字符串则是在当前所编辑的文档中反向查找该字符串。 完成一次查找之后按n
键是重复上一次的命令,可在同一方向上查找下一个匹配字符串所在;或者按大写N
向相反方向查找下一匹配字符串所在。CTRL-O
带您跳转回较旧的位置,CTRL-I
则带您到较新的位置。 - 如果光标当前位置是括号(、)、[、]、{、},按
%
会将光标移动到配对的括号上。 - 在一行内替换头一个字符串 old 为新的字符串 new,请输入
:s/old/new
在一行内替换所有的字符串 old 为新的字符串 new,请输入:s/old/new/g
在两行内替换所有的字符串 old 为新的字符串 new,请输入:#,#s/old/new/g
在文件内替换所有的字符串 old 为新的字符串 new,请输入:%s/old/new/g
进行全文替换时询问用户确认每个替换需添加c
标志:%s/old/new/gc
第五讲小结
:!command
用于执行一个外部命令command
。 请看一些实际例子: (MS-DOS) (Unix):!dir
:!ls
- 用于显示当前目录的内容。:!del FILENAME
:!rm FILENAME
- 用于删除名为 FILENAME 的文件。:w FILENAME
可将当前 VIM 中正在编辑的文件保存到名为 FILENAME 的文件中。v motion :w FILENAME
可将当前编辑文件中可视模式下选中的内容保存到文件 FILENAME 中。:r FILENAME
可提取磁盘文件 FILENAME 并将其插入到当前文件的光标位置后面。:r !dir
可以读取dir
命令的输出并将其放置到当前文件的光标位置后面。
第六讲小结
- 输入小写的
o
可以在光标下方打开新的一行并进入插入模式。 输入大写的O
可以在光标上方打开新的一行。 - 输入小写的
a
可以在光标所在位置之后插入文本。 输入大写的A
可以在光标所在行的行末之后插入文本。 e
命令可以使光标移动到单词末尾。- 操作符
y
复制文本,p
粘贴先前复制的文本。 - 输入大写的
R
将进入替换模式,直至按[ESC]
键回到正常模式。 - 输入
:set xxx
可以设置 xxx 选项。一些有用的选项如下:'ic' 'ignorecase'
查找时忽略字母大小写'is' 'incsearch'
查找短语时显示部分匹配'hls' 'hlsearch'
高亮显示所有的匹配短语 选项名可以用完整版本,也可以用缩略版本。 - 在选项前加上 no 可以关闭选项:
:set noic
第七讲小结
- 输入
:help
或者按[F1]
键或[Help]
键可以打开帮助窗口。 - 输入
:help cmd
可以找到关于 cmd 命令的帮助。 - 输入
CTRL-W CTRL-W
可以使您在窗口之间跳转。 - 输入
:q
以关闭帮助窗口 - 您可以创建一个 vimrc 启动脚本文件用来保存您偏好的设置。
- 当输入
:
命令时,按CTRL-D
可以查看可能的补全结果。 按[TAB]
可以使用一个补全。