第1章
1.1.vim的进入和退出(q!)
- 按键(这是为了确保您处在正常模式)。
- 然后输入: :q! <回车> 这种方式的退出编辑器会丢弃您进入编辑器以来所做的改动。
- 如果您看到了命令行提示符,请输入能够带您回到本教程的命令,那就是: vimtutor <回车>
- 如果您自信已经牢牢记住了这些步骤的话,请从步骤1执行到步骤3退出,然 后再次进入编辑器。 提示: :q! <回车> 会丢弃您所做的任何改动。学习玩之后将学会如何保存改动到文件>。
1.2.文本编辑的删除(x)
-
请将光标移动到本节中下面标记有 ---> 的那一行。
-
为了修正输入错误,请将光标移至准备删除的字符的位置处。
-
然后按下 x 键将错误字符删除掉。
-
重复步骤2到步骤4,直到句子修正为止。
1.3.文本的编辑插入(i)
-
请将光标移动到本节中下面标记有 ---> 的第一行。
-
为了使得第一行内容雷同于第二行,请将光标移至文本第一个准备插入字符 的位置。
-
然后按下 i 键,接着输入必要的文本字符。
-
每个错误修正完毕后,请按下 键返回正常模式。 重复步骤2至步骤4以便修正句子。
---> There is text misng this . ---> There is some text missing from this line.
1.4.文本编辑添加命令(A)
-
移动光标到下面第一个标记有 ---> 的一行。 光标放在那一行的哪个字符上并不重要。
-
按 A 键输入必要的添加内容。
-
文本添加完毕后,按 键回到正常模式。
-
移动光标到下面第二个标记有 ---> 的一行。重复步骤2和步骤3以改正这个句子。
---> There is some text missing from th
There is some text missing from this line.
---> There is also some text miss
There is also some text missing here.
这个指令跟上一个i有差不过的功能,都是要先进入编辑模式。
1.5.使用wq保存文件并推出(wq)
1.可以访问另一个终端,请在那里执行以下操作。
-
在 shell 的提示符下输入命令: vim tutor <回车> 'vim'是启动 Vim 编辑器的命令,'tutor'是您希望编辑的文件的名字。 请使用一个可以改动的文件。
-
使用您在前面的教程中学到的命令插入删除文本。
-
保存改动过的文件并退出 Vim,按这些键: :wq <回车>
用wq或者是q!时都要进去末行模式
第一讲小结
欲进入 Vim 编辑器(从命令行提示符),请输入:vim 文件名 <回车>
-
欲退出 Vim 编辑器,请输入 :q! <回车> 放弃所有改动。 或者输入 :wq <回车> 保存改动。
-
在正常模式下删除光标所在位置的字符,请按: x
-
欲插入或添加文本,请输入:
i 输入欲插入文本 <ESC> 在光标前插入文本 A 输入欲添加文本 <ESC> 在一行后添加文本
特别提示:按下 键会带您回到正常模式或者撤消一个不想输入或部分完整 的命令。
第2章
2.1删除类命令(dw)
输入 dw 可以从光标处删除至一个单词的末尾。
-
请按下 键确保您处于正常模式。
-
请将光标移动到本节中下面标记有 ---> 的那一行。
-
请将光标移至准备要删除的单词的起始处。
-
接着输入 dw 删除掉该单词。
特别提示:当您输入时,字母 d 会同时出现在屏幕的最后一行。Vim 在等待您输入 字母 w。如果您看到的是除 d 外的其他字符,那表明您按错了;请按下 键, 然后重新再来。
---> There are a some words fun that don't belong paper in this sentence.
dw只删除单词
2.2 删除命令(d$)
-
请按下 键确保您处于正常模式。
-
请将光标移动到本节中下面标记有 ---> 的那一行。
-
请将光标移动到该行的尾部(也就是在第一个点号‘.’后面)。
-
然后输入 d$ 从光标处删至当前行尾部。
---> Somebody typed the end of this line twice. end of this line twice.
d$是删除后面的一整段。
2.3关于删除命令和对象
许多改变文本的命令都由一个操作符和一个动作构成。使用删除操作符 d 的删除命令的格式如下: d motion
其中:
d - 删除操作符。 motion - 操作符的操作对象(在下面列出)。
一个简短的动作列表:
w - 从当前光标当前位置直到下一个单词起始处,不包括它的第一个字符。
e - 从当前光标当前位置直到单词末尾,包括最后一个字符。
$ - 从当前光标当前位置直到当前行末。
因此输入 de 会从当前光标位置删除到单词末尾。
特别提示: 对于勇于探索者,请在正常模式下面仅按代表相应动作的键而不使用操作符,您 将看到光标的移动正如上面的对象列表所代表的一样。
2.4使用计数指定动作(nw,ne)
** 在动作前输入数字会使它重复那么多次。 **
-
移动光标到下面标记有 ---> 的一行的开始。
-
输入 2w 使光标向前移动两个单词。
-
输入 3e 使光标向前移动到第三个单词的末尾。
-
输入 0 (数字零) 移动光标到行首。
-
重复步骤2和步骤3,尝试不同的数字。
2.5通过计数来删除更多
** 使用操作符时输入数字可以使它重复那么多次。 **
上面已经提到过删除操作符和动作的组合,您可以在组合中动作之前插入一个数字以 删除更多: d number(数字) motion
-
移动光标到下面标记有 ---> 的一行中第一个大写字母单词上。
-
输入 d2w 以删除两个大写字母单词。
-
重复步骤1和步骤2,使用不同的数字使得用一个命令就能删除全部相邻的大写字母
---> this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up.
2.6输入dd可删除整行(dd)
鉴于整行删除的高频度,Vi 的设计者决定要简化整行删除操作,您仅需要在同一 行上 击打两次 d 就可以删除掉光标所在的整行了。
-
请将光标移动到本节中下面的短句段落中的第二行。
-
输入 dd 删除该行。
-
然后移动到第四行。
-
接着输入 2dd 删除两行。
---> 1) Roses are red,
---> 2) Mud is fun,
---> 3) Violets are blue,
---> 4) I have a car,
---> 5) Clocks tell time,
---> 6) Sugar is swe
2.7撤销类命令(u)
- 请将光标移动到本节中下面标记有 ---> 的那一行,并将其置于第一个错误 处。
- 输入 x 删除第一个不想保留的字母。
- 然后输入 u 撤消最后执行的(一次)命令。
- 这次要使用 x 修正本行的所有错误。
- 现在输入一个大写的 U ,恢复到该行的原始状态。
- 接着多次输入 u 以撤消 U 以及更前的命令。
- 然后多次输入 CTRL-R (先按下 CTRL 键不放开,接着按 R 键),这样就 可以重做被撤消的命令,也就是撤消掉撤消命令。
2.8第二章小结
-
欲从当前光标删除至下一个单词,请输入:dw
-
欲从当前光标删除至当前行末尾,请输入:d$
-
欲删除整行,请输入:dd
-
欲重复一个动作,请在它前面加上一个数字:2w
-
在正常模式下修改命令的格式是: operator [number] motion 其中: operator - 操作符,代表要做的事情,比如 d 代表删除 [number] - 可以附加的数字,代表动作重复的次数 motion - 动作,代表在所操作的文本上的移动,例如 w 代表单词(word), $ 代表行末等等。
-
欲移动光标到行首,请按数字0键:0
-
欲撤消以前的操作,请输入:u (小写的u) 欲撤消在一行中所做的改动,请输入:U (大写的U) 欲撤消以前的撤消命令,恢复以前的操作结果,请输入:CTRL-R
第3章
3.1 粘贴类命令(p)
-
请将光标移动到本节中下面第一个标记有 ---> 的一行。
-
输入 dd 将该行删除,这样会将该行保存到 Vim 的一个寄存器中。
-
接着将光标移动到 c) 一行,即准备置入的位置的上方。记住:是上方哦。
-
然后在正常模式下(键进入)输入 p 将该行粘贴置入。
-
重复步骤2至步骤4,将所有的行依序放置到正确的位置上。
---> d) Can you learn too?
---> b) Violets are blue,
---> c) Intelligence is learned,
---> a) Roses are red,
3.2替换命令(r)
-
请将光标移动到本节中下面标记有 ---> 的第一行。
-
请移动光标到第一个出错的位置。
-
接着输入 r 和要替换成的字符,这样就能将错误替换掉了。
-
重复步骤2和步骤3,直到第一行已经修改完毕。
---> When this lime was tyyed in, someone presswd some wrong keys!
---> When this line was typed in, someone pressed some wrong keys!
3.3 更改类命令(cw)
-
请将光标移动到本节中下面标记有 ---> 的第一行。
-
接着把光标放在单词 lubw 的字母 u 的位置那里。
-
然后输入 cw 以及正确的单词(在本例中是输入 ine )。
-
最后按 键,然后光标定位到下一个错误第一个准备更改的字母处。
-
重复步骤3和步骤4,直到第一个句子完全雷同第二个句子。
---> This lubw has a few wptfd that mrrf changing usf the change operator. ---> This line has a few words that need changing using the change operator.
提示:请注意 ce 命令不仅仅是删除了一个单词,它也让您进入插入模式了。
3.4使用c更改更多
-
更改类操作符的工作方式跟删除类是一致的。操作格式是:
c [number] motion
-
动作参数(motion)也是一样的,比如 w 代表单词,$代表行末等等。
-
请将光标移动到本节中下面标记有 ---> 的第一行。
-
接着将光标移动到第一个错误处。
-
然后输入 c$ 使得该行剩下的部分更正得同第二行一样。最后按 键。
---> The end of this line needs some help to make it like the second.
---> The end of this line needs to be corrected using the c$ command.
第3章小结
-
要重新置入已经删除的文本内容,请按小写字母 p 键。该操作可以将已删除 的文本内容置于光标之后。如果最后一次删除的是一个整行,那么该行将置 于当前光标所在行的下一行。
-
要替换光标所在位置的字符,请输入小写的 r 和要替换掉原位置字符的新字 符即可。
-
更改类命令允许您改变从当前光标所在位置直到动作指示的位置中间的文本。 比如输入 ce 可以替换当前光标到单词的末尾的内容;输入 c$ 可以替换当 前光标到行末的内容。
-
更改类命令的格式是:
c [number] motion
第4章
4.1文件定位和查看文件状态(g的用法)
- 按下 CTRL 键不放开然后按 g 键。我们称这个键组合为 CTRL-G。 您会看到页面最底部出现一个状态信息行,显示的内容是当前编辑的文件名 和文件中光标位置。请记住行号,它会在步骤3中用到。
提示:您也许会在屏幕的右下角看到光标位置,这会在 'ruler' 选项设置时发生 (参见 :help 'ruler')
-
输入大写 G 可以使得当前光标直接跳转到文件最后一行。 输入 gg 可以使得当前光标直接跳转到文件第一行。
-
输入您曾停留的行号,然后输入大写 G。这样就可以返回到您第一次按下 CTRL-G 时所在的行了。
4.2 搜索类命令(/)
-
在正常模式下输入 / 字符。您此时会注意到该字符和光标都会出现在屏幕底 部,这跟 : 命令是一样的。
-
接着输入 errroor <回车>。那个errroor就是您要查找的字符串。
-
要查找同上一次的字符串,只需要按 n 键。要向相反方向查找同上一次的字 符串,请输入大写 N 即可。
-
如果您想逆向查找字符串,请使用 ? 代替 / 进行。
-
要回到您之前的位置按 CTRL-O (按住 Ctrl 键不放同时按下字母 o)。重复按可以 回退更多步。CTRL-I 会跳转到较新的位置。
---> "errroor" is not the way to spell error; errroor is an error. 提示:如果查找已经到达文件末尾,查找会自动从文件头部继续查找,除非 'wrapscan' 选项被复位。
4.3配对括号的查找(%)
-
把光标放在本节下面标记有 --> 那一行中的任何一个 (、[ 或 { 处。
-
接着按 % 字符。
-
此时光标的位置应当是在配对的括号处。
-
再次按 % 就可以跳回配对的第一个括号处。
-
移动光标到另一个 (、)、[、]、{ 或 } 处,按 % 查看其所作所为。
---> This ( is a test line with ('s, ['s ] and {'s } in it. ))
4.4 替换命令(:s/需要替换的内容/替换的内容/g)
-
请将光标移动到本节中下面标记有 ---> 的那一行。
-
输入 :s/thee/the <回车> 。请注意该命令只改变光标所在行的第一个匹配 串。
-
输入 :s/thee/the/g 则是替换全行的匹配串,该行中所有的 "thee" 都会被 改变。
---> thee best time to see thee flowers is in thee spring.
- 要替换两行之间出现的每个匹配串,请
输入 :#,#s/old/new/g 其中 #,# 代表的是替换操作的若干行中 首尾两行的行号。
输入 :%s/old/new/g 则是替换整个文件中的每个匹配串。
输入 :%s/old/new/gc 会找到整个文件中的每个匹配串,并且对每个匹配串 提示是否进行替换。
第4结小结
-
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
第5章
5.1在vim内执行外部命令的方法(!)
-
按下我们所熟悉的 : 命令使光标移动到屏幕底部。这样您就可以输入一行命令了>。
-
接着输入感叹号 ! 这个字符,这样就允许您执行外部的 shell 命令了。
-
我们以 ls 命令为例。输入 !ls <回车> 。该命令就会列举出您当前目录的 内容,就如同您在命令行提示符下输入 ls 命令的结果一样。如果 !ls 没起 作用,您可以试试 :!dir 看看。
提示:所有的外部命令都可以以这种方式执行,包括带命令行参数的那些。
提示:所有的 : 命令都必须以敲 <回车> 键结束。从今以后我们就不会总是提到这一点了。
5.2保存文件的更多信息(w)
-
输入 :!dir 或者 :!ls 获知当前目录的内容。您应当已知道最后还得敲 <回车> 吧。
-
选择一个未被用到的文件名,比如 TEST。
-
接着输入 :w TEST (此处 TEST 是您所选择的文件名。)
-
该命令会以 TEST 为文件名保存整个文件 (Vim 教程)。为了验证这一点, 请再次输入 :!dir 或 :!ls 查看您的目录列表内容。
请注意:如果您退出 Vim 然后在以命令 vim TEST 再次启动 Vim,那么该文件内 容应该同您保存时的文件内容是完全一样的。
- 现在您可以删除 TEST 文件了。在 MS-DOS 下,请输入: :!del TEST 在 Unix 下,请输入: :!rm TEST
5.3一个具有选择性的保存命令(v,w)
-
移动光标到本行。
-
接着按 v 键,将光标移动至下面第五个条目上。您会注意到之间的文本被高亮了>。
-
然后按 : 字符。您将看到屏幕底部会出现 :'<,'> 。
-
现在请输入 w TEST,其中 TEST 是一个未被使用的文件名。确认您看到了 :'<,'>w TEST 之后按 <回车> 键。
-
这时 Vim 会把选中的行写入到以 TEST 命名的文件中去。使用 :!dir 或 :!ls 确认文件被正确保存。这次先别删除它!我们在下一讲中会用到它。
提示:按 v 键使 Vim 进入可视模式进行选取。您可以四处移动光标使选取区域变大或 变小。接着您可以使用一个操作符对选中文本进行操作。例如,按 d 键会删除 选中的文本内容。
5.4提取和合并文件(r)
- 请把光标移动到本行上面一行。
特别提示:执行步骤2之后您将看到第五讲第三节的文字,请届时往下移动 以再次看到本讲内容。
-
接着通过命令 :r TEST 将前面创建的名为 TEST 的文件提取进来。 您所提取进来的文件将从光标所在位置处开始置入。
-
为了确认文件已经提取成功,移动光标回到原来的位置就可以注意有两份第 五讲第三节的内容,一份是原始内容,另外一份是来自文件的副本。
提示:您还可以读取外部命令的输出。例如, :r !ls 可以读取 ls 命令的输出,并 把它放置在光标下面。
第五章小结
-
:!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 命令的输出并将其放置到当前文件的光标位置后面。
第6章
6.1打开类命令(o)
-
请将光标移动到本节中下面标记有 ---> 的那一行。
-
接着输入小写的 o 在光标 下方 打开新的一行,这个命令会使您 进入插入模式。
-
然后输入一些文字,之后按 键退出插入模式而进入正常模式。
---> After typing o the cursor is placed on the open line in Insert mode.
- 为了在光标 上方 打开新的一行,只需要输入大写的 O 而不是小写的 o 就可以了。请在下行测试一下吧。
---> Open up a line above this by typing O while the cursor is on this line.
6.2附加类命令(a)
-
请在正常模式下将光标移动到本节中下面标记有 ---> 的第一行的行首。
-
接着输入 e 直到光标位于 li 的末尾。
-
输入小写的 a 则可在光标之后插入文本了。
-
将单词补充完整,就像下一行中的那样。之后按 键退出插入模式回到 正常模式。
-
使用 e 移动光标到下一步不完整的单词,重复步骤3和步骤4。
---> This li will allow you to pract appendi text to a line.
---> This line will allow you to practice appending text to a line.
提示:a、i 和 A 都会带您进入插入模式,惟一的区别在于字符插入的位置。
6.3 另一个置换类命令的版本(R)
-
请将光标移动到本节中下面标记有 ---> 的第一行。移动光标到第一个 xxx 的 起始位置。
-
然后输入大写的 R 开始把第一行中的不同于第二行的剩余字符逐一输入,就 可以全部替换掉原有的字符而使得第一行完全雷同第二行了。
-
接着按 键退出替换模式回到正常模式。您可以注意到尚未替换的文本 仍然保持原状。
-
重复以上步骤,将剩余的 xxx 也替换掉。
---> Adding 123 to xxx gives you xxx.
---> Adding 123 to 456 gives you 579.
提示:替换模式与插入模式相似,不过每个输入的字符都会删除一个已有的字符。
6.4 复制粘贴文本
-
定位到下面标记有 ---> 的一行,将光标移动到 "a)" 之后。
-
接着使用 v 进入可视模式,移动光标到 "first" 的前面。
-
现在输入 y 以抽出(复制)高亮的文本。
-
然后移动光标到下一行的末尾:j$
-
接着输入 p 以放置(粘贴)复制了的文本。然后输入:a second 。
-
使用可视模式选中 " item.",用 y 复制,再用 j$ 将光标移动到下一行末尾, 用 p 将文本粘贴到那里。
---> a) this is the first item. b)
提示:您还可以把 y 当作操作符来使用;例如 yw 可以用来复制一个单词。
6.5 设置类命令的选项
-
要查找单词 ignore 可在正常模式下输入 /ignore <回车>。 要重复查找该词,可以重复按 n 键。
-
然后设置 ic 选项(Ignore Case,忽略大小写),请输入: :set ic
-
现在可以通过键入 n 键再次查找单词 ignore。注意到 Ignore 和 IGNORE 现在 也被找到了。
-
然后设置 hlsearch 和 incsearch 这两个选项,请输入: :set hls is
-
现在可以再次输入查找命令,看看会有什么效果: /ignore <回车>
-
要禁用忽略大小写,请输入: :set noic
提示:要移除匹配项的高亮显示,请输入: :nohlsearch 提示:如果您想要仅在一次查找时忽略字母大小写,您可以使用 \c: /ignore\c <回车>
第6章小结
-
输入小写的 o 可以在光标下方打开新的一行并进入插入模式。 输入大写的 O 可以在光标上方打开新的一行。
-
输入小写的 a 可以在光标所在位置之后插入文本。 输入大写的 A 可以在光标所在行的行末之后插入文本。
-
e 命令可以使光标移动到单词末尾。
-
操作符 y 复制文本,p 粘贴先前复制的文本。
-
输入大写的 R 将进入替换模式,直至按 键回到正常模式。
-
输入 :set xxx 可以设置 xxx 选项。一些有用的选项如下:
'ic' 'ignorecase' 查找时忽略字母大小写
'is' 'incsearch' 查找短语时显示部分匹配
'hls' 'hlsearch' 高亮显示所有的匹配短语 选项名可以用完整版本,也可以用缩略版本。
-
在选项前加上 no 可以关闭选项: :set noic
第7章
7.1 获取帮助信息
Vim 拥有一个细致全面的在线帮助系统。要启动该帮助系统,请选择如下三种方 法之一:
- 按下 <HELP> 键 (如果键盘上有的话)
- 按下 <F1> 键 (如果键盘上有的话)
- 输入 :help <回车>
请阅读帮助窗口中的文字以了解帮助是如何工作的。 输入 CTRL-W CTRL-W 可以使您在窗口之间跳转。 输入 :q <回车> 可以关闭帮助窗口。
提供一个正确的参数给":help"命令,您可以找到关于该主题的帮助。请试验以 下参数(可别忘了按回车键哦):
:help w
:help c_CTRL-D
:help insert-index
:help user-manual
7.2创建启动脚本
Vim 的功能特性要比 Vi 多得多,但其中大部分都没有缺省启用。为了使用更多的 特性,您得创建一个 vimrc 文件。
-
开始编辑 vimrc 文件,具体命令取决于您所使用的操作系统: :edit ~/.vimrc 这是 Unix 系统所使用的命令 :edit $VIM/_vimrc 这是 MS-Windows 系统所使用的命令
-
接着读取 vimrc 示例文件的内容: :r $VIMRUNTIME/vimrc_example.vim
-
保存文件,命令为: :write
下次启动 Vim 时,编辑器就会有了语法高亮的功能。 您可以把您喜欢的各种设置添加到这个 vimrc 文件中。 要了解更多信息请输入 :help vimrc-intro
7.3 补全功能(ctrl-d,tab)
-
请确保 Vim 不是在以兼容模式运行: :set nocp
-
查看一下当前目录下已经存在哪些文件,输入: :!ls 或者 :!dir
-
现在输入一个目录的起始部分,例如输入: :e
-
接着按 CTRL-D 键,Vim 会显示以 e 开始的命令的列表。
-
然后按 键,Vim 会补全命令为 :edit 。
-
现在添加一个空格,以及一个已有文件的文件名的起始部分,例如: :edit FIL
-
接着按 键,Vim 会补全文件名(如果它是惟一匹配的)。
提示:补全对于许多命令都有效。您只需尝试按 CTRL-D 和 。 它对于 :help 命令非常有用。
第7章小结
-
输入 :help 或者按 键或 键可以打开帮助窗口。
-
输入 :help cmd 可以找到关于 cmd 命令的帮助。
-
输入 CTRL-W CTRL-W 可以使您在窗口之间跳转。
-
输入 :q 以关闭帮助窗口
-
您可以创建一个 vimrc 启动脚本文件用来保存您偏好的设置。
-
当输入 : 命令时,按 CTRL-D 可以查看可能的补全结果。 按 可以使用一个补全。