假如<lhs>是#n,n是0-9之间的一个数,那么这个宏就映射成某一个功能键了.(您
能够试一下F1-F10之间的键--译者)
3.6 - 有没有办法缩写文本?
当然了. 这可是vi呀,他能做任何事情!
:ab email ellidz@midway.uchicago.edu 能够在您敲完email后,把那个没有缩写
的文本插入到文档中. :una email取消缩写.
3.7 - 我怎样在当前文档中做拼写检查?
这儿有一个宏能够做到这一点. 这些应该放在您的.exrc文档中(后面我们将对.exrc
进一步讨论). 他是个相当简单的宏. 他仅仅是调用ispell来处理当前文档.当然,您
的系统里面一定得有ispell这个程式. 使用他的时候,只需要敲个V键就行了(因为vi并
没有用V,所以V是个比较合适的键)
map V :w^M:!ispell % ^M:e!^M^M
第二个^M使您在拼写检查完之后无须敲回车就能够到vi中.
(译注, 在我的系统里,没有ispell,只有spell,我用他替换了ispell,工作的不错;更有,
^M不是两个字符,而是个字符,通过^V^M敲进去的;另外,我个人认为第二个^M还是不要
的好,因为直接回到vi后您就无法看到拼写检查的结果了)
3.8 - 我手头有一个硬拷贝的终端, 我还能用vi吗?
好了,好了. 我并认为有人会真的问这个问题.这个问题太偏了,我们大可不必理
他.(而且,他回答了一个很普通的问题)
vi启动的时候处于一种特别的模式下面,叫做"开放模式"; 在这种状态下,事情或多或少
的有些不同. 删除的字符在您面前显示成一些\',vi会认为您的终端窗口只有一行. ^r
能够把当前行重新输出. z则把当前行周围的窗口重画一遍.
3.9 - 好了,是不是处在开放模式下的原因呀?! 但是我现在没有用硬拷贝终端,他还是在开放
模式呀?
这儿的问题就是vi没有认出您用的终端的类型. 于是他假定您有的是个最烂的终端,
所以他决定依然处在开放模式下.这似乎没什么用处.因为没有多少人喜欢开放模式,但是开放
模式还是需要知道您的终端的一些最起码的信息的.
现在,我们来看如何解决这个问题.我们有可能把他分成几种特别的情形,但是,一般情况下,
这并没有用处. 假如您直到您的终端的类型, 您能够在UNIX提示符下面配置终端类型(在CSH
及其变种下面,使用命令setenv TERM <终端类型>;在SH及其变种下面,使用命令TERM=<终端类型>;
export TERM)
最好您能把上面的命令写在.profile文档或.cshrc文档里面,这样您一登录他就自动地给
您配置好了.(当然,您应该知道如何使用ed,或您能在UNIX提示符下面配置好终端类型以便能
使用vi, 这样您才有可能去编辑这些文档)
假如您确实不知道您地终端类型,试一试vt100.现在大多数地终端或终端仿真器都能仿真
vt100. 假如这还不能生效的话,您只好去找个高手来帮您了.
4.0 - vi档案的在线帮助在哪儿?
有一个vi的FAQ,其中列出了vi档案的任何在线文档. 同时他还列出了这些文档
的镜象站点. 最主要的一个地址是alf.uib.no,但是这些文档在很多很多地地方
都保存着. vi-archive faq把他们都给列出来了.您在下载这些文档之前一定要
核对一下这个FAQ.因为很有可能有一个站点比去挪威的站点更近更快些.
一个镜象站点是cs.uwp.edu/pub/vi, 另一个是monu6.cc.monash.edu.au/pub/Vi,
这些站点上有很多有关vi的文档,更有一些vi的变种版本;当然,UCB版本的vi是
肯定有的, 更有许多的宏.
5.0 - 好玩的vi诀窍,好玩的宏
这一节主要讲述一些无聊的诀窍和一些无聊的宏.事实上,任何vi的诀窍和宏我们
都欢迎,只要他们不是过分冗长. 假如有人向我建议而我也认为确实值得加的话,
我会考虑加进去的.
5.1 - 好玩的vi诀窍
xp 删除光标下的字符,再把粘贴到后面去.换句话说,他交换了当前两个字符
的位置.
ddp 和xp类似,但是是交换两行的位置.
uu 撤消和重复上次所做的修改.(这能够使您不改变什么东西就能够到您上次所
做的修改处)
5.2 - 好玩的宏
和垂直上方的字符交换位置
map * kxjphxkP
折行
map g $80|F r
(译注,我对这条宏表示疑问!)
改变大多数单词的大小写
map v ywmno:s/./\~/g
(译注,这条好象也不大对!)
在当前的单词周围加上`和'
map *` i`'
在当前的单词周围加上'和'
map *' i''
在当前的单词周围加上"和"
map *" i""
(这几条也太无聊了吧--译注)
在当前的单词周围加上``和``
map! `` `'
(咦,好象又有问题?--译注)
从光标处把当前行分开,在下一行开头加上一个>号(例如,引用USENET).假如加上了单词的折行
功能那么最后一个单词可能被折在第一行.
map g may0O`ay$:s/./ /g
(不对吧--译注)
插入一个字符
map g i$^[r
6.0 - 依字母顺序的vi快速参考
... 是指有些东西需要在命令之前或之后指明.这通常是说光标的移动键
(h,j,k,l,w,b等等)或是指行号.
# (这里#代表一个数字) 执行n次后面的命令...
: 进入ex模式
) 下一句
( 上一句
} 下一段
{ 上一段
]] 下一节
[[ 上一节
0 行的开头
$ 行的末尾
^ 行的第一个非空白字符
下一行的开头
- 上一行的开头
(空格) 下一个字符
(回车) 下一行
/ 向前搜索
? 向后搜索
% 查找当前小(中,大)括号的匹配字符
, 逆向重复上一个f,F,t或T操作
; 重复上一个f,F,t或T操作
. 重复上一个操作
` 转到标记处
' 转到标记所在行的开头
`` 查找前回到上一个做标记的地方
'' 查找前回到上一个做标记所在行的开头
~ 转换字符的大小写
" 保存到寄存器中
!! 重复上一次SHELL命令
! 把后面的文本送给命令, 取代输出(例如, !}fmt把当前的段落
送给命令fmt处理,然后用fmt返回的东西替换输出.)
>> 右移当前段落一个移动宽度(shiftwidth)
<< 左移当前段落一个移动宽度(shiftwidth)
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




