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

前言:

Vim 是一个具有很多命令的功能非常强大的编辑器。限于篇幅,在本教程当中就不详细介绍了。本教程的设计目标是讲述一些必要的基本命令,而掌握好这些命令,您就能够很容易地将 Vim 当作一个通用编辑器来使用了。

完成本教程的内容大约需要25-30分钟,取决于您训练的时间。

注意:
每一节的命令操作将会更改本文。推荐您复制本文的一个副本,然后在副本上进行训练(如果您是通过"vimtutor"来启动教程的,那么本文就已经是副本了)。

切记一点:
本教程的设计思路是在使用中进行学习的。也就是说,您需要通过执行命令来学习它们本身的正确用法。如果您只是阅读而不操作,那么您可能会很快遗忘这些命令的!

好了,现在请确定您的Shift-Lock(大小写锁定键)还没有按下,然后按键盘上的字母键 j 足够多次来移动光标,直到第一节的内容能够完全充满屏幕。

1.1 移动光标

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

(1)请随意在屏幕内移动光标,直至您觉得舒服为止。

(2)按下下行键(j),直到出现光标重复下行。

—> 现在您应该已经学会如何移动到下一讲吧。

  1. 现在请使用下行键,将光标移动到第一讲第二节。

提示:如果您不敢确定您所按下的字母,请按下键回到正常(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 thThere is some text missing from this line.
---> There is also some text missThere 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. 在正常模式下删除光标所在位置的字符,请按: x5. 欲插入或添加文本,请输入: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. 欲从当前光标删除至下一个单词,请输入:dw2. 欲从当前光标删除至当前行末尾,请输入:d$3. 欲删除整行,请输入:dd4. 欲重复一个动作,请在它前面加上一个数字:2w5. 在正常模式下修改命令的格式是:operator   [number]   motion其中:operator - 操作符,代表要做的事情,比如 d 代表删除[number] - 可以附加的数字,代表动作重复的次数motion   - 动作,代表在所操作的文本上的移动,例如 w 代表单词(word),$ 代表行末等等。6. 欲移动光标到行首,请按数字0键:07. 欲撤消以前的操作,请输入: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. 然后输入 ce 以及正确的单词(在本例中是输入 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]   motion2. 动作参数(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. 输入

    vim中文教程-来自官方文档相关推荐

    1. 一、ShardingSphere简介(来自官方文档)

      官方中文文档地址https://shardingsphere.apache.org/document/current/cn/overview/ 简介(来自上面的官网) Apache ShardingS ...

    2. 基于vue的微信小程序开发5分钟上手教程(官方文档转)

      使用手册 mpvue 继承自 Vue.js,其技术规范和语法特点与 Vue.js 保持一致. 注:其实就是官方文档,只是习惯看博文学习才直接copy过来的,详见官方文档 本文档适用于有一定 Vue.j ...

    3. 来自官方文档的Ubuntu 16.04 + tensorflow-GPU 配置

      I  Preprare for CUDA installation 官方文档:http://docs.nvidia.com/cuda/cuda-installation-guide-linux/ind ...

    4. Swift 编程语言教程(官方文档)

      Swift 编程语言中文教程 the swift programming language

    5. [WebApp开发]基础教程-Google官方文档-第四篇

      文档内容 在Android Browser中使用控制台API 在WebView中使用控制台API 参考 调试 如果你是在为Android开发web应用,那么,你可以使用控制台(console)的Jav ...

    6. qnx 镜像文件_QNX开发最完整图文教程(官方文档,非官方翻译)

      我一直以来,就是一个用着诺基亚的黑莓控,关注BB很久很久了.(事先说明这不是BB10的开发教程,所以大家是黑莓移动应用的开发者可以移步了,这未必是你们想要的资料.;-)在我们正式开发之前,先来闲聊放松 ...

    7. Rust模板引擎Tera中文英文对照官方文档

      来嘞早不如来的巧,刚翻译好,你就来啦!翻译完成 要开发CMS(内容管理系统)得有个模板引擎,Tera是使用Rust编写的模板引擎,语法跟JinJa2很像. 引入Tera 要使用Tera只需要在 Car ...

    8. VUE插件 --(来自官方文档)

      插件 插件是自包含的代码,通常向 Vue 添加全局级功能.它可以是公开 install() 方法的 object(  { install:xxxx } ),也可以是 function 1.编写插件 每 ...

    9. ZooKeeper官方文档学习笔记01-zookeeper概述

      纠结了很久,我决定用官方文档学习 ZooKeeper概述 学习文档 学习计划 ZooKeeper:分布式应用程序的分布式协调服务 设计目标 数据模型和分层名称空间 节点和短命节点 有条件的更新和监视 ...

    最新文章

    1. 基于PHP的图片共享网站设计,基于PHP实现的WEB图片共享系统(SQL数据库),毕业论文设计...
    2. 如何连接两个窗口JAVA_java-如何连接两个ArrayLists?
    3. Flask-admin 学习及一些笔记
    4. SkyWalking8.1.0 部署和使用
    5. G - 娜娜梦游仙境系列——梦醒
    6. Github|类别不平衡学习资源(下)
    7. 栈溢出笔记1.11 SafeSEH
    8. ASP静态HTML(局部)生成类
    9. 微信秘笈之--微信多开
    10. Ajax基础 Ajax发送Get请求和post请求
    11. 关于visual studio和vc版本之间的对应关系(更新至2020.07)
    12. 强网杯S6初赛 部分题解
    13. ckplayer6.8 php播放,ckplayer
    14. H3C网络故障排除方法
    15. 远程桌面不能复制粘贴解决办法
    16. Nodejs安装在D盘酱紫报错?
    17. 采集同花顺android数据,同花顺对比app排行榜数据_SZ300033_乌龟量化
    18. 路由器的静态路由配置以及OSPF动态配置
    19. jadx重新打包_反编译一款APP然后重新打包(Windows环境)
    20. 使 Windows 下的 Qt 应用程序获得 Administrator 权限

    热门文章

    1. 【操作系统】处理机调度:处理机调度的层次和调度算法的目标
    2. 电视剧《我是业主》演员表,主要演员
    3. iPS细胞的癌症治疗进展到什么程度?
    4. cuda tong bu 和 yibu
    5. 查找oracle11g的端口,oracle11g rac 非缺省端口在Oracle用户下无法查看状态
    6. Class类的简单介绍
    7. 米思齐学习例程(八):声控灯
    8. 如何把腾讯微博关闭 腾讯微博的关闭方法
    9. C# 串口SerialPort方法详解
    10. 华为S5720-52X-PWR-LI/S5720-52X-LI交互机堆叠和VLAN配置