📄 00000056.htm
字号:
方法迅速地查看所有删除的文本. 先试一个,不对的话,敲u,再试下一个.(为加速这个过程, <BR>这时vi中的.命令和通常的用法不一样了.它不是重复上次操作,而是试下一个寄存器,这样 <BR>你要做的无非就是: "1p u . u .,直到你撤消了你想撤消的删除操作) <BR> <BR>2.13 - 我正在写我的论文,被告知我必须将每一节都放在不同的文件里,我该怎么办? <BR> :[m],[n]w <文件名>可以将从第m行到第n行之间的文本保存到<文件名>所指定的文件中. <BR>这种行序号方法几乎在所有的:命令下都可以使用. 如果你用命令:[m],[n] w >><文件名>, <BR>这些文本将添加到文件的后面. <BR> <BR>2.14 - 所有的:命令都是怎样处理的? <BR> :后面的命令都是从ex编辑器里面过来的. 这就给vi加入了很多灵活性,也使vi功能更强 <BR>大. 例如, 有很多的方法可以用来查找和替换,它们有很多的类似地方(事实上,它们在某种 <BR>意义上说都是一样的) <BR> <BR> <BR>3.0 - 怎样查找和替换? <BR> 有很多方法. 最简单的是: <BR> :s/old/new/g, 但是,这仅对当前行起作用..., 所以,我们用 <BR> :%s/old/new/g, 更一般的,我们还可以用 <BR> :[范围]s/old/new/[cg],这里,[范围]是任意的行范围,包括行号,$(文件末尾),.(当前行), <BR>%(当前文件),或者两个行号之间加个破折号(或者可以这样: .,+5,这表示下面5行).[cgi]是 <BR>c,g,i中间的一个或者什么也没有.c告诉vi每次替换的时候要给提示,g是说对所有一行中出现 <BR>的地方都做替换.i则是指在查找时不区分大小写.如果最后一个斜杠(/)后面没有东西的话,那 <BR>么vi只替换在行中第一次匹配的地方. <BR> 我比较喜欢这样做: <BR> :g/foobar/s/bar/baz/g, 这个命令首先搜寻foobar,然后把它变成foobaz. 它没有改变 <BR>jailbars, 而其他的一些命令可能会改变jailbars. 这是我的方法,但是可能比较难记. <BR> 当然,你还可以在查找的的时候使用正规式,以及在替换文本的时候使用其他一些命令.如果 <BR>你在正规式里用\(和\)来剥离一个序列的话,你会发现你可以做很多好玩的事情. <BR> 例如: <BR> :g/\(foo\)\(bar\)/s/\2/\1baz/g 将foobar替换成foobaz <BR> 还有一些特殊的序列: <BR> & 所有查找时匹配到的东西 <BR> \[1-9] 1到9号用\(和\)括起来的东西 <BR> \u 下一个字符将被变成大写. <BR> \U 以后的字符都变成大写,直到遇到\e或\E <BR> \l 下一个字符将被变成小写. <BR> \L 以后的字符都变成大写,直到遇到\e或\E <BR> \[Ee] 更改大小写的选择区域的终点 <BR> <BR>3.1 - 我怎样在vi中运行一个程序? <BR> :!命令 可以在vi中运行程序. :sh会启动一个交互式的外壳(SHELL).在这个外壳 <BR>里面, 如果你愿意,你还可以再次运行vi. 当你在编辑Makefiles和配置文件来编译 <BR>某个程序的时候,这可能比较有用. 这比:e优越之处在于它无须保存文件,而且如果 <BR>你退出外壳的时候,vi还回到原来的地方.(当然,我还是建议你先保存一下文件) <BR> <BR>3.2 - 啊! 我正在写我的论文, 系统崩溃了! 怎么办? <BR> 不要怕! 你会收到一封电子邮件,里面就是你的论文.敲入vi -r <文件名> <BR>(这个文件名就是系统崩溃时你正在编辑的文件)你就可以恢复出你的论文来.只敲 <BR>vi -r将把所有可能恢复的文件都列出来. <BR> <BR>3.3 - 有没有使vi对程序员更友好的窍门? <BR> :set ai可以让vi自动对齐. <BR> :set sw=#,#是移动的宽度(shiftwidth),或者说TAB键的宽度(tabwidth);你可以 <BR>用<<或者>>命令来左移或右移某一行. 还有, 你可以使用 <%或>%来将{,(或[等符号 <BR>括起来的文本都左移或右移;这时候,你必须把光标放在这些符号({,(或[)上面. <BR> :set sm会在你敲},]或)显示出对应匹配的{,[或(来. <BR> :set lisp会对lisp编程有些帮助. ()被移到s表达式(s-expressions)外面,如果 <BR>原子(atoms)没有停止则{}将被移走. <BR> <BR>3.4 - 宏 -- 我怎样写宏? <BR> :map <lhs> <rhs>, 其中<lhs>最多10个字符,<rhs>最多100个字符. 以后,如果 <BR>你敲了<lhs>,vi就会用<rhs>来取代它.所有的宏都是在命令模式下开始的,但是可以 <BR>在你想在的模式下终止. 记住,在你想用的控制字符前面加上^V. <BR> :unmap <lhs>将删除这个宏. :map!<lhs> <rhs> 使得<lhs>将<rhs>插入到文档 <BR>中去. <BR> <BR>3.5 - 我怎样将一个功能键定义成一个宏? <BR> 如果<lhs>是#n,n是0-9之间的一个数,那么这个宏就映射成某一个功能键了.(你 <BR>可以试一下F1-F10之间的键--译者) <BR> <BR>3.6 - 有没有办法缩写文本? <BR> 当然了. 这可是vi呀,它能做任何事情! <BR> :ab email <A HREF="mailto:ellidz@midway.uchicago.edu">ellidz@midway.uchicago.edu</A> 可以在你敲完email后,把那个没有缩写 <BR>的文本插入到文件中. :una email取消缩写. <BR> <BR>3.7 - 我怎样在当前文档中做拼写检查? <BR> 这儿有一个宏可以做到这一点. 这些应该放在你的.exrc文件中(后面我们将对.exrc <BR>进一步讨论). 它是一个相当简单的宏. 它仅仅是调用ispell来处理当前文件.当然,你 <BR>的系统里面一定得有ispell这个程序. 使用它的时候,只需要敲个V键就行了(因为vi并 <BR>没有用V,所以V是一个比较合适的键) <BR> <BR> map V :w^M:!ispell % ^M:e!^M^M <BR> <BR> 第二个^M使你在拼写检查完之后无须敲回车就可以到vi中. <BR> (译注, 在我的系统里,没有ispell,只有spell,我用它替换了ispell,工作的不错;还有, <BR>^M不是两个字符,而是一个字符,通过^V^M敲进去的;另外,我个人认为第二个^M还是不要 <BR>的好,因为直接回到vi后你就无法看到拼写检查的结果了) <BR> <BR>3.8 - 我手头有一个硬拷贝的终端, 我还能用vi吗? <BR> 好了,好了. 我并认为有人会真的问这个问题.这个问题太偏了,我们大可不必理 <BR>它.(而且,它回答了一个非常普通的问题) <BR> vi启动的时候处于一种特殊的模式下面,叫做"开放模式"; 在这种状态下,事情或多或少 <BR>的有些不同. 删除的字符在你面前显示成一些\',vi会认为你的终端窗口只有一行. ^r <BR>可以把当前行重新输出. z则把当前行周围的窗口重画一遍. <BR> <BR>3.9 - 好了,是不是处在开放模式下的原因呀?! 但是我现在没有用硬拷贝终端,它还是在开放 <BR> 模式呀? <BR> 这儿的问题就是vi没有认出你用的终端的类型. 于是它假定你有的是个最烂的终端, <BR>所以它决定依然处在开放模式下.这似乎没什么用处.因为没有多少人喜欢开放模式,但是开放 <BR>模式还是需要知道你的终端的一些最起码的信息的. <BR> 现在,我们来看如何解决这个问题.我们有可能把它分成几种特殊的情形,但是,一般情况下, <BR>这并没有用处. 如果你直到你的终端的类型, 你可以在UNIX提示符下面设置终端类型(在CSH <BR>及其变种下面,使用命令setenv TERM <终端类型>;在SH及其变种下面,使用命令TERM=<终端类型>; <BR>export TERM) <BR> 最好你能把上面的命令写在.profile文件或者.cshrc文件里面,这样你一登录它就自动地给 <BR>你设置好了.(当然,你应该知道如何使用ed,或者你能在UNIX提示符下面设置好终端类型以便能 <BR>使用vi, 这样你才有可能去编辑这些文件) <BR> 如果你确实不知道你地终端类型,试一试vt100.现在大多数地终端或者终端仿真器都能仿真 <BR>vt100. 如果这还不能生效的话,你只好去找个高手来帮你了. <BR> <BR>-------------------------------------------- <BR><A HREF="mailto:Elale@163.net">Elale@163.net</A> <BR> <BR>-- <BR>※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 166.111.68.3] <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -