vim的模式(vim系列之二)
介绍
在前面章节,我们已经讨论过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键,会把光标定位到当前位置的前面,并且进入“插入模式”。如果是希望在当前位置添加(a
ppend)文字,可以按‘a'键盘。
- 按下 a
- 输入 g (完成第一个单词变成了“Dapping”)
- 按下Esc键,切换回正常模式
同“i”和“I”的作用类似,如果你希望在行尾添加文件,你可以使用'A'.
- 按下 A
- 输入 . (好吧,完成了标准的一句,有标点符号了。)
- 按下Esc键,切换回正常模式
总结一下:
命令 动作
i 在光标前面插入(i
nsert)
I 行首插入文字
a 在光标后面添加(a
ppend)
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(r
eplace)。
- 移动光标到“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
来改变(c
hange)这些文本.
改动完成, 按下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