vi快捷方式_如何在vi中创建快捷方式

vi快捷方式

学习vi文本编辑器需要花费一些精力,但是有经验的vi用户知道一段时间后,使用基本命令已成为第二习惯。 这是所谓的肌肉记忆的一种形式,在这种情况下,很可能称为手指记忆

掌握了主要的方法和基本命令后,您可以使用vi的自定义选项来创建快捷方式,从而使vi的编辑功能更加强大和简化。 我希望以下所述的技术将有助于您的编写,编程和数据操作。

在继续之前,我要感谢Chris Hermansen(邀请我写这篇文章)与Vim一起检查了我的草稿,因为我使用了其他版本的vi。 我也感谢Chris的有用建议,这些建议已在此处纳入。

首先,让我们回顾一些约定。 我将使用<RET>指定按RETURN或ENTER键,并按<SP>表示空格键。 CTRL- x表示同时按下Control键和x键(无论x碰巧是什么)。

使用map命令设置您自己的命令缩写。 我的第一个示例涉及write命令,该命令用于保存您正在处理的文件的当前状态:

 :w<RET> 

这只是三个按键,但是由于我经常这样做,所以我宁愿只使用一次。 我为此选择的键是逗号,它不是标准vi命令集的一部分。 设置的命令是:

 :map , :wCTRL-v<RET> 

CTRL-v是必不可少的,因为如果没有它,<RET>将会表示映射结束,并且我们想将<RET>作为映射逗号的一部分。 通常,CTRL-v用于输入后面的击键(或控制字符),而不是按字面意义进行解释。

在上面的地图中,右侧的部分将在屏幕上显示为:w^M 脱字号( ^ )表示控制字符,在本例中为CTRL-m,它是系统的<RET>形式。

到目前为止,还不错。 如果在创建和/或编辑当前文件时将其写入大约十二次,则此映射可以节省2 x 12次按键。 但这不考虑设置地图所需的击键,在上面的示例中为11(计算CTRL-v和移动字符:每个击键一次)。 即使有一定的节省,每次启动vi会话时都要设置地图还是很麻烦的。

幸运的是,有一种方法可以将映射和其他缩写放入启动文件中,vi每次调用时都会读取该文件: .exrc文件,或者在Vim中, .vimrc文件。 只需在主目录中创建一个包含地图列表的文件,每行一个地图(不包含冒号),然后为所有后续vi会话定义缩写,直到您删除或更改它。

在继续进行map命令的变体和另一种缩写方法之前,下面是一些我发现对简化文本编辑有用的地图示例:


   
   
                                        Displays as

:map X :xCTRL-v<RET>                    :x^M

or

:map X ,:qCTRL-v<RET>                   ,:q^M

上面的等效映射写入并退出(退出)文件。 :x是为此的标准vi命令,第二个版本说明了先前定义的映射可以在后续映射中使用。

 :map v :e<SP>                   :e  

上面的命令开始将命令移动到另一个文件,同时保留在vi中; 使用此命令时,只需在“ v”后面加上文件名,后跟<RET>。

 :map CTRL-vCTRL-e :e<SP>#CTRL-v<RET>    :e #^M 

此处的#是“备用文件”的标准vi符号,表示最后使用的文件名,因此此快捷方式非常方便在两个文件之间来回切换。 这是我如何使用此示例:

 map CTRL-vCTRL-r :!spell %>err &CTRL-v<RET>     :!spell %>err&^M 

(注:第一个CTRL-V在这两个例子中上述不需要在六某些版本)的:! 是一种运行外部(非vi)命令的方法。 在这种情况下( spell ), %是表示当前文件的vi符号, >会将拼写检查的输出重定向到名为err的文件, &表示在后台运行此文件,因此我可以在spell继续进行编辑完成任务。 然后,我可以键入verr<RET> (使用我之前的快捷键verr )进入spell命令标记的潜在错误文件,然后返回到我正在使用CTRL-e处理的文件。 第一次运行拼写检查后,我可以重复使用CTRL-r并仅使用CTRL-e返回到err文件。

map命令的一种变体可以用于在输入时缩写文本字符串。 例如,


   
   
:map! CTRL-o \fI
:map! CTRL-k \fP

这将允许您使用CTRL-o作为输入groff命令的斜体,以使后面的单词变为斜体,并且允许您将CTRL-k用于groff命令恢复为先前的字体。

这是此技术的另外两个示例:


   
   
:map! rh rhinoceros
:map! hi hippopotamus

可以使用ab命令来完成上述操作,如下所示(如果按顺序尝试使用这些命令,请先使用unmap! rhumap! hi ):


   
   
:ab rh rhinoceros
:ab hi hippopotamus

map! 在上述方法中,键入时(在Vim中)缩写词立即扩展为定义的单词,而在使用ab方法时,缩写词后跟空格或标点符号(在Vim和我的vi版本中,扩展对于map!方法也是如此。

要反转任何map ,请map! ,或在vi会话中使用ab ,请使用:unmap:unmap!:unab

在我的vi版本中,可以很好地映射的未定义字母包括gKqvVZ ; 未定义的控制字符为CTRL-a,CTRL-c,CTRL-k,CTRL-n,CTRL-o,CTRL-p和CTRL-x; 其他一些未定义的字符是#* 。 您也可以重新定义在vi中具有含义但认为模糊且很少使用的字符; 例如,我在本文的两个示例中选择的X是一个内置的vi命令,用于删除当前字符紧靠左侧的字符(可通过两键命令hx轻松完成)。

最后,命令


   
   
:map<RET>
:map!<RET>
:ab

将显示所有当前定义的映射和缩写。

我希望所有这些技巧都可以帮助您自定义vi,并使其更容易,更高效地使用。

翻译自: https://opensource.com/article/18/5/shortcuts-vi-text-editor

vi快捷方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值