vi学习_5编辑文本_5

 

编辑文本

使用缩写

要为经常使用的单词或表达式创建缩写,可以使用ab(abbreviate,缩写)命令。该命令的语法是:

:ab [short long]

其中short是缩写,long是缩写的原文。

 

例如,配置服务器文件时,需要不停地键入“192.168.0.1”,这让人觉得很烦。因此,希望建立一个缩写,比如“ip”。键入:ab,后面跟着短格式的缩写,再后跟长格式的原文:

:ab ip 192.168.0.1

从现在开始,在位于输入模式时,每当以一个单独的单词键入eg,vi将自动地使用“192.168.0.1”替换它。注意只有“ip”是一个单独的单词时才会进行替换,vi非常聪明,不会替换其他单词中的“ip”,如“listen_client_ip”。

 

如果要删除一个缩写,可以使用:una(un-abbreviate,反缩写)命令。该命令的语法是:

:una short

其中,short是缩写。在使用这个命令时,只需要键入:una,后面跟着希望移除的短格式的缩写。如:

:una ip

在任何时候,通过输入:ab命令本身可以查看所有的缩写列表:

:ab

~

!  wjb           wenjiabao

!  hjt           hujintao

!  ip            192.168.65.124

请按 ENTER 或其它命令继续

类似缩写模式,可以用:map命令创建命令模式中使用的单字符的缩写。实际上,这将允许创建自己定制的单字符命令,这些命令称为宏(macro)。该命令的语法为:

:map [x commands]

其中x是一个字符,commands是vi或ex命令序列。

 

根据宏的定义,宏的名称必须是单个字符。如果使用一个早已拥有其他含义的字符,那么这个字符将会失去原本含义。例如,

:map G gg

在前面小节讨论过G和gg命令。G命令将光标移动到编辑缓冲区的最后一行行首,gg将光标移到到编辑缓冲区的首行行首。该命令创建一个名称为“G”的宏,该宏将光标移动到编辑缓冲区的首行行首。一旦定义了这个宏,常规的gg命令将不起作用。

 

对于这一点,需要根据自己的习惯和日常策略来调整。不过,替换常规命令的命令通常并不是一个好主意。这将产生一个问题:

vi或vim还没有用作命令名称的是哪些字符呢?实际上,没有使用的字符极少。

vi没有使用的过的字符只有14个。

vim没有使用过的字符只有^K和\(反斜线)。不过,情形没有想象的糟糕,因为有若干条vim命令或许根本不需要,可以安全地替换它们。

 

Vi:可以用作宏名称的字符

字母

g K q v V Z

标点

@ # * \

Ctrl字符

^A ^K ^O ^w ^X

 

Vim:可以用作宏名称的字符

字母

K q v V

标点

@ \

Ctrl字符

^@ ^A ^K ^O ^T ^X

 

从真实意义上讲,宏就是微型程序。对于所有的编程工具来说,有许多细节永远都不需要,因此不在这里讨论全部细节。作为替代,介绍几个给力的宏。

 

对于不支持gg的vi,可以使用:

:map g 1G

定义一个代替1G命令的宏g。

 

对于用/*和*/括起来表示注释的编程语言,下面的宏通过在行首插入/*和行尾插入*/来创建注释:

:map * I/* ^v<Esc>A */^V<Esc>

 

:map之后的*(星号)字符,是宏的名称。

命令部分:首先,I在行首进入输入模式。然后输入/*,后面跟一个空格。此时,需要按<Esc>键退出输入模式。为了在宏中插入一个<Esc>码,键入^V<Esc>(^V[Ctrl-v]告诉vi接下来的键要从字面上解释)。接下来使用A(append,追加)命令在行的末尾进入输入模式。然后键入一个空格,后面跟着*/。为了退出输入模式,再次使用了<Esc>键。

 

一些版本的vi允许将宏赋给<F1>到<F10>的功能键。这时,可以通过在一个#字符之后跟一个数字(1=F1、2=F2……0=F10)来指定自己喜欢的功能键。如:

:map #1 :set all

 

在任何时候,都可以通过:map命令本身显示所有宏的列表:

:map

移除宏时,使用:unmap命令。语法为:

:unmap x

x为宏的名称。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

signjing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值