VIM

1.为什么要用VIM

一篇Vim作者Bram Moolenaar写的《进行有效编辑的七种习惯 》,文章介绍了Vim是如何实现高效编辑的。

Vim是一个有模式的编辑器。简单地说,一个模式用来进行文本编辑,一个模式用来移动光标、拷贝粘贴,一个模式用来进行字符串查找等工作。正是模式的存 在,给予了Vim简洁的操作方式。例如,在普通模式下,只需要用h、j、k、l四个键就可以前后左右移动光标了。我是如此地习惯于这样的光标移动方式,以 至于我把j、k定义成了Firefox浏览器上下滚动的快捷键。

第二,Vim可以完全用键盘完成你的编辑工作,而且你只 需要用到键盘上面的下五排按键和ESC键。你不需要Home、End、PageUp、PageDown和方向键等离键盘主区域比较远的按键,这点对我的笔 记本电脑键盘而言尤其具有优势,因为我的笔记本上的PageUp、PageDown键必须配合Fn键使用,Home、End等键比较小。

第 三,Vim是跨平台的,在Linux和MS Windows下我都可以使用它。

第四,Vim有大量优秀的脚本文件,大大 增强了Vim的功能。例如,taglist可以把tag在一个窗口单列出来,方便了对tag的浏览和查找工作;NERD_comment提供了注释程序代 码的功能,把想注释的几行选中,在普通模式中用/cc就行了;snippetEmu提供了强大的文本自动扩展功能,在tex文件里输入eqn加上tab 键,就能把eqn替换成一个预定义好的/begin{equation}.../end{equation}结构,再用tab键就可以在跳到下一个 anchor进行输入。

 

参考资料:
  1. 高 效编辑vim VIM编辑器——代码高手的选择 - 你 - whu.xp.vip
扩展阅读:
1.Vim官方网站: http://www.vim.org/
2.[1]TeX: http://www.chinatex.org/index1.htm
3. http://www.phplamps.cn/diannao/200812/09-1777.html Vim介绍
开放分类:
Linuxide编 译器

高效率移动

1、 在插入模式之外

基本上来说,你应该尽可能少的呆在插入模式里面,因为在插入模式里面 VIM 就像一个“哑巴”编辑器一样。很多新手都会一直呆在插入模式里面,因为这样易于使用。但 VIM 的强大之处在于他的命令行模式!你会发现,在你越来越了解 VIM 之后,你就会花越来越少的时间使用插入模式了。

2、使用 h、j、k、l

使用 VIM 高效率编辑的第一步,就是放弃使用箭头键。使用 VIM,你就不用频繁的在箭头键和字母键之间移来移去了,这会节省你很多时间。当你在命令模式时,你可以用 h、j、k、l 来分别实现左、下、上、右箭头的功能。一开始可能需要适应一下,但一旦习惯这种方式,你就会发现这样操作的高效之处了。   在你编辑你的电子邮件或者其他有段落的文本时,你可能会发现使用方向键和你预期的效果不一样, 有时候可能会一次跳过了很多行。这是因为你的段落在 VIM 看来是一个大的长长的行。这时你可以在按 h、j、k 或者 l 之前键入一个 g,这样 VIM 就会按屏幕上面的行如你所愿的移动了。

3、在当前行里面有效的移动光标

很多编辑器只提供了简单的命令来控制光标的移动(比如左、上、右、下、到行首/尾等)。VIM 则提供了很多强大的命令来满足你控制光标的欲望。当光标从一点移动到另外一点,在这两点之间的文本(包括这两个点)称作被“跨过”,这里的命令也被称作是 motion。(简单说明一下,后面会用到这个重要的概念)

4、常用到的一些命令(motion)

fx:移动光标到当前行的下一个 x 处。很明显,x 可以是任意一个字母,而且你可以使用 ; 来重复你的上一个 f 命令。   tx:和上面的命令类似,但是是移动到 x 的左边一个位置。(这真的很有用)   Fx:和 fx 类似,不过是往回找。   w:光标往前移动一个词。   b:光标往后移动一个词。   0:移动光标到当前行首。   ^:移动光标到当前行的第一个字母位置。   $:移动光标到行尾。   ):移动光标到下一个句子。   ( :移动光标到上一个句子。

5、 在整个文件里面有效移动光标

VIM 有很多命令,可以用来到达文件里面你想到达的地方。下面是一些在文件里面移动的命令:   <C-F>:向下移动一屏。   <C-B>:向上移动一屏。   G:到文件尾   numG:移动光标到指定的行(num)。(比如 10G 就是到第 10 行)   gg:到文件首   H:移动光标到屏幕上面   M:移动光标到屏幕中间   L:移动光标到屏幕下面   *:读取光标处的字符串,并且移动光标到它再次出现的地方。   #:和上面的类似,但是是往反方向寻找。   /text:从当前光标处开始搜索字符串 text,并且到达 text 出现的地方。必须使用回车来开始这个搜索命令。如果想重复上次的搜索的话,按 n。   ?text:和上面类似,但是是反方向。   ma:在当前光标的位置标记一个书签,名字为 a。书签名只能是小写字母。你看不见书签的存在,但它确实已经在那里了。   `a:到书签 a 处。注意这个不是单引号,它一般位于大部分键盘的 1 的左边。   `.:到你上次编辑文件的地方。这个命令很有用,而且你不用自己去标记它。

编辑本段 高效的输入

1、使用关键词自动完成

VIM 有一个非常漂亮的关键词自动完成系统。这表示,你可以输入一个长词的一部分,然后按一下某个键,然后 VIM 就替你完成了这个长词的输入了。举个例子:你有一个变量名为 iAmALongAndAwkwardVarName 在你写的代码的某个地方。也许你不想每回都自己一个一个字母的去输入它。   使用关键词自动完成功能,你只需要输入开始几个字母(比如 iAmAL),然后按 <C-N>(按住 Ctrl,再按 N)或者 <C-P>。如果 VIM 没有给出你想要的词,继续按,直到你满意为止,VIM 会一直循环它找到的匹配的字符串。

2、聪明的进入插入模式

很 多新手进入插入模式都只是用 i。这样当然可以进入插入模式,但通常不是那么合适,因为 VIM 提供了很多进入插入模式的命令。下面是最常用的一些:   i:在当前字符的左边插入   I:在当前行首插入   a:在当前字符的右边插入   A:在当前行尾插入   o:在当前行下面插入一个新行   O:在当前行上面插入一个新行   c{motion}:删除 motion 命令跨过的字符,并且进入插入模式。比如:c$,这将会删除从光标位置到行尾的字符并且进入插入模式。ct!,这会删除从光标位置到下一个叹号(但不包 括),然后进入插入模式。被删除的字符被存在了剪贴板里面,并且可以再粘贴出来。   d{motion}:和上面差不多,但是不进入插入模式。

3、有效的移动大段的文本

使用可视选择(visual selections)和合适的选择模式   不像最初的 VI,VIM 允许你高亮(选择)一些文本,并且进行操作。这里有三种可视选择模式:   v:按字符选择。经常使用的模式,所以亲自尝试一下它。   V:按行选择。这在你想拷贝或者移动很多行的文本的时候特别有用。   <C-V>:按块选择。非常强大,只在很少的编辑器中才有这样的功能。你可以选择 一个矩形块,并且在这个矩形里面的文本会被高亮。   在选择模式的时候使用上面所述的方向键和命令(motion)。比如,vwww,会高亮光标前 面的三个词。Vjj 将会高亮当前行以及下面两行。

4、在可视选择模式下剪切和拷贝

一旦你高亮了选区,你或许想进行一些操作:   d:剪贴选择的内容到剪贴板。   y:拷贝选择的内容到剪贴板。   c:剪贴选择的内容到剪贴板并且进入插入模式。   在非可视选择模式下剪切和拷贝   如果你很清楚的知道你想拷贝或者剪切什么,那你根本就不需要进入可视选择模式。这样也会节省时 间:   d{motion}:剪切 motion 命令跨过的字符到剪贴板。比如,dw 会剪切一个词而 dfS 会将从当前光标到下一个 S 之间的字符剪切至剪贴板。   y{motion}:和上面类似,不过是拷贝。   c{motion}:和 d{motion} 类似,不过最后进入插入模式。   dd:剪切当前行。   yy:拷贝当前行。   cc:剪切当前行并且进入插入模式。   D:剪切从光标位置到行尾到剪贴板。   Y:拷贝当前行。   C:和 D 类似,最后进入插入模式。   x:剪切当前字符到剪贴板。   s:和x类似,不过最后进入插入模式。

5、 粘贴

粘贴很简单,按 p。

6、使用多重剪贴板

很多 编辑器都只提供了一个剪贴板。VIM 有很多。剪贴板在 VIM 里面被称为寄存器(Registers)。你可以列出当前定义的所有寄存器名和它们的内容,命令为“:reg”。最好使用小写字母来作为寄存器的名称,因 为大写的有些被 VIM 占用了。   使用寄存器的命令为双引号 “。   比如:我们要拷贝当前行到寄存器 k。你应该按 “kyy。(你也可以使用 V”ky。为什么这样也可以呢?)现在当前行应该已经存在了寄存器 k 里面直到你又拷贝了一些东西进入寄存器 k。现在你可以使用命令 “kp 来粘贴寄存器 k 里面的内容到你想要的位置。

7、避免重复

令人惊奇的 . 命令   在 VI 里面,输入 . (小数点符号),将会重复你输入的上一个命令。比如,你上个命令为“dw”(删除一个词),VI 将会接着再删除一个词。

8、使用数字

  使用数字也是 VIM 强大的而且很节省时间的重要特性之一。在很多 VIM 的命令之前都可以使用一个数字,这个数字将会告诉 VIM 这个命令需要执行几次。比如:   3j 将会把光标向下移动三行。   10dd 将会删除十行。   y3″ 将会拷贝从当前光标到第三个出现的引号之间的内容到剪贴板。   数字是扩展 motion 命令作用域非常有效的方法。

=======================================================================
http://fbi2008110.blog.163.com/blog/static/137513456201002021711306/?fromdm&isFromSearchEngine=yes
===============================================================================
=      欢     迎     阅     读   《 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. 请按<ESC>键(这是为了确保您处在正常模式)。

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

---> 这种方式的退出编辑器绝不会保存您进入编辑器以来所做的改动。
如果您想保存更改再退出,请 输入∶
:wq <回车>

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

vimtutor <回车>

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

vim tutor <回车>

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

4. 如果您自信已经牢牢记住了这些步骤的话,请从步骤1执行到步骤3退出,然
后再次进入编辑器。接着将光标移动到第一讲第三节来继续我们的教程讲解。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第 一讲第三节∶文本编辑之删除


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

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

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

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

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

---> The ccow jumpedd ovverr thhe mooon.

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

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



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


** 在正常模式下,可以按下 i 键来插入文本。**

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

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

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

4. 所有文本都修正完毕,请按下 <ESC> 键返回正常模式。
重复步骤2至步骤4 以便修正句子。

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

5. 如果您对文本插入操作已经很满意,请接着阅读下面的小结。



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第 一讲小结


1. 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键。
h (左移)    j (下行)       k (上行)        l (右移)

2. 欲进入vim编辑器(从命令行提示符),请输入∶vim 文件名 <回车>

3. 欲退出vim编辑器,请输入以下命令放弃所有修改∶

<ESC>   :q!    <回车>

或者输入以下命令保存所有修改∶

<ESC>   :wq    <回车>

4. 在正常模式下删除光标所在位置的字符,请按∶ x

5. 在正常模式下要在光标所在位置开始插入文本,请按∶

i     输入必要文本    <ESC>

特别提 示∶按下 <ESC> 键会带您回到正常模式或者取消一个不期望或者部分完成
的命令。

好了,第一讲到此结束。下面接 下来继续第二讲的内容。


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


** 输入 dw 可以从光标处删除至一个单字/单词的末尾。**

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

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

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

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

特别提示∶您所输入的 dw 会在您输入的同时出现在屏幕的最后一行。如果您输
入有误,请按下 <ESC> 键取消,然后重新再来。

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

5. 重复步骤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.

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




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第 二讲小结


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. 然后在正常模式下(<ESC>键进入),输入 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. 最后按 <ESC> 键,然后光标定位到下一个错误第一个准备更改的字母处。

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. ))

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






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


** 输入 :s/old/new/g 可以替换 old 为 new。**

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

2. 输入 :s/thee/the <回车> 。请注意该命令只改变光标所在行的第一个匹配
串。

3. 输入 :s/thee/the/g    则是替换全行的匹配串。

---> the best time to see thee flowers is in thee spring.

4. 要替换两行之间出现的每个匹配串,请输入 :#,#s/old/new/g (#,#代表的是
两行的行号)。输入 :%s/old/new/g 则是替换整个文件中的每个匹配串。




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第 四讲小结


1. Ctrl-g 用于显示当前光标所在位置和文件状态信息。Shift-G 用于将光标跳
转至文件最后一 行。先敲入一个行号然后按 Shift-G 则是将光标移动至该行
号代表的行。

2. 输入 / 然后紧随一个字符串是则是在当前所编辑的文档中向后查找该字符串。
输入问号 ? 然后紧随一个字符串是则是在当前所编辑的文档中向前查找该字
符 串。完成一次查找之后按 n 键则是重复上一次的命令,可在同一方向上查
找下一个字符串所在;或者按 Shift-N 向相反方向查找下该字符串所在。

3. 如果光标当前位置是括号(、)、[、]、{、},按 % 可以将光标移动到配对的
括号上。

4. 在一行内替换头一个字符串 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


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第 五讲第一节∶在 VIM 内执行外部命令的方法


** 输入 :! 然后紧随著输入一个外部命令可以执行该外部命令。**

1. 按下我们所熟悉的 : 命令设置光标到屏幕底部。这样就可以让您输入命令了。

2. 接着输入感叹号 ! 这个字符,这样就允许您执行外部的 shell 命令了。

3. 我们以 ls 命令为例。输入 !ls <回车> 。该命令就会列举出您当前目录的
内容,就如同您在命令行提示符下输入 ls 命令的结果一样。如果 !ls 没起
作用,您可以试试 :!dir 看看。

---> 提示∶ 所有的外部命令都可以以这种方式执行。

---> 提示∶ 所有的 : 命令都必须以 <回车> 告终。




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第 五讲第二节∶关于保存文件的更多信息


** 要将对文件的改动保存到文件中,请输入 :w FILENAME 。**

1. 输入 :!dir 或者 :!ls 获知当前目录的内容。您应当已知道最后还得敲
<回车> 吧。

2. 选择一个尚未存在文件名,比如 TEST 。

3. 接着输入 :w TEST (此处 TEST 是您所选择的文件名。)

4. 该命令会以 TEST 为文件名保存整个文件 (VIM 教程)。为了确保正确保存,
请再次输入 :!dir 查看您的目录列表内容。

---> 请注意∶如果您退出 VIM 然后在以文件名 TEST 为参数进入,那么该文件内
容应该同您保存时的文件内容是完全一样的。

5. 现在您可以通过输入 :!rm TEST 来删除 TEST 文件了。



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第 五讲第三节∶一个具有选择性的保存命令


** 要保存文件的部分内容,请输入 :#,# w FILENAME **

1. 再来执行一次 :!dir 或者 :!ls 获知当前目录的内容,然后选择一个合适的
不重名的文件名,比如 TEST 。

2. 接着将光标移动至本页的最顶端,然后按 CTRL-g 找到该行的行号。别忘了
行号哦。

3. 接着把光标移动至本页的最底端,再按一次 CTRL-g 。也别忘了这个行好哦。

4. 为了只保存文章的某个部分,请输入 :#,# w TEST 。这里的 #,# 就是上面
要求您记住的行号(顶端行号,底端行号),而 TEST 就是选定的文件名。

5. 最后,用 :!dir 确认文件是否正确保存。但是这次先别删除掉。




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第 五讲第四节∶提取和合并文件


** 要向当前文件中插入另外的文件的内容,请输入 :r FILENAME **

1. 请键入 :!dir 确认您前面创建的 TEST 文件还在。

2. 然后将光标移动至当前页面的顶端。

特别提示∶ 执行步骤3之后您将看到第五讲第三节,请届时再往下移动回到这里来。

3. 接着通过 :r TEST 将前面创建的名为 TEST 的文件提取进来。

特别提示∶您所提取进来的文件将从光标所在位置处开始置入。

4. 为了确认文件已经提取成功,移动光标回到原来的位置就可以注意有两份第
五讲第三节,一份是原本,另外一份是来自文件的副本。



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第 五讲小结


1. :!command 用于执行一个外部命令 command。

请看一些实际例子∶
:!dir - 用于显示当前目录的内容。
:!rm FILENAME -    用于删除名为 FILENAME 的文件。

2. :w FILENAME 可将当前 VIM 中正在编辑的文件保存到名为 FILENAME 的文
件中。

3. :#,#w FILENAME 可将当前编辑文件第 # 行至第 # 行的内容保存到文件
FILENAME 中。

4. :r FILENAME 可提取磁盘文件 FILENAME 并将其插入到当前文件的光标位置
后面。







~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第 六讲第一节∶打开类命令


** 输入 o 将在光标的下方打开新的一行并进入插入模式。**

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

2. 接着输入小写的 o 在光标 *下方* 打开新的一行并进入插入模式。

3. 然后复制标记有 ---> 的行并按 <ESC> 键退出插入模式而进入正常模式。

---> After typing o the cursor is placed on the open line in Insert mode.

4. 为了在光标 *上方* 打开新的一行,只需要输入大写的 O 而不是小写的 o
就可以了。请在下行测试一下吧。当光标处在在该行上时,按 Shift-O可以
在该行上方新开一行。

Open up a line above this by typing Shift-O while the cursor is on this line.





~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第 六讲第二节∶光标后插入类命令


** 输入 a 将可在光标之后插入文本。 **

1. 请在正常模式下通过输入 $ 将光标移动到本节中下面标记有 ---> 的第一行
的末尾。

2. 接着输入小写的 a 则可在光标之后插入文本了。大写的 A 则可以直接在行
末插入文本。

提示∶输入大写 A 的操作方法可以在行末插入文本,避免了输入 i,光标定位到
最后一个字符,输入的文本,<ESC> 回复正常模式,箭头右键移动光标以及
x 删除当前光标所在位置字符等等诸多繁杂的操作。

3. 操作之后第一行就可以补充完整了。请注意光标后插入文本与插入模式是基
本完全一致的,只是文本插入的位置定位稍有不同罢了。

---> This line will allow you to practice
---> This line will allow you to practice appending text to the end of a line.



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第 六讲第三节∶另外一个置换类命令的版本


** 输入大写的 R 可连续替换多个字符。**

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

2. 移动光标到第一行中不同于标有 ---> 的第二行的第一个单词的开始,即单
词 last 处。

3. 然后输入大写的 R 开始把第一行中的不同于第二行的剩余字符逐一输入,就
可以全部替换掉原有的字符而使得第一行完全雷同第二行了。

---> To make the first line the same as the last on this page use the keys.
---> To make the first line the same as the second, type R and the new text.

4. 请注意∶如果您按 <ESC> 退出置换模式回复正常模式,尚未替换的文本将仍
然保持原状。





~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第 六讲第四节∶设置类命令的选项


** 设置可使查找或者替换可忽略大小写的选项 **


1. 要查找单词 ignore 可在正常模式下输入 /ignore 。要重复查找该词,可以
重复按 n 键。

2. 然后设置 ic 选项(ic就是英文忽略大小写Ignore Case的首字母缩写词),即
输入∶
:set ic

3. 现在可以通过键入 n 键再次查找单词 ignore。重复查找可以重复键入 n 键。

4. 然后设置 hlsearch 和 incsearch 这两个选项,输入以下内容∶
:set hls is

5. 现在可以再次输入查找命令,看看会有什么效果∶
/ignore

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第 六讲小结


1. 输入小写的 o 可以在光标下方打开新的一行并将光标置于新开的行首,进入
插入模式。
输入大写的 O 可以在光标上方打开新的一行并将光标置于新开的行首,进入
插入模式。

2. 输入小写的 a 可以在光标所在位置之后插入文本。
输入大写的 A 可以在光标所在行的行末之后插入文本。

3. 输入大写的 R 将进入替换模式,直至按 <ESC> 键退出替换模式而进入正常
模式。

4. 输入 :set xxx 可以设置 xxx 选项。









~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第 七讲∶在线帮助命令

** 使用在线帮助系统 **

Vim 拥有一个细致全面的在线帮助系统。要启动该帮助系统,请选择如下三种方
法之一∶
- 按下 <HELP> 键 (如果键盘上有的话)
- 按下 <F1> 键 (如果键盘上有的话)
- 输入    :help <回车>

输 入 :q <回车> 可以关闭帮助窗口。

提供一个正确的参数给":help"命令,您可以找到关于该主题的帮助。请试验以
下 参数(可别忘了按回车键哦。:)∶

:help w <回车>
:help c_<T <回车>
:help insert-index <回车>
:help user-manual <回车>




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第 八讲∶创建一个启动脚本

** 启用vim的功能 **

Vim的功能特性要比vi多得多,但大部分功能都没有缺省激活。为 了启动更多的
功能,您得创建一个vimrc文件。

1. 开始编辑vimrc文件,这取决于您所使用的操作系统∶

:edit ~/.vimrc        这是Unix系统所使用的命令
:edit $VIM/_vimrc        这是Windows系统所使用的命令

2. 接着导入vimrc范例文件∶

:read $VIMRUNTIME/vimrc_example.vim

3. 保存文件,命令为∶

:write

在 下次您启动vim的时候,编辑器就会有了语法高亮的功能。您可以继续把您喜
欢的其它功能设置添加到这个vimrc文件中。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

vim 教程到此结束。本教程只是为了简明地介绍一下vim编辑器,但已足以让您
很容易学会使用本编辑器了。毋庸质疑,vim还有很多很多的命令,本教 程所介
绍的还差得远著呢。所以您要精通的话,还望继续努力哦。下一步您可以阅读
vim手册,使用的命令是∶
:help user-manual

为了更进一步的参考和学习,以下这本书值得推荐∶

Vim - Vi Improved - 作者∶Steve Oualline
出版社∶New Riders

这是第一本完全讲解vim的书籍。对于初学者特别有用。其中还 包含有大量实例
和图示。欲知详情,请访问 http://iccf-holland.org/click5.html

以下这本书 比较老了而且内容主要是vi而不是vim,但是也值得推荐∶

Learning the Vi Editor - 作者∶Linda Lamb
出版社∶O'Reilly & Associates Inc.

这是一本不错的书,通过它您几乎能够了解到全部 vi能够做到的事情。此书的第
六个版本也包含了一些关于vim的信息。

本教程是由来自Calorado School of Minese的Michael C. Pierce、Robert K.
Ware 所编写的,其中来自Colorado State University的Charles Smith提供了
很多创意。编者通信地址是∶

bware@mines.colorado.edu

本 教程已由Bram Moolenaar专为vim进行修订。



译制者附言∶
===========
简体中 文教程翻译版之译制者为梁昌泰 <beos@turbolinux.com.cn>,还有
另外一个联系地址 ∶linuxrat@gnuchina.org。

繁体中文教程是从简体中文教程翻译版使用 Debian GNU/Linux 中文项目小
组的于广辉先生编写的中文汉字转码器 autoconvert 转换而成的,并对转
换的结果做了一些细节的改动。

变 更记录∶
=========
2002年08月30日 梁昌泰 <beos@turbolinux.com.cn>
感 谢 RMS@SMTH 的指正,将多处错误修正。

2002年04月22日 梁昌泰 <linuxrat@gnuchina.org>
感谢 xuandong@sh163.net 的指正,将两处错别字修正。

2002 年03月18日 梁昌泰 <linuxrat@gnuchina.org>
根据Bram Molenaar先生在2002年03月16日的来信要求,将vimtutor1.4中译
版升级到vimtutor1.5。

2001 年11月15日 梁昌泰 <linuxrat@gnuchina.org>
将vimtutor1.4中译版提交给Bram Molenaar和Sven Guckes。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值