===============================================================================

= 欢 迎 阅 读 《 V I M 教 程 》 —— 版本 1.7 =

 Vim 是一个具有很多命令的功能非常强大的编辑器。限于篇幅,在本教程当中
就不详细介绍了。本教程的设计目标是讲述一些必要的基本命令,而掌握好这
些命令,您就能够很容易地将 Vim 当作一个通用编辑器来使用了。 完成本教程的内容大约需要25-30分钟,取决于您训练的时间。 注意:
每一节的命令操作将会更改本文。推荐您复制本文的一个副本,然后在副本上
进行训练(如果您是通过"vimtutor"来启动教程的,那么本文就已经是副本了)。 切记一点:本教程的设计思路是在使用中进行学习的。也就是说,您需要通过
执行命令来学习它们本身的正确用法。如果您只是阅读而不操作,那么您可能
会很快遗忘这些命令的! 好了,现在请确定您的Shift-Lock(大小写锁定键)还没有按下,然后按键盘上
的字母键 j 足够多次来移动光标,直到第一节的内容能够完全充满屏幕。
			第一讲第一节:移动光标

	     ** 要移动光标,请依照说明分别按下 h、j、k、l 键。 **

	     ^
k 提示: h 的键位于左边,每次按下就会向左移动。
< h l > l 的键位于右边,每次按下就会向右移动。
j j 键看起来很象一支尖端方向朝下的箭头。
v 1. 请随意在屏幕内移动光标,直至您觉得舒服为止。 2. 按下下行键(j),直到出现光标重复下行。 ---> 现在您应该已经学会如何移动到下一讲吧。 3. 现在请使用下行键,将光标移动到第一讲第二节。 提示:如果您不敢确定您所按下的字母,请按下<ESC>键回到正常(Normal)模式。
然后再次从键盘输入您想要的命令。 提示:光标键应当也能正常工作的。但是使用hjkl键,在习惯之后您就能够更快
地在屏幕内四处移动光标。真的是这样!
		第一讲第二节:VIM的进入和退出

!! 特别提示:敬请阅读本一节的完整内容,然后再执行以下所讲解的命令。

  1. 按键(这是为了确保您处在正常模式)。

  2. 然后输入: :q! <回车>

    这种方式的退出编辑器会丢弃您进入编辑器以来所做的改动。

  3. 如果您看到了命令行提示符,请输入能够带您回到本教程的命令,那就是:

    vimtutor <回车>

  4. 如果您自信已经牢牢记住了这些步骤的话,请从步骤1执行到步骤3退出,然

    后再次进入编辑器。

提示: :q! <回车> 会丢弃您所做的任何改动。几讲之后您将学会如何保存改动到文件。

  1. 将光标下移到第一讲第三节。
			第一讲第三节:文本编辑之删除

   ** 在正常(Normal)模式下,可以按下 x 键来删除光标所在位置的字符。**

  1. 请将光标移动到本节中下面标记有 ---> 的那一行。

  2. 为了修正输入错误,请将光标移至准备删除的字符的位置处。

  3. 然后按下 x 键将错误字符删除掉。

  4. 重复步骤2到步骤4,直到句子修正为止。

---> The ccow jumpedd ovverr thhe mooon.

  5. 好了,该行已经修正了,下面是第一讲第四节。

特别提示:在浏览本教程时,不要强行记忆。记住一点:在使用中学习。

	     第一讲第四节:文本编辑之插入

 ** 在正常模式下,可以按下 i 键来插入文本。**
  1. 请将光标移动到本节中下面标记有 ---> 的第一行。

  2. 为了使得第一行内容雷同于第二行,请将光标移至文本第一个准备插入字符

    的位置。

  3. 然后按下 i 键,接着输入必要的文本字符。

  4. 每个错误修正完毕后,请按下 键返回正常模式。

    重复步骤2至步骤4以便修正句子。

---> There is text misng this .

---> There is some text missing from this line.

  1. 如果您对文本插入操作已经很满意,请接着阅读下面的第一讲第五节。
		     第一讲第五节:文本编辑之添加

			** 按 A 键以添加文本。 **

  1. 移动光标到下面第一个标记有 ---> 的一行。
光标放在那一行的哪个字符上并不重要。 2. 按 A 键输入必要的添加内容。 3. 文本添加完毕后,按 <ESC> 键回到正常模式。 4. 移动光标到下面第二个标记有 ---> 的一行。重复步骤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. 5. 当您对添加文本操作感到满意时,请继续学习第一讲第六节。
	     第一讲第六节:编辑文件

	    ** 使用 :wq 以保存文件并退出。 **

特别提示:在执行以下步骤之前,请先读完整个小节!

  1. 如您在第一讲第二节中所做的那样退出本教程: :q!

    或者,如果您可以访问另一个终端,请在那里执行以下操作。

  2. 在 shell 的提示符下输入命令: vim tutor <回车>

    'vim'是启动 Vim 编辑器的命令,'tutor'是您希望编辑的文件的名字。

    请使用一个可以改动的文件。

  3. 使用您在前面的教程中学到的命令插入删除文本。

  4. 保存改动过的文件并退出 Vim,按这些键: :wq <回车>

  5. 如果您在步骤1中已经退出 vimtutor,请重启 vimtutor 移动到下面的小结一节。

  6. 阅读完以上步骤,弄懂它们的意义,然后在实践中进行练习。

			       第一讲小结

  1. 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键。
h (左移) j (下行) k (上行) l (右移) 2. 欲进入 Vim 编辑器(从命令行提示符),请输入:vim 文件名 <回车> 3. 欲退出 Vim 编辑器,请输入 <ESC> :q! <回车> 放弃所有改动。
或者输入 <ESC> :wq <回车> 保存改动。 4. 在正常模式下删除光标所在位置的字符,请按: x 5. 欲插入或添加文本,请输入: i 输入欲插入文本 <ESC> 在光标前插入文本
A 输入欲添加文本 <ESC> 在一行后添加文本 特别提示:按下 <ESC> 键会带您回到正常模式或者撤消一个不想输入或部分完整
的命令。 好了,第一讲到此结束。下面接下来继续第二讲的内容。
		第二讲第一节:删除类命令

    ** 输入 dw 可以从光标处删除至一个单词的末尾。**
  1. 请按下 键确保您处于正常模式。

  2. 请将光标移动到本节中下面标记有 ---> 的那一行。

  3. 请将光标移至准备要删除的单词的起始处。

  4. 接着输入 dw 删除掉该单词。

特别提示:当您输入时,字母 d 会同时出现在屏幕的最后一行。Vim 在等待您输入

字母 w。如果您看到的是除 d 外的其他字符,那表明您按错了;请按下 键,

然后重新再来。

---> There are a some words fun that don't belong paper in this sentence.

  1. 重复步骤3和步骤4,直至句子修正完毕。接着继续第二讲第二节内容。
		      第二讲第二节:更多删除类命令

		   ** 输入 d$ 从当前光标删除到行末。**

  1. 请按下 <ESC> 键确保您处于正常模式。

  2. 请将光标移动到本节中下面标记有 ---> 的那一行。

  3. 请将光标移动到该行的尾部(也就是在第一个点号‘.’后面)。

  4. 然后输入 d$ 从光标处删至当前行尾部。

---> Somebody typed the end of this line twice. end of this line twice.

  5. 请继续学习第二讲第三节就知道是怎么回事了。

	     第二讲第三节:关于命令和对象

许多改变文本的命令都由一个操作符和一个动作构成。

使用删除操作符 d 的删除命令的格式如下:

d   motion

其中:

d - 删除操作符。

motion - 操作符的操作对象(在下面列出)。

一个简短的动作列表:

w - 从当前光标当前位置直到下一个单词起始处,不包括它的第一个字符。

e - 从当前光标当前位置直到单词末尾,包括最后一个字符。

$ - 从当前光标当前位置直到当前行末。

因此输入 de 会从当前光标位置删除到单词末尾。

特别提示:

对于勇于探索者,请在正常模式下面仅按代表相应动作的键而不使用操作符,您

将看到光标的移动正如上面的对象列表所代表的一样。

		     第二讲第四节:使用计数指定动作

             ** 在动作前输入数字会使它重复那么多次。 **

  1. 移动光标到下面标记有 ---> 的一行的开始。

  2. 输入 2w 使光标向前移动两个单词。

  3. 输入 3e 使光标向前移动到第三个单词的末尾。

  4. 输入 0 (数字零) 移动光标到行首。

  5. 重复步骤2和步骤3,尝试不同的数字。

---> This is just a line with words you can move around in.

  6. 请继续学习第二讲第五节。

	       第二讲第五节:使用计数以删除更多

       ** 使用操作符时输入数字可以使它重复那么多次。 **

上面已经提到过删除操作符和动作的组合,您可以在组合中动作之前插入一个数字以

删除更多:

d number(数字) motion

  1. 移动光标到下面标记有 ---> 的一行中第一个大写字母单词上。

  2. 输入 d2w 以删除两个大写字母单词。

  3. 重复步骤1和步骤2,使用不同的数字使得用一个命令就能删除全部相邻的大写字母

    单词

---> this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up.

			    第二讲第六节:操作整行

		     ** 输入 dd 可以删除整一个当前行。 **

  鉴于整行删除的高频度,Vi 的设计者决定要简化整行删除操作,您仅需要在同一行上
击打两次 d 就可以删除掉光标所在的整行了。 1. 请将光标移动到本节中下面的短句段落中的第二行。
2. 输入 dd 删除该行。
3. 然后移动到第四行。
4. 接着输入 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 sweet
---> 7) And so are you.
		   第二讲第七节:撤消类命令

** 输入 u 来撤消最后执行的命令,输入 U 来撤消对整行的修改。 **
  1. 请将光标移动到本节中下面标记有 ---> 的那一行,并将其置于第一个错误

    处。
  2. 输入 x 删除第一个不想保留的字母。
  3. 然后输入 u 撤消最后执行的(一次)命令。
  4. 这次要使用 x 修正本行的所有错误。
  5. 现在输入一个大写的 U ,恢复到该行的原始状态。
  6. 接着多次输入 u 以撤消 U 以及更前的命令。
  7. 然后多次输入 CTRL-R (先按下 CTRL 键不放开,接着按 R 键),这样就

    可以重做被撤消的命令,也就是撤消掉撤消命令。

---> Fiix the errors oon thhis line and reeplace them witth undo.

  1. 这些都是非常有用的命令。下面是第二讲的小结了。
			       第二讲小结

  1. 欲从当前光标删除至下一个单词,请输入:dw
2. 欲从当前光标删除至当前行末尾,请输入:d$
3. 欲删除整行,请输入:dd 4. 欲重复一个动作,请在它前面加上一个数字:2w
5. 在正常模式下修改命令的格式是:
operator [number] motion
其中:
operator - 操作符,代表要做的事情,比如 d 代表删除
[number] - 可以附加的数字,代表动作重复的次数
motion - 动作,代表在所操作的文本上的移动,例如 w 代表单词(word),
$ 代表行末等等。 6. 欲移动光标到行首,请按数字0键:0 7. 欲撤消以前的操作,请输入:u (小写的u)
欲撤消在一行中所做的改动,请输入:U (大写的U)
欲撤消以前的撤消命令,恢复以前的操作结果,请输入:CTRL-R
		   第三讲第一节:置入类命令

	** 输入 p 将最后一次删除的内容置入光标之后。 **
  1. 请将光标移动到本节中下面第一个标记有 ---> 的一行。

  2. 输入 dd 将该行删除,这样会将该行保存到 Vim 的一个寄存器中。

  3. 接着将光标移动到 c) 一行,即准备置入的位置的上方。记住:是上方哦。

  4. 然后在正常模式下(键进入)输入 p 将该行粘贴置入。

  5. 重复步骤2至步骤4,将所有的行依序放置到正确的位置上。

---> d) Can you learn too?

---> b) Violets are blue,

---> c) Intelligence is learned,

---> a) Roses are red,

			   第三讲第二节:替换类命令

	  ** 输入 r 和一个字符替换光标所在位置的字符。**

  1. 请将光标移动到本节中下面标记有 ---> 的第一行。

  2. 请移动光标到第一个出错的位置。

  3. 接着输入 r 和要替换成的字符,这样就能将错误替换掉了。

  4. 重复步骤2和步骤3,直到第一行已经修改完毕。

--->  Whan this lime was tuoed in, someone presswd some wrojg keys!
---> When this line was typed in, someone pressed some wrong keys! 5. 然后我们继续学习第三讲第三节。 特别提示:切记您要在使用中学习,而不是在记忆中学习。
		第三讲第三节:更改类命令

	 ** 要改变文本直到一个单词的末尾,请输入 ce **
  1. 请将光标移动到本节中下面标记有 ---> 的第一行。

  2. 接着把光标放在单词 lubw 的字母 u 的位置那里。

  3. 然后输入 cw 以及正确的单词(在本例中是输入 ine )。

  4. 最后按 键,然后光标定位到下一个错误第一个准备更改的字母处。

  5. 重复步骤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 命令不仅仅是删除了一个单词,它也让您进入插入模式了。

		       第三讲第四节:使用c更改更多

	   ** 更改类操作符可以与删除中使用的同样的动作配合使用。 **

  1. 更改类操作符的工作方式跟删除类是一致的。操作格式是:

         c    [number]   motion

  2. 动作参数(motion)也是一样的,比如 w 代表单词,$代表行末等等。

  3. 请将光标移动到本节中下面标记有 ---> 的第一行。

  4. 接着将光标移动到第一个错误处。

  5. 然后输入 c$ 使得该行剩下的部分更正得同第二行一样。最后按 <ESC> 键。

---> 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.
			  第三讲小结
  1. 要重新置入已经删除的文本内容,请按小写字母 p 键。该操作可以将已删除

    的文本内容置于光标之后。如果最后一次删除的是一个整行,那么该行将置

    于当前光标所在行的下一行。

  2. 要替换光标所在位置的字符,请输入小写的 r 和要替换掉原位置字符的新字

    符即可。

  3. 更改类命令允许您改变从当前光标所在位置直到动作指示的位置中间的文本。

    比如输入 ce 可以替换当前光标到单词的末尾的内容;输入 c$ 可以替换当

    前光标到行末的内容。

  4. 更改类命令的格式是:

    c [number] motion

现在我们继续学习下一讲。

		     第四讲第一节:定位及文件状态

  ** 输入 CTRL-G 显示当前编辑文件中当前光标所在行位置以及文件状态信息。
输入大写 G 则直接跳转到文件中的某一指定行。** 提示:切记要先通读本节内容,之后才可以执行以下步骤!!! 1. 按下 CTRL 键不放开然后按 g 键。我们称这个键组合为 CTRL-G。
您会看到页面最底部出现一个状态信息行,显示的内容是当前编辑的文件名
和文件中光标位置。请记住行号,它会在步骤3中用到。 提示:您也许会在屏幕的右下角看到光标位置,这会在 'ruler' 选项设置时发生
(参见 :help 'ruler') 2. 输入大写 G 可以使得当前光标直接跳转到文件最后一行。
输入 gg 可以使得当前光标直接跳转到文件第一行。 3. 输入您曾停留的行号,然后输入大写 G。这样就可以返回到您第一次按下
CTRL-G 时所在的行了。 4. 如果您觉得没问题的话,请执行步骤1至步骤3的操作进行练习。
		第四讲第二节:搜索类命令

 ** 输入 / 加上一个字符串可以用以在当前文件中查找该字符串。**
  1. 在正常模式下输入 / 字符。您此时会注意到该字符和光标都会出现在屏幕底

    部,这跟 : 命令是一样的。

  2. 接着输入 errroor <回车>。那个errroor就是您要查找的字符串。

  3. 要查找同上一次的字符串,只需要按 n 键。要向相反方向查找同上一次的字

    符串,请输入大写 N 即可。

  4. 如果您想逆向查找字符串,请使用 ? 代替 / 进行。

  5. 要回到您之前的位置按 CTRL-O (按住 Ctrl 键不放同时按下字母 o)。重复按可以

    回退更多步。CTRL-I 会跳转到较新的位置。

---> "errroor" is not the way to spell error; errroor is an error.

提示:如果查找已经到达文件末尾,查找会自动从文件头部继续查找,除非

'wrapscan' 选项被复位。

		   第四讲第三节:配对括号的查找

	      ** 输入 % 可以查找配对的括号 )、]、}。**

  1. 把光标放在本节下面标记有 --> 那一行中的任何一个 (、[ 或 { 处。

  2. 接着按 % 字符。

  3. 此时光标的位置应当是在配对的括号处。

  4. 再次按 % 就可以跳回配对的第一个括号处。

  5. 移动光标到另一个 (、)、[、]、{ 或 } 处,按 % 查看其所作所为。

---> This ( is a test line with ('s, ['s ] and {'s } in it. ))

提示:在程序调试时,这个功能用来查找不配对的括号是很有用的。

	      第四讲第四节:替换命令

	** 输入 :s/old/new/g 可以替换 old 为 new。**
  1. 请将光标移动到本节中下面标记有 ---> 的那一行。

  2. 输入

    《 V I M 教 程 》 —— 版本 1.7的更多相关文章

    1. HYPER -V 独立安装的 2016版本 中文版 下载好慢啊

      HYPER -V 独立安装的 2016版本 中文版 下载好慢啊

    2. LightningChart JS v.3.3.0全新版本现已发布!

      LightningChart JS v.3.3.0已经发布啦!!! 欢迎了解更多关于最新的性能改进.新的用户界面功能和新的图表类型的信息! WebGL兼容性和新的UI功能 WebGL是Lightnin ...

    3. Git回滚远程版本

      摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “房子是租的 但生活不是” 1.故事的开始 远程master分支下代码被不小心提交了很多垃圾代码 ...

    4. s​q​l​i​t​e​3​-​入​门​教​程

      *** 非常好 http://wenku.baidu.com/link?url=xDoS4prJaGRac0QS0nxdNr6056N-qJIfZ7OhiTharj1ntuIsNy9sWXWvBXLh ...

    5. M​a​y​a​ ​2​0​1​2​ ​破​解​安​装​全​图​文​教​程

      在学习U3D的过程中.我们要用到Maya这个工具,(当然你也能够用其它类似的), 我在安装破解 Maya 2012 的过程其中,走了一些弯路.通过搜索发现,网上关于Maya 破解的文章大多语焉不详,为 ...

    6. vimtutor

      ================================================================================ 欢 迎 阅 读 < V I M ...

    7. VIMTUTOR《VIM教程》

      =============================================================================== =      欢     迎     阅 ...

    8. vimtutor——vim官方教程

      =============================================================================== =      欢     迎     阅 ...

    9. Vimtutor中文版

      ================================================================================      欢     迎     阅  ...

    随机推荐

    1. blockground

      颜色的表示方法 一共有三种:单词.rgb表示法.十六进制表示法 rgb:红色 绿色 蓝色 三原色光学显示器,每个像素都是由三原色的发光原件组成的,靠明亮度不同调成不同的颜色的.用逗号隔开,r.g.b的 ...

    2. Jar中的Java程序如何读取Jar包中的资源文件

      Jar中的Java程序如何读取Jar包中的资源文件 比如项目的组织结构如下(以idea中的项目为例): |-ProjectName |-.idea/  //这个目录是idea中项目的属性文件夹 |-s ...

    3. C# 读取文件中的sql语句 创建数据库以及表结构

      大概思路是: 读取文件 根据文件中行内容为GO 作为分割  一条条放到list中 然后在程序中逐条执行sql语句; 值得一提的是 创建数据库的语句是不允许放到程序事务中执行的 所以目前我是分了两个文本 ...

    4. IDEA MAVEN 1.8无效的源发行版

      最近想将自己在IDEA上开发的MAVEN项目切换到JDK1.8版本上,结果IDEA报1.8无效的源发行版.下面说一下自己的解决方案: 1.pom文件 <build> <plugins ...

    5. 【HDU4966】GGS-DDU

      题意 有n种科目,每个科目都有一个最高的等级a[i].开始的时候,每个科目的等级都是0.现在要选择一些课程进行学习使得每一个科目都达到最高等级.这里有m节课可供选择.对于每门课给出L1[i],c[i] ...

    6. SpringBoot27 JDK动态代理详解、获取指定的类类型、动态注册Bean、接口调用框架

      1 JDK动态代理详解 静态代理.JDK动态代理.Cglib动态代理的简单实现方式和区别请参见我的另外一篇博文. 1.1 JDK代理的基本步骤 >通过实现InvocationHandler接口来 ...

    7. 824. Goat Latin山羊拉丁文

      [抄题]: A sentence S is given, composed of words separated by spaces. Each word consists of lowercase ...

    8. c语言练习 二维数组 年平均降水量 月平均降水量

      #define YEARS 5#define MONTHES 12 int main(void) { const float rain[YEARS][MONTHES] = { {4.3,4.3,4.3 ...

    9. (转)【前端模板之路】一、重构的兄弟说:我才不想看你的代码!把HTML给我交出来!

      原文地址:http://www.cnblogs.com/chyingp/archive/2013/06/30/front-end-tmplate-start.html 写在前面 随着前端领域的发展和社 ...

    10. .netcore项目部署IIS问题

      1.一般根据项目安装对应的runtime  下载地址:https://www.microsoft.com/net/download 2.如果出现502错误可以在cmd命令里面运行如下 如果报错,找到对 ...