vi编辑器命令,编辑器vim的三种模式
六学习笔记2
在上一节中,我们只学习了一些使用vi进行文本编辑的基本命令。使用这些基本命令,我们可以完成一般的文本编辑任务。在本节中,我们将学习一些其他的编辑命令,其中将包括其他光标移动命令,如何在一行中快速找到我们想要的内容,其他用于删除和更改文本的命令,键盘宏和特殊字符输入。
在vi的编辑中,我们可以有多种光标移动命令:我们可以用W命令向前移动一个字符,用B命令向后移动一个字符。就像其他vi命令一样,我们可以使用数字作为前缀来组成新的命令以快速移动。比如4w前移4个字,5b后移5个字。以及如何在编辑的过程中快速移动到一行的开头或结尾?在vi中,$和$可以做到这一点。$可以将光标移动到行尾,而$可以将光标移动到行首。$命令可以与数字组合形成新的移动命令,而$命令也可以与数字组合。但是,合并后的新命令中的数字不起作用。在我们的文本编辑中,我们会移动光标,这是我们经常做的事情,但我们很快就会发现,找到我们要找的字符串也是我们经常做的事情。那么如何在文本编辑中快速找到我们想要的字符呢?在vi的编辑命令中有几个这样的小命令可以帮助我们做到这一点:F是向前搜索的命令。比如fx是向前搜索的字母x,我们也可以用F的命令快速移动到指定位置向前搜索。而f是向左搜索的命令,也就是向后搜索。例如,Fx向后搜索字母x。与F和F命令相似的是T和T命令。t命令类似于f向前搜索命令,只是当t搜索时,它将光标停在前一个字符上,而不是目标字符上。他的对面是这个F命令。当然,这些命令可以和数字组合成新的命令来完成我们的工作。在搜索的过程中,我们可以使用ESC退出搜索,开始我们的新工作。在我们的工作中,经常会被要求移动到指定的线,那么如何才能做到这一点呢?当然,我们可以使用数字和箭头键的组合来实现。这种方法虽然不够快,但是可以实现。vi中提供了一个新的命令来完成它,就是g,比如3G可以让我们快速移动到三线。而1G可以把我们移到文章的顶部,g定位在文章的最后一行。那么我们如何知道自己在vi的编辑器中处于哪一行呢?我们可以用:set number来调用vi加上行号,这样就可以很容易的知道自己所在的行号。取消行号的命令是:set nonumber。那么,如果没有行号,我们如何知道我们在文章中的位置呢?我们可以用ctrl G命令来知道。这个命令可以清楚地告诉我们总共有多少行,我们当前有多少行,以及它们的百分比。在编辑的过程中,我们可以使用CTRL-U和CTRF-D来上下翻页。当然,这个功能也可以通过功能键来实现。
我们在文本编辑过程中经常做的另一件事是删除文本。我们可以用dd删除一行,也可以用dw删除一个字符。delete的命令操作d是一个相当灵活的命令,我们可以用它来组合和完成工作。比如d3w一次删除三个字符,3dw一次删除一个字符。该操作执行三次,即总共删除三个字符。在d$中,从当前位置到该行末尾的所有字符都被删除。D命令类似于C命令,是一个更改命令。不同的是,它删除一个字符,同时进入插入状态,这样我们就可以进行另一个文本操作。另一个有趣的命令是。命令。的。命令可以让vi重复刚刚执行的命令。当我们编辑文本时,有时会使用命令合并行,即把几行合并成一行。这时,我们可以使用J命令。这个命令可以将这一行和下一行合并成一行。当然,就像大多数Linux命令一样,我们可以使用数字将几行合并成一行。例如,3J可以将当前行(包括当前行)下的三行合并为一行。那么我们什么时候替换文本呢?我们可以使用R的命令。比如rx可以把当前光标下的字符替换成x,当然我们也可以把数字组合起来组成新的命令来工作。比如5rd就是把当前光标后面的五个字符替换成d,有时候我们要进行大小写转换,那么我们可以使用~命令。该命令可以实现大小写之间的转换。
vi中比较有趣的一点是键盘宏,它可以让我们记录多个命令,有时它可以高效地完成我们的工作。例如,我们目前的文本是
标准视频
标准库
数学. h
但是我们都知道在C语言编辑中我们需要的是
#包括
#包括
#包括
怎么做?如果你足够耐心,你可以一句一句的补充,但是这里我们可以用键盘宏来完成我们的工作,让我们体会到它的强大。
输入qa。其中A是一个宏的名字,我们可以用任何我们喜欢的字母来代替,Q是开始记录宏的命令符号。所以我们可以开始我们的宏输入:
移动到行首。
I#include在行首插入#include。
将$移动到行尾
结尾的一个添加。
移动到下一行
结束宏的录制
这样,当我们想使用一个宏时,可以输入@a,这样就可以执行这个宏了。我们还可以在执行命令之前添加一个数字来告诉vi要执行多少次。这样,我们可以很快完成一些工作。
在vi的编辑中,我们还可以输入一些普通键盘无法输入的字符。对于这样的信息,我们可以进入:帮助图获取更多信息。
(注意:在vi中,我们通常所指的行是用回车来标记的,也就是说,只有输入了回车,才能视为一行的结束,从而开始新的一行)