vi编辑器的学习使用(九)
现代的Vim编辑器是基于一个古老的名为vi的编辑器设计而成的,而vi基于一个更古老的基于命令行方式的ex编辑器设计而成的。ex编辑器是在屏幕产生以前相当流行的一个编辑,他是为那时古老的标准打印而设计的。
仅管ex是基于命令行方式的,然而他也是真正意义上的一个强大而高效的编辑器。即使是在今天他也是发挥着作用。仅管现在的Vim编辑器有一套的命令系统,可是有些事情还是要用ex的命令方式才可以更好的来完成。因而现在的Vim编辑器设计了与ex编辑器的接口,我们可以在Vim中使用ex方式的命令。而那些以冒号开头的命令就是一个ex方式的命令。
如果你想执行单一的命令行方式的命令,那么你只输入:然后输入命令就可以了。例如我们在前面讨论的:set number.事实上他就是一个命令模式的命令。在执行完这个命令以后,Vim编辑器又回到了他原来的状态。我们可以通过命令:ex选择进入命令行模式。Q命令也有同样的作用。如果要选择回到正常模式(normal mode)也就是可视化模式(Visual mode),我们可以使用命令:visual.
命令:print(简写为:p)可以打印出选定的行。如果没有传递参数,他仅是打印当前的行。打印完成以后回到打印行的开头。我们也可以指定要打印的行的范围。例如命令:1,5 print就是要打印1到5行。严格来说你不必须在数5和print之间输入空格,但是如果这样做后我们就会现这个命令看起来会更好。如果你仅仅是想打印第5行,你可以用这样的命令::5 print.当然了我们也可以使用一些特殊的数字标记,例如字符$是指最后一行,因而如果我们想要打印全文的时候我们可以用这样的命令::1,$ print.而字符%是指整篇文章(1,$),因而我们也可用这样的命令来打印整篇文章::% print,而.则是指当前行,我们要打印当前可以用:print命令而不带任何参数,也可以用这样的命令:.print。我们还可以用指定句子中内容来打印选定的行。例如在我们的文章中我们可以用这样的命令来打印含有字符ex的行::/ex/ print。这样就会打印出含用ex的行,并会高亮显示出ex。同样命令:?ex? print也会达到同样的作用,而命令:?ex? print也正是打印含有ex字符的命令格式。
在前面的学习中我们曾学过标记命令m,例如我们可以在任何地方用命令ma做上标记,然后在其他的地方可以用命令‘a回到做了标记的地方。这个命令也可以与print命令组合。例如我们可以在一个地方用命令ma做上标记,然后在其他的地方用命令mb做上另外的标记,然后我们就可以执行下面的命令来打印这两个标记之间的内容了::'a,'b print
我们也可以在可视化的模式下来选定要打印的内容。例如我们用命令V进入可视化模式并选定一段内容,这时我们输入:就会在Vim的底部显示<,>两个字符,这两个字符分别指我们的选定内容的开头和结束部分。
命令:substitute可以使我们将指定的字符换成其他的字符。这个命令的格式是这样的:
:range substitute /from/to flags
在这个命令中range是指定了范围,也就说是在哪些行里做替换。而后是说将字符串from替换成字符串to。在默认的情况下,这个替换命令仅是将一行中第一个出的的字符替换成给定的字符。而如果我们想将所有出现的字符都替换成给定的字符我们就用g这个标记命令。例如::% substitute /from/to/g.这个命令就达到将所有出现from的地方全部替换成to。其他的标记(flags)包括:p(print),这个命令是告诉substitute打印所做的改动。c(confirm),这个命令是告诉substitute命令在做出这样的改动以前要询问是否要做这样的改动例如如果我们执行下面的命令::1,$ substitute /Professor/Teacher/c.在Vim就会显示我们将要做改动的文本,并显示下面的内容:
Prfessor: You mean it's not supposed to do that?
replace with Teacher(y/n/a/q/^E/^Y)?
这时你可以做出以下这样的回答:
y 执行这个替换
n 跳过这个替换
a 执行所有的替换不要做询问
q 退出,不做任何改动
CTRL─E 向上翻滚一行
CTRL-Y 向下翻滚一行
在Vim的命令还有一些命令可以帮助我们很好的完成我的工作:例如命令:read filename可读进一个文件并将读进和内容插在当前行的后面。而命令:write是将文件写入。这是一个保存我们工作的方法。我们也可以用命令:write newfile将当前的文件内容写入一个新的文件。一般情况下:write命令并不会覆盖已经存在的文件。我们可以用强制操作(!)选项来完成我们所需要的操作并覆盖当前已经存在的文件。而这个命令对于我们要将一个大的文件分拆为小的文件时显得更有用。我们可以用可视化模式选定一个范围然后将这个选定的范围写入新的文件,从而实现了分拆的目的。
我们还可以Vim中不需要退出而执行Shell命令。命令:shell可以使们进入命令终端执行我们需要的命令。当我们要退出终端回到Vim中时可以执行exit命令。我想这对于程序人员来说真是一个巨大的帮助。:)
仅管ex是基于命令行方式的,然而他也是真正意义上的一个强大而高效的编辑器。即使是在今天他也是发挥着作用。仅管现在的Vim编辑器有一套的命令系统,可是有些事情还是要用ex的命令方式才可以更好的来完成。因而现在的Vim编辑器设计了与ex编辑器的接口,我们可以在Vim中使用ex方式的命令。而那些以冒号开头的命令就是一个ex方式的命令。
如果你想执行单一的命令行方式的命令,那么你只输入:然后输入命令就可以了。例如我们在前面讨论的:set number.事实上他就是一个命令模式的命令。在执行完这个命令以后,Vim编辑器又回到了他原来的状态。我们可以通过命令:ex选择进入命令行模式。Q命令也有同样的作用。如果要选择回到正常模式(normal mode)也就是可视化模式(Visual mode),我们可以使用命令:visual.
命令:print(简写为:p)可以打印出选定的行。如果没有传递参数,他仅是打印当前的行。打印完成以后回到打印行的开头。我们也可以指定要打印的行的范围。例如命令:1,5 print就是要打印1到5行。严格来说你不必须在数5和print之间输入空格,但是如果这样做后我们就会现这个命令看起来会更好。如果你仅仅是想打印第5行,你可以用这样的命令::5 print.当然了我们也可以使用一些特殊的数字标记,例如字符$是指最后一行,因而如果我们想要打印全文的时候我们可以用这样的命令::1,$ print.而字符%是指整篇文章(1,$),因而我们也可用这样的命令来打印整篇文章::% print,而.则是指当前行,我们要打印当前可以用:print命令而不带任何参数,也可以用这样的命令:.print。我们还可以用指定句子中内容来打印选定的行。例如在我们的文章中我们可以用这样的命令来打印含有字符ex的行::/ex/ print。这样就会打印出含用ex的行,并会高亮显示出ex。同样命令:?ex? print也会达到同样的作用,而命令:?ex? print也正是打印含有ex字符的命令格式。
在前面的学习中我们曾学过标记命令m,例如我们可以在任何地方用命令ma做上标记,然后在其他的地方可以用命令‘a回到做了标记的地方。这个命令也可以与print命令组合。例如我们可以在一个地方用命令ma做上标记,然后在其他的地方用命令mb做上另外的标记,然后我们就可以执行下面的命令来打印这两个标记之间的内容了::'a,'b print
我们也可以在可视化的模式下来选定要打印的内容。例如我们用命令V进入可视化模式并选定一段内容,这时我们输入:就会在Vim的底部显示<,>两个字符,这两个字符分别指我们的选定内容的开头和结束部分。
命令:substitute可以使我们将指定的字符换成其他的字符。这个命令的格式是这样的:
:range substitute /from/to flags
在这个命令中range是指定了范围,也就说是在哪些行里做替换。而后是说将字符串from替换成字符串to。在默认的情况下,这个替换命令仅是将一行中第一个出的的字符替换成给定的字符。而如果我们想将所有出现的字符都替换成给定的字符我们就用g这个标记命令。例如::% substitute /from/to/g.这个命令就达到将所有出现from的地方全部替换成to。其他的标记(flags)包括:p(print),这个命令是告诉substitute打印所做的改动。c(confirm),这个命令是告诉substitute命令在做出这样的改动以前要询问是否要做这样的改动例如如果我们执行下面的命令::1,$ substitute /Professor/Teacher/c.在Vim就会显示我们将要做改动的文本,并显示下面的内容:
Prfessor: You mean it's not supposed to do that?
replace with Teacher(y/n/a/q/^E/^Y)?
这时你可以做出以下这样的回答:
y 执行这个替换
n 跳过这个替换
a 执行所有的替换不要做询问
q 退出,不做任何改动
CTRL─E 向上翻滚一行
CTRL-Y 向下翻滚一行
在Vim的命令还有一些命令可以帮助我们很好的完成我的工作:例如命令:read filename可读进一个文件并将读进和内容插在当前行的后面。而命令:write是将文件写入。这是一个保存我们工作的方法。我们也可以用命令:write newfile将当前的文件内容写入一个新的文件。一般情况下:write命令并不会覆盖已经存在的文件。我们可以用强制操作(!)选项来完成我们所需要的操作并覆盖当前已经存在的文件。而这个命令对于我们要将一个大的文件分拆为小的文件时显得更有用。我们可以用可视化模式选定一个范围然后将这个选定的范围写入新的文件,从而实现了分拆的目的。
我们还可以Vim中不需要退出而执行Shell命令。命令:shell可以使们进入命令终端执行我们需要的命令。当我们要退出终端回到Vim中时可以执行exit命令。我想这对于程序人员来说真是一个巨大的帮助。:)