文章来源:http://waterxfire.blog.hexun.com/4106986_d.html

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

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

 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! <回车>

---> 这种方式的退出编辑器绝不会保存您进入编辑器以来所做的改动。

如果您想保存更改再退出,请输入∶

:wq <回车>

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

vimtutor <回车>

 通常情况下您也可以用这种方式∶

vim tutor <回车>

---> 这里的 'vim' 表示进入vim编辑器,而 'tutor'则是您准备要编辑的文件。

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

    后再次进入编辑器。接着将光标移动到第一讲第三节来继续我们的教程讲解。
   第一讲第三节∶文本编辑之删除

   ** 在正常(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. 如果您对文本插入操作已经很满意,请接着阅读下面的小结。
          第一讲小结

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

第二讲第一节∶删除类命令

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

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

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

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

特别提示∶您所输入的 dw 会在您输入的同时出现在屏幕的最后一行。如果您输

入有误,请按下 键取消,然后重新再来。

---> 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 的格式如下∶

[number] d object 或者 d [number] object

其意如下∶

number - 代表执行命令的次数(可选项,缺省设置为 1 )。

d - 代表删除。

object - 代表命令所要操作的对象(下面有相关介绍)。

一个简短的对象列表∶

w - 从当前光标当前位置直到单字/单词末尾,包括空格。

e - 从当前光标当前位置直到单字/单词末尾,但是 包括空格。

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

特别提示∶

对于勇于探索者,请在正常模式下面仅按代表相应对象的键而不使用命令,则

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

  第二讲第四节∶对象命令的特殊情况

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

  鉴于整行删除的高频度,VIM 的设计者决定要简化整行删除,仅需要在同一行上
击打两次 d 就可以删除掉光标所在的整行了。 1. 请将光标移动到本节中下面的短句段落中的第二行。
2. 输入 dd 删除该行。
3. 然后移动到第四行。
4. 接着输入 2dd (还记得前面讲过的 number-command-object 吗?) 删除两行。 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. 在正常模式下一个命令的格式是∶

       [number]   command   object     或者     command [number]   object
其意是∶
number - 代表的是命令执行的次数
command - 代表要做的事情,比如 d 代表删除
object - 代表要操作的对象,比如 w 代表单字/单词,$ 代表到行末等等。
$ (to the end of line), etc. 5. 欲撤消以前的操作,请输入∶u (小写的u)
欲撤消在一行中所做的改动,请输入∶U (大写的U)
欲撤消以前的撤消命令,恢复以前的操作结果,请输入∶CTRL-R
第三讲第一节∶置入类命令

    ** 输入 p 将最后一次删除的内容置入光标之后 **
  1. 请将光标移动到本节中下面示范段落的首行。

  2. 输入 dd 将该行删除,这样会将该行保存到vim的缓冲区中。

  3. 接着将光标移动到准备置入的位置的上方。记住∶是上方哦。

  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. 然后我们继续学校第三讲第三节。 特别提示∶切记您要在使用中学习,而不是在记忆中学习。

第三讲第三节∶更改类命令

** 要改变一个单字/单词的部分或者全部,请输入 cw **
  1. 请将光标移动到本节中下面标记有 ---> 的第一行。

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

  3. 然后输入 cw 就可以修正该单词了(在本例这里是输入 ine 。)

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

  5. 重复步骤3和步骤4,直到第一个句子完全雷同第二个句子。

---> This lubw has a few wptfd that mrrf changing usf the change command.

---> This line has a few words that need changing using the change command.

提示∶请注意 cw 命令不仅仅是替换了一个单词,也让您进入文本插入状态了。

         第三讲第四节∶使用c指令的其他更改类命令

      ** 更改类指令可以使用同删除类命令所使用的对象参数。**

  1. 更改类指令的工作方式跟删除类命令是一致的。操作格式是∶

       [number]   c   object    或者     c [number]   object

  2. 对象参数也是一样的,比如 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. 更改类命令允许您改变指定的对象,从当前光标所在位置直到对象的末尾。

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

    前光标到行末的内容。

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

[number] c object 或者 c [number] object

下面我们继续学习下一讲。

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

  ** 输入 CTRL-g 显示当前编辑文件中当前光标所在行位置以及文件状态信息。
输入 SHIFT-G 则直接跳转到文件中的某一指定行。** 提示∶切记要先通读本节内容,之后才可以执行以下步骤!!! 1. 按下 CTRL 键不放开然后按 g 键。然后就会看到页面最底部出现一个状态信
息行,显示的内容是当前编辑的文件名和文件的总行数。请记住步骤3的行号。 2. 按下 SHIFT-G 键可以使得当前光标直接跳转到文件最后一行。 3. 输入您曾停留的行号,然后按下 SHIFT-G。这样就可以返回到您第一次按下
CTRL-g 时所在的行好了。注意∶输入行号时,行号是不会在屏幕上显示出来
的。 4. 如果愿意,您可以继续执行步骤1至步骤三。

第四讲第二节∶搜索类命令

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

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

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

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

    符串,请输入 Shift-N 即可。

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

---> When the search reaches the end of the file it will continue at the start.

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

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

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

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

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

  2. 接着按 % 字符。

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

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

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

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

    第四讲第四节∶修正错误的方法之一

** 输入

VIMTUTOR 1.7中文版的更多相关文章

  1. Linux基础(vim)

    1.源文件到可执行文件经历了什么? gcc -E main.c -o(输出) main.i 第一阶段:预处理:加载了include文件 gcc -S main.i -o main.s 第二阶段:编译( ...

  2. Vimtutor(中文版)学习笔记各章小结

    在Bash中直接输入 vimtutor 打开新世界!通常阅读完需要25-30分钟不等,像玩游戏一样学会vim,然后爱不释手 里面设置了很多例子通过实践操作来学,这里仅把vimtutor上的每一章小结记 ...

  3. Vimtutor中文版

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

  4. 2DToolkit官方文档中文版打地鼠教程(三):Sprite Collections 精灵集合

    这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...

  5. 2DToolkit官方文档中文版打地鼠教程(二):设置摄像机

    这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...

  6. 2DToolkit官方文档中文版打地鼠教程(一):初始设置

    这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...

  7. Python 资源大全中文版

    Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-python 是 vinta 发起维护的 Python 资源列 ...

  8. Tensorflow 官方版教程中文版

    2015年11月9日,Google发布人工智能系统TensorFlow并宣布开源,同日,极客学院组织在线TensorFlow中文文档翻译.一个月后,30章文档全部翻译校对完成,上线并提供电子书下载,该 ...

  9. JavaScript资源大全中文版(Awesome最新版--转载自张果老师博客)

    JavaScript资源大全中文版(Awesome最新版)   目录 前端MVC 框架和库 包管理器 加载器 打包工具 测试框架 框架 断言 覆盖率 运行器 QA 工具 基于 Node 的 CMS 框 ...

随机推荐

  1. leetCode 30.Substring with Concatenation of All Words (words中全部子串相连) 解题思路和方法

    Substring with Concatenation of All Words You are given a string, s, and a list of words, words, tha ...

  2. Shift Register(Using Submodule)

    /*************************************************** /  Shift Register module by Submodule /  Progra ...

  3. nginx源码学习_数据结构(ngx_pool_t)

    nginx中关于ngx_pool_t的数据结构位于src/core/ngx_palloc.c和src/core/ngx_palloc.h中,该数据结构主要是和内存池相关的,写下这篇博客前参考了网上很多 ...

  4. org.mockito.exceptions.misusing.CannotStubVoidMethodWithReturnValue

    错误原因:mock的时候,不能mock重载的方法 解决方法:直接mock它的父类的方法 org.mockito.exceptions.misusing.CannotStubVoidMethodWith ...

  5. finsh初步

    一. finsh在RT-Thread中被设计成一个独立的线程,它试图从外部设备中获得用户的输入,然后对用户命令进行解析执行. 正确使用finsh需要一个关联过程: rt_hw_board_init() ...

  6. 18 已知下面的字符串是通过RANDOM随机数变量md5sum|cut-c 1-8截取后的结果

    面试题18:破解RANDOM随机数案例 已知下面的字符串是通过RANDOM随机数变量md5sum后,再截取一部分连续字符串的结果,请破解这些字符串对应的使用md5sum处理前的RANDOM对应的数字? ...

  7. iostat -d -k -x 1 10

    iostat命令详解 转载 2011年08月03日 14:13:58 标签:磁盘 /扩展 /user 99809 iostat iostat用于输出CPU和磁盘I/O相关的统计信息. 命令格式: io ...

  8. 24模拟keepalved vrrp功能,监听主节点,如果主节点不可访问则备节点启动并配置LVS实现接管主节点的资源提供服务(提醒:注意ARP缓存)

    [root@lb04 scripts]# cat ha_lv.sh #!/bin/bash while true do check_count=$(nmap 10.0.0.13|grep " ...

  9. 【转】在Eclipse中使用JUnit4进行单元测试(初级篇)

    http://www.builder.com.cn/2007/0901/482336.shtml 首先,我们来一个傻瓜式速成教程,不要问为什么,Follow Me,先来体验一下单元测试的快感! 首先新 ...

  10. Linux 实用工具vi

    vi有输入和命令两种工作模式.命令模式是用来运行一些编排文件.存档以及离开vi等操作命令. 当执行vi后,首先进入命令模式,此时输入的人数字符都被视为命令. 在命令模式下,可以使用如下两个键进入文本输 ...