介绍

在前面章节,我们已经讨论过Vim的各种模式,现在,我们将集如更加深入的讨论,谈一下在各种模式下我们能做什么。

模式类型

vim有三种模式:

  • 正常模式,这种模式下可以运行各种命令,这是缺省模式。

  • 插入模式,可以在这种模式下面插入文字。

  • 可视模式,你可以“可视化的”选择一部分文字,然后针对这部分文字进行处理。

正常模式

默认情况下,vim处在这种模式下面,我们能做什么呢?

输入:echo "hello world",然后回车。你会看到系统会打印出“hello world!”。现在你所做的就是,运行了一个叫echo的命令,这个命令的作用就是把它后面的字符显示出来。

输入/hello,然后回车。vim会开始寻找“hello”这个词语,如果找到,就会把光标移动到那个地方。

上面只是两个示例,vim在正常模式下有各式各样的命令,在以后的章节,我们会看到!

如何使用帮助

几乎和理解“正常模式”一样,知道:help命令也很重要,你可以利用它来学习更多的命令。

记住,你不需要记住vim命令的每一个细节,你只需要在你需要的时候能找到它们就够了。譬如,输入:help usr_toc会把我们带到手册目录,输入:help usr_index会帮忙我们寻找感兴趣的特定章节信息。

即使你没有记住上面的2个命令,你也可以简单的输入F1或者输入:help

插入模式

我们可以使用i键来让vim进入插入模式(insert mode).

有2种方法,可以在“正常模式”和“插入模式”之间转换:

  • 运行 :e dapping.txt
  • 按下 i 键
  • 输入下面的文字(这段文字包含一些错误,正好可以利用它来进行一些改正操作,请保证输入): means being determined about bing determined and being passionate about being passionate
  • 按下 ESC 键,切换回正常模式
  • 运行 :w

噢,我们似乎在开头就忘记输入了一个单词,并且现在光标出自行尾,我们现在怎么改正他?

最快的改变方法是什么呢?使用鼠标移动光标到行首?使用键盘方向键移动到行首?还是使用HOME键来移动到行首,然后按下i键来重新输入。

其实最快的方法,是按I键盘,没错,就是一个大写的'i'.

  • 按下 I
  • 输入 Dappin
  • 按下 Esc,切换到正常模式

我们可以看到I键的作用,就是把光标移动到行首,然后切换到插入模式进行输入

另外请注意输入完成立刻切换会正常模式是多么重要。这是因为“正常模式”是你所有编辑工作的所在,包括“改动/编辑”等等。

现在看看“i”命令的作用。按下i键,会把光标定位到当前位置的前面,并且进入“插入模式”。如果是希望在当前位置添加(append)文字,可以按‘a'键盘。

  • 按下 a
  • 输入 g (完成第一个单词变成了“Dapping”)
  • 按下Esc键,切换回正常模式

同“i”和“I”的作用类似,如果你希望在行尾添加文件,你可以使用'A'.

  • 按下 A
  • 输入 . (好吧,完成了标准的一句,有标点符号了。)
  • 按下Esc键,切换回正常模式

总结一下:

命令 动作 i 在光标前面插入(insert) I 行首插入文字 a 在光标后面添加(append) A 行尾添加文字

注意一下,大小写对于命令的影响。

现在我们可以在一行以内快速的移动了,下面让我们看看如何开始新的一行。

  • 按下 o
  • 输入 I'm a rapper.
  • 按下Esc键,切换回正常模式

另外还有一个“O”。 命令 动作 o 在光标下面插入一行 O 在光标上面插入一行

现在我们刚才输入的文字有点错误,应该是dapper,而不是rapper,现在我们要改一下,怎么最有效率呢?

我们可以按下"i"进入插入模式,按下DEL键来删除“r”,然后输入“d”,然后按下Esc键,切换回正常模式。对于这样一个简单的改动需要4个步骤,还有更好的办法吗?你可以使用“s”("s"ubstitute)键。

  • 移动光标到‘r’字符
  • 按下 s
  • 输入 d
  • 按下Esc键,切换回正常模式

好吧。其实上面的操作也没有节省多少时间。但是现在想象一下,如果你日复一日的进行,这将节省多少时间!尽可能快的处理那些繁琐的重复劳动,可以让我们时间花费到更有创造性更有意思的事情上面去。

另外,s的大写“S”也有自己的功能,它是整行替换。

  • 按下 S
  • 输入 Be a sinner.
  • 按下Esc键,切换回正常模式

命令 动作 s 替换当前字符 S 替换当前行所有字符

替换一个字符,还有更高效的方法吗?有,r(replace)。

  • 移动光标到“sinner”的第一个字符
  • 按下 r
  • 输入 d

注意,我们并没有输入Esc,它就自动切换回“正常模式”了。

那么“R”(r的大写字符)有什么用呢?

  • 移动光标到“dinner”的i
  • 按下 R
  • 输入 app(现在字符变成了“dapper”)
  • 按下Esc键,切换回正常模式

最后,我们的文本变成了下面的样子:

Dapping means being determined about bing determined and being passionate about being passionate.
Be a dapper.

我们在这一章里面已经讲了很多,但我认为这只是万里长征的第一步。一旦你理解了这里,你就会更加理解vim的灵魂和运行方式。

勤加练习,理解一下模式的工作方式和切换方式。

如果你喜欢阅读一些说明,你可以使用":help inserting"和":help replacing"。

可视模式

设想一下,如果你想改动一大段单词,怎么办?

一种方法是,在文字的开头按下鼠标左键,然后拖动鼠标到选择的末尾,然后释放左键。这当然也是一种解决方法。我们可以使用Del或者Backsapce键来擅长这些选定字符,然后重新输入。但这并不是一种高效的方法。

最有效的方法是,移动光标到需要改动的单词,按下v进入“可视化模式”,利用移动快捷键盘(譬如5e,就会移动到当前字符后面的第五个单词的最后一个字母),然后按下c来改变(change)这些文本.

改动完成, 按下Esc键,切换回正常模式!

总结

下面是一个图来显示不同模式之间的切换:

+---------------+ i,I,a,A,o,O,r,R,s,S +---------------+
| Normal        +----------->---------+ Insert        |
| mode          |                     | mode          |
|               |-----------<---------+               +
+ --------------+            Esc      +               +

      | |
    v | | Esc
      | |

+------------------+
| Visual           |
|  mode            |
+------------------+

查看“:help vim-modes-intro”和“:help mode-switching”查看更多模式的概念和切换操作。

分享道

blog comments powered by Disqus

Published

01 September 2013

Tags