假如您的机器里面没有fmt这个程式, 您就得去找个类似的软件了(我记得在公共域里面有
不少这样的程式,但是我对此了解不多)
2.11 - 我怎样复制文本?
这有点复杂.把这节拿出来,多看几遍;更有,一定要多做实验.
"<字母>yy能够把一行文本拷贝到寄存器中(这里的寄存器是vi的术语,指能够存放剪切和
拷贝下来的东西的地方), <字母>里面的字母必须是a到z之间的一个. "<字母>dd能够把一行
剪切下来放到寄存器里面. 您能够在yy或dd前面用数字指明要拷贝或剪切的行数.假如
<字母>中的字母是大写的话,意味着把文本插入到寄存器中已有的文本之前.
"<字母>p把文本插入到光标之后,"<字母>P把文本插入到光标之前.假如寄存器中含有某
一行的开头或结尾,这一行将会被放到另一合适的行上. Y是yy的快捷方式. 更有, y$, yH,
yM,等等,都是能够用的.d命令也是相同的.假如要快速的剪切和粘贴, 您就无须指定寄存器
了.假如这样的话,您就不能往寄存器里面添加文本了.而且只要有一个删除命令的话,寄存器
中的东西就没有了(包括x命令).
举例来说,假如要移动上一段的话,您能够把光标移到段落的开头,敲"a13dd,再把光标移到
您想要放文本的地方,敲"ap,就能够把那段文本放到光标所在的行后面.
现在,大概您想要剪切和粘贴文本到不是行末尾的区域去.我们来看如何做到这一点:我们
能够使用 m<字母> 命令来标记一个区域,这个字母能够和剪切/粘贴寄存器的字母相同,因为
他们是保存在内存中的不同位置. 然后,敲"<寄存器>`<字母>[yy或dd], 这里的寄存器就?
要保存文本的那个寄存器,<字母>是用来标记的,yy和dd是您的操作.
2.12 - 啊! 我刚才敲了一个dG,然后我的论文就没有了! 我该怎么办?
(或,我刚才犯了个错误,我该怎么办?)
u能够撤消您刚才的操作.U能够撤消您对当前行的修改(当然,一行对于一篇论文来说当然
很不够了). :e!能够不保存修改而重新把您的文档调进来. 更有,您删除的文本都保存在从
0到9编号的寄存器里.所以,"<n>p就能够把上第n次的删除文本粘贴出来.您能够按如下的
方法迅速地查看任何删除的文本. 先试一个,不对的话,敲u,再试下一个.(为加速这个过程,
这时vi中的.命令和通常的用法不相同了.他不是重复上次操作,而是试下一个寄存器,这样
您要做的无非就是: "1p u . u .,直到您撤消了您想撤消的删除操作)
2.13 - 我正在写我的论文,被告知我必须将每一节都放在不同的文档里,我该怎么办?
:[m],[n]w <文档名>能够将从第m行到第n行之间的文本保存到<文档名>所指定的文档中.
这种行序号方法几乎在任何的:命令下都能够使用. 假如您用命令:[m],[n] w >><文档名>,
这些文本将添加到文档的后面.
2.14 - 任何的:命令都是怎样处理的?
:后面的命令都是从ex编辑器里面过来的. 这就给vi加入了很多灵活性,也使vi功能更强
大. 例如, 有很多的方法能够用来查找和替换,他们有很多的类似地方(事实上,他们在某种
意义上说都是相同的)
3.0 - 怎样查找和替换?
有很多方法. 最简单的是:
:s/old/new/g, 但是,这仅对当前行起作用..., 所以,我们用
:%s/old/new/g, 更一般的,我们还能够用
:[范围]s/old/new/[cg],这里,[范围]是任意的行范围,包括行号,$(文档末尾),.(当前行)
%(当前文档),或两个行号之间加个破折号(或能够这样: ., 5,这表示下面5行).[cgi]是
c,g,i中间的一个或什么也没有.c告诉vi每次替换的时候要给提示,g是说对任何一行中出?
的地方都做替换.i则是指在查找时不区分大小写.假如最后一个斜杠(/)后面没有东西的话,?
么vi只替换在行中第一次匹配的地方.
我比较喜欢这样做:
:g/foobar/s/bar/baz/g, 这个命令首先搜寻foobar,然后把他变成foobaz. 他没有改变
jailbars, 而其他的一些命令可能会改变jailbars. 这是我的方法,但是可能比较难记.
当然,您还能够在查找的的时候使用正规式,连同在替换文本的时候使用其他一些命令.如?
您在正规式里用(和)来剥离一个序列的话,您会发现您能够做很多好玩的事情.
例如:
:g/(foo)(bar)/s/2/1baz/g 将foobar替换成foobaz
更有一些特别的序列:
& 任何查找时匹配到的东西
[1-9] 1到9号用(和)括起来的东西
u 下一个字符将被变成大写.
U 以后的字符都变成大写,直到碰到e或E
l 下一个字符将被变成小写.
L 以后的字符都变成大写,直到碰到e或E
[Ee] 更改大小写的选择区域的终点
3.1 - 我怎样在vi中运行一个程式?
:!命令 能够在vi中运行程式. :sh会启动一个交互式的外壳(SHELL).在这个外壳
里面, 假如您愿意,您还能够再次运行vi. 当您在编辑Makefiles和配置文档来编译
某个程式的时候,这可能比较有用. 这比:e优越之处在于他无须保存文档,而且假如
您退出外壳的时候,vi还回到原来的地方.(当然,我还是建议您先保存一下文档)
3.2 - 啊! 我正在写我的论文, 系统崩溃了! 怎么办?
不要怕! 您会收到一封电子邮件,里面就是您的论文.敲入vi -r <文档名>
(这个文档名就是系统崩溃时您正在编辑的文档)您就能够恢复出您的论文来.只敲
vi -r将把任何可能恢复的文档都列出来.
3.3 - 有没有使vi对程式员更友好的窍门?
:set ai能够让vi自动对齐.
:set sw=#,#是移动的宽度(shiftwidth),或说TAB键的宽度(tabwidth);您能够
用<<或>>命令来左移或右移某一行. 更有, 您能够使用 <%或>%来将{,(或[等符号
括起来的文本都左移或右移;这时候,您必须把光标放在这些符号({,(或[)上面.
:set sm会在您敲},]或)显示出对应匹配的{,[或(来.
:set lisp会对lisp编程有些帮助. ()被移到s表达式(s-expressions)外面,假如
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




