VI编辑器的使用

vi编辑器的学习使用(一)
vi编辑器是Unix的世界中一个相当强大的可视化编辑器,有人曾这样的说过在世界上有三种人:一种是使用Vi的,另一种是使用是Emacs的,剩下的是第三种人。由此可以看出Vi和Emacs的强大。在有关Linux的论坛中关于Vi和Emacs的论争也是一直不断的。现在看来这样的论争也实在是没有办法的,这两个编辑器是同样的强大,同样有不同的人在支持。在个人看来就是同时喜欢这两个的。然而他的这种强大也是要会付出一定的代价,他的学习和使用也是相当的复杂的,在学习的起点常常会面临着一个巨大的学习困难。但是只要过了这样的一段时间你就可以来体会Vi的强大了。

一Vi的启动与退出在现在的Linux世界中还有一个发行版本被称为是Vi的改进版本,所以被称为是Vim,也就是ViImproved的意思。在现在的一般的Linux的发行版本中常常是Vim的。要启动Vi可以终端窗口输入vi或是vim,这样就可以终端窗口打开一个Vi的编辑窗口。或者是输入gvim,这样就可以打开一个类似于gedit这样的文本编辑器,他有一些菜单,但是大部分的功能仍是通过命令行的方式来完成的。在vi中有两种模式:一是命令模式,一是编辑模式。命令模式是用来输入命令行来完成工作的。而编辑模式是用来编辑文本的。在两种模式中切换可以通过Esc来完成。在我们完成了文本编辑以后可以这样的来退出:

:q 这是退出的命令,如果你已经做过了改动,那么就会提示错误。

:q!这也是一个退出命令,与上一个不同的是,我已经做过了改动,但是我想放弃这些改动,从而用这样的命令。

:w 这是文件写入的命令,但是执行完这个命令后并没有退出vi.

:wq 这个命令的意思是保存并退出

二Vi的基本编辑命令在启动了Vi以后是在命令模式的,这是可以输入i(insert)进入插入模式。这时会在Vi窗口的下端显示出你这时的状态。这时你就可以来输入文本了。在这样的情况下,你可以用Backspace来Delete来删除一个字符。用方向键来控制光标。其实在知道了这样的几个命令后就可以用来编辑文档了。但是这样的几个命令并不能保证你能高效的来完成你的工作。而事实上在命令模式下我们用键盘来移动光标而不用将手离开键盘去按方向键,这样就可以大大的增强你的编辑速度。

我们可以用h(left),j(down),k(up),l(right)这几个键来移动光标。我们可以将光标放在一个字符上同时按下x键来删除这个字符。

我们可以将光标放在某一行同时按下dd,这样就可以将这一行删除。

当然有的时候也许我们做了一些事情,不过我我们觉得以前的要更好一些,我们想要恢复到以前的状态,在这样的情况下我们可以u和U这两个命令。u要撤销上一次的修改,而U将是撤销所记录的所有的修改。

而有的时候我们觉得现在的工作要好一些,我们希望撤销刚才所做的撤销工作,也就是我们要重做这些工作,这时我们可以使用CTRL_R命令来达到我们的目的。

有时我们可以使用新增的命令,使用a和A来完成这样的工作。a在当前光标所在的字符后面进入插入状态,而A是在一行的末尾进入插入状态。使用这两个命令可以方便我们进行文本的插入操作。

在vi的编辑模式中,是将回车换行看作新的一行的开始。有时我们希望新插入一行,这时可以使用o和O这两个命令来完成。o是在文本的下面新增一行并进入插入模式,而O是在文本的上一行新增一行并进入插入模式。

有了这些命令,现在的我们就可以比较方便的来完成我们的文本编辑工作了。但是有时候得到在线的帮助对于我们来说显得更为重要,要得到vi的帮助,可以在命令的模式下输入:help,这样就可以得到vi的在线帮助了。要想退出帮助,可以输入退出命令,:q.

为得到更明确的帮助,我们可以明确的指明我们所需要知道的内容。例如我们想知道关于x一些更详细的内容我们可以输入:helpx.我们要想得到其他的帮助,我们就可以这样来得到我们想要的帮助。

在vi中可以使用数字和命令组合的方式得到新的命令,例如3h,这样就可向左移动3个字符。同样可以使用数字和其他的移动键进行组合来达到快速移到的目的。也可以是数字和其他的命令组合形成新的命令,例如3x就可一次删除3个字符。为了我们更快速的掌握vi的使用,vi本身也提供了一个学习的教程,只要你能耐心的做下来,我想使用vi对你来说应不再是一件难事了。进入vi的学习教程,可以在终端输入vitutor.这样就可以进入vi的学习教程,为了得到更多的帮助信息,可以在vi的窗口内输入:helptutor.这样就会得到更多的关开Tutor的帮助信息的。

vi编辑器的学习使用(二)
vi学习笔记之二在上一节的学习中,我们只是学习一些使用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可以使我们快速的移到第3行。而1G则可以使我们移到文章的最顶端,而G则是定位到文章的最后一行。那么在vi的编辑中我们又如何来知道我们在第几行呢?我们可以使用:setnumber来叫vi加上行号,这样我们就可以很容易的知道我们所在的行号了,取消行号的命令为:setnonumber。那么在没有行号的文章中我们又如何来知道我们所处在的位置呢?我们可以使用ctrl+G命令来知道。这个命令可以清楚到告诉我们总共有多少行,而当前我们又在多少行,以及所占的百分比等信息。在我们进行编辑的过程中我们可以使用CTRL-U和CTRF-D来进行上下的翻页。当然这样的功能也可以通过功能键来实现。在我们的文本编辑过程中另一件我们要常做的事情就是文本的删除了。我们可以使用dd来删除一行,我们还可以使用dw来删除一个字符。删除的命令操作d是一个相当灵活的命令,我们可以用他来进组合来完成工作。例如d3w则是一次删除3个字符,而3dw则是指一次删除一个字符,而这样的操作进行3次,即总的是也是删掉3个字符。而在d$则是删除从当前位置到本行结束的所有字符.也d命令相类似是的c命令,这是一个更改的命令,所不同的是他在删除一个字符的同时进入插入状态,这样我们就可以进行另外的文本操作了。另一个有兴趣的命令则是.命令。.命令可以使vi重复执行刚才执行的命令。在我们进行文本编辑的时候,有时要用到合并行的命令,也就是将几行合并为一行,这时我们可以使用J命令。这个命令可以将本行和下一行合并为一行。当然,就像大多数的Linux命令一样,我们可以使用数字来使几行合并为一行。例如3J就可以将当前行下的三行(包括当前行)合并为一行。那么我们又如何时来做替换文本的工作呢?我们可以使用r的命令。例如rx就可以当前光标下的字符替换为x。我们当然也是可以用数字来组合以形成新的命令来进行工作,例如5rd就是将当前光标以后的5个字符替换为d。有时我们要进行大小写的转换,这时我们就可以用~命令。这个命令可以实现在大小写的转换。在vi中一个比较有趣的东西便是键盘宏了,这个可以使我们实现多个命令的记录,有时这样可以高效的完成我们的工作。例如我们现在的文本是stdio.h stdlib.h math.h 但是我们都知道在C语言的编辑中我们所需要的是#include #include #include如何来做到?如果你有足够的耐心可以一句一句的来加,但是在这里我们可以使用键盘宏来完成我们的工作,这样我们就可以体会到他的强大之处了。开始输入qa.其中的a是一个宏的名字,我们可以用任何我们喜欢的字母来代替,q是开始录制宏的命令标志。这样我们就可以开始我们的宏输入了:^ 移到一行的开始 i#include < 在一行的开始插入#include < $移到一行的结束 a> 在结束处加入> j 移到下一行 q结束宏的录制这样当我们要使用宏时就可以输入@a,这样就可以执行这个宏了。我们还可以在执行命令前加上数字来告诉vi执行几次。这样我们就可以快速的完成我们的一些工作了。在vi的编辑中我们还可以输入一些由平常的键盘不可以输入的字符,有关这样的信息我们可以输入:helpdigraphs得到更多的信息。(注:在vi中我们通常所指的一行是以回车做为标志的,即只有输入回车才算是一行的结束,从而开始新的一行)
vi编辑器的学习使用(三)
vi学习使用笔记之三我们在使用vi进行编辑文本的时候常作的一件事就是要在所编辑的文本中进行查找。如何快速的查找到我们想要的东西呢?在vi中我们可以使用f,F和t,T来进行向前或是向后查找。除了这些命令,我们还可以使用其他的一些命令来快速高效的完成我们的工作。在vi的编辑操作中,我们可以使用/string命令来查找字符串string,打下回车后,光标就能跳到正确的地方。在这个命令中/后的字符是我们想要查打的字符,而回车键则表明了命令的结束。但是有时我们所想要查找的字符具有特殊的意义,例如.*[]^%?$~等等,那么我们又如何来查找这些具有特殊意义的字符呢?这时我们可以使用\放在所要查找的字符前,这样再使用/来查找就可以正确的查找了。有时我们在进行查找操作时想要查找的内容并不仅在一处,我们想要做的是在整个文章中进行查找。那么我们又如何来进行我们刚才的查找命令呢?我们可以这样的来做:/。这样我们就可以继续我们刚才的查找操作了。在这里回车是命令结束的标志。我们还可以使用n命令来继续刚才的查找命令。这两个命令都能达到同样的效果,但是显然用n可以有更少的键盘操作。偷懒嘛:)在vi中他还具有记录查找命令历史的作用,这样我们就不用输入刚才输入的查找命令了,而是只需要在他所记录的查找命令进行一下查找就可以了。例如你刚才做过的三次查找分别是:/one,/two,/three.而现在输入/,然后按方向键的上或是下我们就看到刚才查找的内容显示在vi的下面,这时只要打下回车我们就会找到我们要找的内容了。当然在vi中还在一些其他的查找选项,例如我们可选择高亮的显示查找的文本,命令为::sethlsearch,关闭高亮显示的命令为::setnohlsearch.如果也想同时关掉刚才高亮显示的结果,可以用这样的命令::nohlsearch。在我们进行查找的选项中,我们还可以有这样的命令::setincsearch。在我们打开这个选项以后,我们在进行查找时就会显示出不断匹配的过程。例如你想查找的内容是include,在打开这个选项后你可以输入/i,光标定位在i上,再继续输入n光标定位在in上,如此直到查打到我们所要求的。关闭这个选项的命令为::setnoincsearch。一般来说我们在进行查找时总是在向前查找,那么又如何来向后查找呢?我们可以使用?命令。这个命令就是向后查找的命令。而还有一个命令N是逆向查找的命令,他可以实现立即反向查找。(注:在查找的时候我们还可以用一些其他的表达式来进行查找,例如/^string是在开头进行查找,而/string$是在一行的末尾进行查找。不过看书我的理解是这样的,不过总是试验不成。而/c.m则是查找所有第一个字母为c,而第三个字母为m的字串,由此可以实现一些查找的匹配
vi编辑器的学习使用(四)
vi学习使用笔记之四我想我们在接触了vi以前一定会用一些其他的编辑器,在那些的编辑器里复制,剪切和粘贴都是最平常的操作,而在vi中这些操作也是同样的存在的。在vi编辑器有一个注册的概念(conceptofregister),正是这个概念使我们可以时行多次的剪切和粘贴等的操作。在一般的编辑器中我们被限制只有一个剪切板可以用,而在vi中我们最多时可以有26个剪切板可以来使用,这样就会大大的提高我们的完成工作的效率。而在vi中更是有一个相当强大的功能那就是他可以同时处理多个文件。如此强大的功能我们又来如何的操作呢?在vi的编辑中我们可以使用d或是x来删除文本,但是经过这样的操作所删除掉的文本并没有被vi所丢弃,而是被保存起来。我们可以使用p命令来粘贴刚刚所删掉的内容。下面我们可以来试一下看一下他是如何工作的。我们可以在vi中随意的输入几行,然后我们移动到其中的一行,用dd命令来删掉其中的一行,这时我们就不会再在vi中看见他。如何叫他再回来?我们可以将光标移到任意的地方,然后用p命令,我们就会看到刚才被删除掉的内容又回来了。同样我们使用x命令来删除的东西也可以这样的粘贴回来。所不同的就是我们用dd来删除一行再用p命令时是在当前光标的下一行粘贴,而删除一个单词再用p命令来粘贴时是在当光标处粘贴。有了这样的命令有时我们就可以来处理我们输入错误的单词了。例如我们不小心将the输入成了teh,这时我们可以将光标移到e的位置,用x命令删掉,再用p命令粘贴回来,这时我们就会发现现在的输入正是我们想要的输入了。p命令可以在一个文件中使用几次,每一次都可以将刚删除的内容重新粘贴在我们所希望的地方。当然这个命令也可以使用数字做前缀来明确的指出所要执行的次数。在使用vi进行文本编辑的过程中我们还可以对某一行进行标记,做法为我们将光标移到某一行,用命令ma来进行标记。在这里m是标记的命令,a是我们对这一行所做的标记的名称,当然我们也可以使用其他的标记名称,必竟我们是有26个字母可以用的嘛:)。在做了这样的标记以后我们可以快速的移到被标记的地方,‘a就可以使我们快速的移到刚才我们所做标记的地方。这里’是单引号,这时我们就会移到被做标记那一行的行首。我们也可以使用`a来移到我们所做标记的地方,这里`是反引号,也就是数字键1左边的那一个,不要弄错了噢:),这时我们就会移到所做标记时光标所在的位置,可以说是更精确啊。这也是这两个命令的不同之处。在进行文本编辑时我们可以列出当前所做的所有的标记。命令为::marks。这时vi就会列出当前的所有的标记。当然如果我们将做了标记的那一行删除的话所做的标记也就不存了。我们用标记不仅可以快速的移到做了标记的行,而且还可以用标记来删除掉一行,例如我们在某一行用ma做了标记,然后我们移到这一行的底部,这样我们就可以用在d‘a来删掉这一行。可以说这也是标记命令提供给我们的方便吧。在vi中还有一个命令可以提供复制的操作,那就是y命令。yy命令可以复制一行,然后我们可以用p命令来粘贴。这时我们也可用标记命令来组合使用,我们可以在一行用ma标记此行,然后将光标移到这一行的底部,用y’a命令就可以来复制这一行了。然后到我们所希望的地方用p命令来粘贴。我们也可以使用Y命令来复制一行,或是用数字做前缀来明确的指明复制几行,然后用p命令粘贴到我们所希望的地方。在vi中还有一个比较有趣的命令便是!命令。这个命令告诉vi编辑器我们要来运行一个系统命令,这时vi就会将以后的输入做为一个命令来运行,运行的结果也就是输出将替代当前光标所在的行的内容。例如我们在Linux中知道sort是一个排序的命令,他是将一个文件或是一些输入进行排序后输出到屏幕或是其他的文件。那么我们想对vi中的内容进行排序来如何做呢?这时我们可以将光标放在文本的开头的一行,输入!10G,这时vi就知道要到10行,也就是我们要操作的内容是第1行到第10行,这时在vi的下端就会显示出!,这时我们就可以输入命令了,sort。也就是我们要输入的完整的命令应为:!10Gsort。这样回车以后vi就会对文本中的10行进行操作,将操作的结果替换掉现在vi中的文本来显示。而!!是在一行运行命令,并且输入的结果为当前行的内容。例如我们输入!!ls,就会将ls的执行结果显示在vi中,并且是当前的内容,如果此行原先有内容将会被替换掉。如果我们完成一个文件的编辑而要开始一个新的编辑时我们最平常的做法就是退出当前的文件而重启vi开始一个新的编辑。事实我们可以直接在vi中输入:vifile而开始一个新文件的编辑。如果当前的文件你没有保存,vi会给出警告的信息,这时你可以输入:write来保存当前的文件。你也可以用:vi!file强制开始一个新文件的编辑。与vi相类似的一个命令是:view,所不同的是他以只读的方式打开一个文件,这时vi会给出警告信息,但是你也可以进行修改,只是你不能进行保存,如果你要保存,vi就会给出提示。当然在这样的情况下你可以用命令:write!来强制保存。我们还可以使用vi来编辑多个文件。我们可以在终端输入vi file1 file2file3,这样我们就可以来编辑多个文件了,在默认的情况下vi来显示第一个文件,如果要切换到下一个文件我们可以输入:next,这样我们就可以切换到第二个文件了。如果你没有保存,vi会给出提示信息,这时也就不可能切换到第二个文件了。这时我们可以输入:write进行保存然后再切换到第二个文件,或者是我们输入:write:next.来保存后再切换到第二个文件。或者是我们可以用:wnext来简写这个命令。当然我们也可以用命令:next!来强制切换到第二个文件。当然这样你所做的改动也就会丢失掉。为了避免这样的情况,我们可以打开vi的自动保存功能。:setautowrite.这样我们就不会为没有保存而收到提示信息了。关闭自动保存的命令为::setnoautowrite.当然next命令也可以用数字做前缀来指明所要执行的次数。如何来确定我们在编辑哪一个文件呢?我们可以用这样的命令来明确我们所编辑的文件::args.这个命令会显示出我们所打开的文件,同时会显示我们正在编辑的文件。如果我们想要回到上一个文件我们可以用这样的命令::previous或是:Next.如果你要保存当前的文件并切换到前一个文件可以用这样的命令::wprevious或是:wNext.如果我们要编辑第一个文件我们可以用:first或是:rewind来快速的切换到第一个文件,同理如果我们要编辑最后一个文件我们可以用:last来快速切换。如果我们在一个文件中进行一些改动,再切换到另一个文件中进编辑,这时我们就可以用CTRL_^来切换这两个文件。
vi编辑器的学习使用(五)
在使用vi进行文本编辑的时候我们也可以打开多个窗口进行编辑。这也正是vi编辑器的强大这处。那么我们如何来打开多个窗口进行文本编辑呢?我们又如何在多个文本窗口中进行切换呢?如何来控制窗口的大小呢?在vi编辑器还有一个缓冲区的概念,利用缓冲区我们可以进行多文本的编辑。打开一个窗口最简单的方法就是下面的命令::split。输入这样的命令后vi就会将当前的窗口平分为两个。并且在这两个窗口中显示的是同一篇文章。如果你在其中的一个窗口进行文编辑,那么另一个窗口也会同步的显示出你所做的工作。如何在两个窗口中进行切换呢?在gvim中要方便得多,只要用鼠标就可以进行窗口的切换。而在vim中则需要用命令来实现。CTRL_Ww这个命令可以实现在两个文本窗口中进行切换。切换窗口还有另外的命令:CTRL_Wj可以将光标定位在下一个窗口中,而CTRL_Wk可以将光标定位在上一个窗口中。如果想关闭一个窗口可以用命令ZZ或是:q.当然了CTRL_Wc也可以做到同样的事情。我们打开一个窗口一般并不是要在两个窗口中显示同一个文件,我们常常需要的是在两个窗口中显示两个文件来加快文件编辑的工作。如何在新窗口中打开一个文件来进行编辑呢?我们可以用这样的命令::splitfile.这样我们就可以在另一个窗口中打开文件file开始我们的编辑工作了:)。那么我们如何来控制窗口的大小呢?我们在输入split命令时可以带上一个参数,这个参数也就指定了打开的窗口的大小。例如我们可以这样的输入::3 splitfile。这样我们就可以在一个新窗口中打开文件file,而这个窗口的大小有三行。当然我们也可以将这个命令中的空格去掉,也就是写成::3splitfile这样也可以达到同样的作用。与split命令相类似的一个命令就是:new命令。所不同的就是split命令打开一个新窗口,但是在两个窗口中显示同一个文件,而new命令则是打开一个新窗口开始一个新文件的编辑.我们还可以打开一个新窗口,在这个窗口中打开一个文件来读。命令为:sview。这个命令是:split和:view这两个命令的组合。在这样的多文本窗口中进行操作时我们常做一个工作就是要改变窗口的大小。可以使我们来改变窗口大小的命令为: CTRL_W+这个命令增大窗口,默认增量为1CTRL_W-这个命令减小窗口,默认值为1CTRL_W=这个命令可以将几个窗口的大小变得相等。另外还有一个命令countCTRL_W_可以使得当前窗口变得count这样的高。如果没有指定count将会使得当前窗口变得尽可能的最大。 :buffers这个命令就会列出当前的编辑中所有的缓冲区状态。在这个状态列表中,前面的数字就是缓冲区的数字标记,第二个标记就是缓冲区当前的状态,而后一个则表明与空上缓冲区所关联的文件名。他的一些状态是这样的: -非活动的缓冲区(Inactive Buffer) h 隐藏的缓冲区(Buffer is hidden)% 当前的缓冲区(current buffer) # 交换缓冲区(Alternate buffer) +文件已经被修改如果我们要选择一个缓冲区我们可以用这样的命令::buffernumbernumber就是缓冲区状态列表中所显示出来的数字。我们也可以用文件名字来选择缓冲区::buffer file关于缓冲区有一些有用的命令可以快速的完成我们的工作:我们可以用下面的命令来分割当前的窗口开始编辑一个缓冲区::sbuffernumber如果我们指明了数字,那么当前窗口就会显示数字所标记的那缓冲区中的内容,而如果没有指明数字,那么就会利用当前的缓冲区。当然这个命令我们也可以用文件名来做为参数进行操作。对于缓冲区还有一些其他相关的命令: :bnext到下一个缓冲区 :count bnext 到下一个缓冲区执行count次 :count sbnext命令:split 和 :count bnext组合形成的命令 :count bprevious到前一个缓冲区count次 :count sbprevious :count bNext与:bprevious作用相同 :blast 到最后一个缓冲区 :brewind到第一个缓冲区
vi编辑器的学习使用(六)
vi编辑器学习使用之六在现在的vi版本,或者是说是在vim中,与其先辈区分开来的一个特征就是现在的版本中有一个可视模式。这种可视模式可以使你加亮一个文本块然后整体进行命令操作。例如你可以用高亮显示出一个文本块,然后用d命令来删除这个文本块。这种可视模式与其他的编辑相比的一个好处就是你可以在做改动以前看到你的操作对于所编辑的文本产生的影响。那么我们如何为用这种有趣的可视化模式来进行我们的文本编辑工作呢?要进入可视化模式,我们可以输主命令v,这样在vi的状态行就会显示我们已经进行可视化模式了。在这样的模式下,我们移动光标,那么在光标起始的位置和光标现在的位置之间的文本都会以高亮显示的。这时我们可以对这些高亮显示的文本整体进行命令操作,例如这时我们可以输入d命令,那么这些高亮显示的文本就会被删除掉。一般来说可以化模式可以具体的分为三种可视化模式,一种就是我们刚才用v命令进入的所谓的字符式可视模式(character-by-charactervisualmode)。在这种模式下,我们在进行文本选择以高亮显示时是以字符为单位的,我们可以一个字符字符的来选择。而第二种就是所谓的行可视化模式(linewise visualmode),这时我们可以输入V命令来进入这种可视化模式。这时我们所进行的操作是在以行为单位来进行的。还有一个命令可以使我们进入可视化模式,这就是CTRL_v,这就是我们所要说到第三种可视化模式,他可以使一个矩形内的文本高亮显示,然后以这些文本为整体进行编辑操作。在可视模式下我们也可以得到一些相关的帮助信息。当然在输入命令时要在所希望帮助的名称前有v_做为前缀。例如我们想得到一些关于在可视模式下进行删除操作的命令,我们可以这样的来得到帮助信息::help v_d当我们要退出可视化模式时,我们可以按ESC键退出。当然CTRL_c也可达到同样的作用。与ESC作用相同的还有CTRL_和CTRL_N.在可视化模式下我们可以进行各种各样的编辑操作。如d命令可以删除那些高亮显示的文本内容,而D命令只是来删除一行,哪怕这一行中只有部分文本是高亮显示的。与d和D命令类似的是复制y和Y命令。y命令是将高亮显示的文本复制下来,而Y只是将一行文本复制下来。c命令可以将以高亮显示的文本删除掉然后进入编辑模式,而C命令的作用与其相类似,所不同的只是C命令只是删除一行文本。我们还可以利用可视化模式将几行文本合并为一行。J命令可以将高亮显示的文本内容合并为一行,同时以空格来区分各行,而如果我们不希望看到这些空格,我们可以使用gJ命令。我们在可视模式下进行文本编辑时也可以进行可视化模式的选择和切换。你可以在任何情况下进行这种切换,而切换的做法只是简单的输入那种可视化的命令操作。例如现在我们在字符模式的可视化模式下进行操作,而现在我们想切换到块模式的可视化模式,这时我们只是要简单的输入CTRL_v可以了。当然我们也可以先用ESC来关闭当前的可视化模式,然后再选择我们所希望的可视化模式.对于程序员来说似乎这种可视化模式会有更大的用处,我们可以用一种可视化模式来高亮显示文本,然后用>命令来进行文本的缩进,我们还可以用<命令来进行相反的缩进。我们更可以用CTRL_]跳转到某一个函数定义的地方。我们还可以利用可视化模式的高亮文本进行做法关键字用man命令来得到更多的信息。当然这必须是man可以查找得到的内容对于可视化模式的文本编辑还有一个有趣的现象,这个主要的表现在CTRL_v所定义的文本块内。例如我们用这个命令来定义了一个文本块,然后输入Istring,这个命令中I是插入文本的命令,string是我们要插的文本,而Esc则是结束插入操作的命令。这时就会看到我们所输入的文本显示在文本块的左侧,也就是开头的地方,当我们结束插入操作时我们就会惊奇的发现我们所输入的文本也会同时出现我们所定义的文本块内所包含的其他行的开头部分。同样当我们用c命令来操作时我们也会发现类似的情况。当然了,在用c这个命令进行操作时你所输入的文本应不超过一行,否则的话将会只有第一行的文本会被改动。而C命令也会有相类似的情况。我们也可以类似的来得到一些关于块操作的命令帮助:例如::helpv_b_r
vi编辑器的学习使用(七)
vi编辑器学习使用之七
vi是一个强大的编辑器,他不仅可以用来处理我们平时的文本工作,他还可以用写程序文件。在vi中有许多命令可以方便的完成我们的程序处理工作。在用vi进行程序处理时,vi充分的显示出来了他的强大之处,他可以实现在语法加亮显示,实现自动缩进,实现括号匹配,还可以在程序中实现查找和跳转。
我们可以用这样的命令在vi中打开语法加亮显示的功能::syntaxon。这样以后我们在输入的字符中,vi就会自动的识别出关键字,字符串以及其他的一些语法元素,并以不同的颜色来显示出来。这对于程序员来说是一个巨大的帮助。当然你可以自定义语法加亮显示的颜色。
一般情况下,vi的这种语法加亮显示的功能可以工作的很好,但是有时我们也遇到一些小小的麻烦。也许我们都遇到过背景是白色而字体是浅黄色的情况,在这样的情况下是非常难读的。vi编辑器有两种语法加亮的办法,一种是当背景为浅色时用,而另一种是当背景为深色时用的。当我们启动vi时,他会检测我们所使用的端是哪一种背景颜色,是浅色还是深色,然后再应用语法加亮的颜色方案。当然了,有的时候vi也是可以检测出错的。我们可以用这样的命令来知道我们的背景的情况::setbackground?。这样vi就会在底端给出我们具体的显示。如果vi检测的并不正确,我们可以用这样的命令来为他赋下正确的值::setbackground=light或是:setbackground=dark.当然我们要清楚的知道,这样的操作要在打开语法加亮的命令之前来执行。vi实现语法加亮显示的功能是通文件的扩展名来文件的类型从而实现功能的。但是有时我们在编辑一个C程序文件时并没有使用传统的扩展名,那么我们如何来告诉vi我们正在编辑的文件的类型呢?解决的办法就是用filetype这个选项。例如我们要告诉vi我们正在编辑的是一个C程序文件我们可以这样的来做::setfiletype=c。这样以后vi就会知道我们正在编辑的是一个C程序文件并正确的加亮语法显示。
除了语法加亮显示的功能以外,vi还提供了缩进的功能。命令<<将使当前行向左移动一个移位宽度,而命令>>将使当前向右移动一个移位宽度。这个所谓的是移位宽度具体是多少呢?在vi中默认的是八个空格的宽度。然而平时的经验可以表明当缩进是四个空格宽度时最有利于程序的阅读。那么我们如何将这个移动宽度定为四个空格的长度呢?这时我们就可以用下面的命令来做到::setshiftwidth=4.而这时的命令仅是对当前的一行有效,我们也可以像其他的vi命令一样的在命令前用数字做为前缀还指定命令作用的范围。如5<<就将缩进五行。
在vi中还有许多自动进行缩进的选项,一般有以下的几种:C缩进(cindent):这是C语言的缩进形式,采用这样的缩进方式的程序语言有:C,C++,Java等。当采用这种缩进格式时,vi就会自动的采用标准的C语言形式。还有一种形式是smartindent:在这种缩进模式中,每一行都和前一行有相同的缩进量,同时这种缩进形式能正确的识别出花括号,当遇到右花括号(}),则取消了缩进形式。另外的一种缩进形式便是所谓的自动缩进(autoindent):在这种缩进形式中,新增加的行和前一行有相同的缩进形式。vi编辑器可以很好的识别出C,C++,Java以及其他的一些结构化程序设计语言,并且能用C语言的缩进格式来很好的处理程序的缩进结构。我们可以用这样的命令来打开C语言形式的缩进结构::setcindent.这样以后vi编辑器就会用C语言的缩进形式来正确的处理程序文件。一般而言C缩进结构可以满中绝大多数人的需要,当然了不同的人有不同的编程风格,如果你不喜欢这样的缩进结构,你可以自己定义自己的缩进形式。也许我们做程序设计的人并不想每一次想要编辑C程序文件时都要用命令:setcindent来打开C缩进形式,为了解决这样的问题,我们可以改写vi的配置文件来使vi能够自动的完成这样的工作。我们在.vimrc(UNIX/LINUX)或是_vimrc(WINDOWS)中加入下面的几句:
:filetype on
:autocmd FileType c,cpp:set cindent
第一行是打开vi文件类型识别功能,第二行是如果所识别的文件类型为C或是C++文件那么便打C缩进形式。
在vi中除了C缩进形式以外我们还有smartindent缩进形式可以来用。在smartindent这种缩进模式中能够正确的识别出{和}。同时增加了识C语言关键字的功能。如果一行是以#开头的,那么这种格式将会被特殊对待而不采用缩进格式。这种缩进格式不如cindent,但是却强于autoindent。另外的一种缩进形式便函是autoindent。在其他的一些结构化程序设计语言如Pascal,Per或是Python语言中,我们所希望的是新的一行能和上一行有相同的缩进形式,这时我们便可以打开autoindent缩进形式,:setautoindent。这样就可以很好的来满足我们的要求了。
vi不仅有这些功能,而且还有更多的功能来快速的处理程序文件。其中一个便是可以快速的在文件中定位变量及宏定义等。其中一些常用到的命令有:
[CTRL_I/]CTRL_I 
    在本文件中以及在由#include命令包含进来的文件中进行查找光标下面的文字
gd/gD      查找变量的定义
[CTRL_D/]CTRL_D      跳到宏定义的地方
[d/]d/[D/]D      显示宏定义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值