如何在 vi 中创建快捷键 | Linux 中国

2018 年 10 月 3 日 Linux中国
那些常见编辑任务的快捷键可以使 Vi 编辑器更容易使用,更有效率。
-- Dan Sonnenschein

致谢
编译自 | 
https://opensource.com/article/18/5/shortcuts-vi-text-editor
 
 作者 | Dan Sonnenschein
 译者 | sd886393 🌟🌟共计翻译:4.0 篇 贡献时间:16 天

那些常见编辑任务的快捷键可以使 Vi 编辑器更容易使用,更有效率。

学习使用 vi 文本编辑器[1] 确实得花点功夫,不过 vi 的老手们都知道,经过一小会儿的锻炼,就可以将基本的 vi 操作融汇贯通。我们都知道“肌肉记忆”,那么学习 vi 的过程可以称之为“手指记忆”。

当你抓住了基础的操作窍门之后,你就可以定制化地配置 vi 的快捷键,从而让其处理的功能更为强大、流畅。我希望下面描述的技术可以加速您的协作、编程和数据操作。

在开始之前,我想先感谢下 Chris Hermansen(是他雇佣我写了这篇文章)仔细地检查了我的另一篇关于使用 vi 增强版本 Vim[2] 的文章。当然还有他那些我未采纳的建议。

首先,我们来说明下面几个惯例设定。我会使用符号 <RET> 来代表按下回车,<SP> 代表按下空格键,CTRL-x 表示一起按下 Control 键和 x 键(x 可以是需要的某个键)。

使用 map 命令来进行按键的映射。第一个例子是 write 命令,通常你之前保存使用这样的命令:

   
   
     
  1. :w<RET>

虽然这里只有三个键,不过考虑到我用这个命令实在是太频繁了,我更想“一键”搞定它。在这里我选择逗号键,它不是标准的 vi 命令集的一部分。这样设置:

   
   
     
  1. :map , :wCTRL-v<RET>

这里的 CTRL-v 事实上是对 <RET> 做了转义的操作,如果不加这个的话,默认 <RET> 会作为这条映射指令的结束信号,而非映射中的一个操作。 CTRL-v 后面所跟的操作会翻译为用户的实际操作,而非该按键平常的操作。

在上面的映射中,右边的部分会在屏幕中显示为 :w^M,其中 ^ 字符就是指代 control,完整的意思就是 CTRL-m,表示就是系统中一行的结尾。

目前来说,就很不错了。如果我编辑、创建了十二次文件,这个键位映射就可以省掉了 2*12 次按键。不过这里没有计算你建立这个键位映射所花费的 11 次按键(计算 CTRL-v 和 : 均为一次按键)。虽然这样已经省了很多次,但是每次打开 vi 都要重新建立这个映射也会觉得非常麻烦。

幸运的是,这里可以将这些键位映射放到 vi 的启动配置文件中,让其在每次启动的时候自动读取:文件为 .exrc,对于 vim 是 .vimrc。只需要将这些文件放在你的用户根目录中即可,并在文件中每行写入一个键位映射,之后就会在每次启动 vi 生效直到你删除对应的配置。

在继续说明 map 其他用法以及其他的缩写机制之前,这里在列举几个我常用提高文本处理效率的 map 设置:

< 如显示不全,请左右滑动 >
映射 显示为
:map X :xCTRL-v<RET> :x^M
:map X ,:qCTRL-v<RET> ,:q^M

上面的 map 指令的意思是写入并关闭当前的编辑文件。其中 :x 是 vi 原本的命令,而下面的版本说明之前的 map 配置可以继续用作第二个 map 键位映射。

< 如显示不全,请左右滑动 >
映射 显示为
: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

(注意:在两个例子中出现的第一个 CRTL-v 在某些 vi 的版本中是不需要的)其中,:! 用来运行一个外部的(非 vi 内部的)命令。在这个拼写检查的例子中,% 是 vi 中的符号用来指代目前的文件, > 用来重定向拼写检查中的输出到 err 文件中,之后跟上 & 说明该命令是一个后台运行的任务,这样可以保证在拼写检查的同时还可以进行编辑文件的工作。这里我可以键入 verr<RET>(使用我之前定义的快捷键 v 跟上 err),进入 spell 输出结果的文件,之后再输入 CTRL-e 来回到刚才编辑的文件中。这样我就可以在拼写检查之后,使用 CTRL-r 来查看检查的错误,再通过 CTRL-e 返回刚才编辑的文件。

还用很多字符串输入的缩写,也使用了各种 map 命令,比如:

   
   
     
  1. :map! CTRL-o \fI

  2. :map! CTRL-k \fP

这个映射允许你使用 CTRL-o 作为 groff 命令的缩写,从而让让接下来书写的单词有斜体的效果,并使用 CTRL-k 进行恢复。

还有两个类似的映射:

   
   
     
  1. :map! rh rhinoceros

  2. :map! hi hippopotamus

上面的也可以使用 ab 命令来替换,就像下面这样(如果想这么用的话,需要首先按顺序运行: 1、 unmap! rh,2、umap! hi):

   
   
     
  1. :ab rh rhinoceros

  2. :ab hi hippopotamus

在上面 map! 的命令中,缩写会马上的展开成原有的单词,而在 ab 命令中,单词展开的操作会在输入了空格和标点之后才展开(不过在 Vim 和我的 vi 中,展开的形式与 map! 类似)。

想要取消刚才设定的按键映射,可以对应的输入 :unmap、 unmap! 或 :unab

在我使用的 vi 版本中,比较好用的候选映射按键包括 gKq、 v、 V、 Z,控制字符包括:CTRL-aCTRL-c、 CTRL-kCTRL-nCTRL-pCTRL-x;还有一些其他的字符如 #、 *,当然你也可以使用那些已经在 vi 中有过定义但不经常使用的字符,比如本文选择 X 和 I,其中 X 表示删除左边的字符,并立刻左移当前字符。

最后,下面的命令

   
   
     
  1. :map<RET>

  2. :map!<RET>

  3. :ab

将会显示,目前所有的缩写和键位映射。

希望上面的技巧能够更好地更高效地帮助你使用 vi。


via: https://opensource.com/article/18/5/shortcuts-vi-text-editor

作者:Dan Sonnenschein[4] 
选题:lujun9972 
译者:sd886393 
校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出


登录查看更多
0

相关内容

视觉识别系统出自“头脑风暴”一词。所谓头脑风暴(Brain-storming)系统是运用系统的、统一的视觉符号系统。视觉识别是静态的识别符号具体化、视觉化的传达形式,项目最多,层面最广,效果更直接。视觉识别系统属于CIS中的VI,用完整、体系的视觉传达体系,将企业理念、文化特质、服务内容、企业规范等抽象语意转换为具体符号的概念,塑造出独特的企业形象。视觉识别系统分为基本要素系统和应用要素系统两方面。基本要素系统主要包括:企业名称、企业标志、标准字、标准色、象征图案、宣传口语、市场行销报告书等。应用系统主要包括:办公事务用品、生产设备、建筑环境、产品包装、广告媒体、交通工具、衣着制服、旗帜、招牌、标识牌、橱窗、陈列展示等。视觉识别(VI)在CI系统大众所接受,据有主导的地位。
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【2020新书】从Excel中学习数据挖掘,223页pdf
专知会员服务
90+阅读 · 2020年6月28日
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【实用书】Python机器学习Scikit-Learn应用指南,247页pdf
专知会员服务
266+阅读 · 2020年6月10日
Python导论,476页pdf,现代Python计算
专知会员服务
260+阅读 · 2020年5月17日
Python分布式计算,171页pdf,Distributed Computing with Python
专知会员服务
107+阅读 · 2020年5月3日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
225+阅读 · 2020年3月22日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
msf实现linux shell反弹
黑白之道
49+阅读 · 2019年8月16日
7 款实用到哭的App,只说一遍
高效率工具搜罗
84+阅读 · 2019年4月30日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
如何编写完美的 Python 命令行程序?
CSDN
5+阅读 · 2019年1月19日
Python语音识别终极指南
人工智能头条
8+阅读 · 2018年4月8日
Python | 爬爬爬:爬百度云,爬百度贴吧,爬爱奇艺
计算机与网络安全
3+阅读 · 2018年3月30日
如何运用Python建一个聊天机器人?
七月在线实验室
17+阅读 · 2018年1月23日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
Advances in Online Audio-Visual Meeting Transcription
Arxiv
4+阅读 · 2019年12月10日
SlowFast Networks for Video Recognition
Arxiv
4+阅读 · 2019年4月18日
Arxiv
3+阅读 · 2018年11月29日
Arxiv
6+阅读 · 2018年3月31日
Arxiv
9+阅读 · 2016年10月27日
Arxiv
3+阅读 · 2012年11月20日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【2020新书】从Excel中学习数据挖掘,223页pdf
专知会员服务
90+阅读 · 2020年6月28日
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【实用书】Python机器学习Scikit-Learn应用指南,247页pdf
专知会员服务
266+阅读 · 2020年6月10日
Python导论,476页pdf,现代Python计算
专知会员服务
260+阅读 · 2020年5月17日
Python分布式计算,171页pdf,Distributed Computing with Python
专知会员服务
107+阅读 · 2020年5月3日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
225+阅读 · 2020年3月22日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
相关资讯
msf实现linux shell反弹
黑白之道
49+阅读 · 2019年8月16日
7 款实用到哭的App,只说一遍
高效率工具搜罗
84+阅读 · 2019年4月30日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
如何编写完美的 Python 命令行程序?
CSDN
5+阅读 · 2019年1月19日
Python语音识别终极指南
人工智能头条
8+阅读 · 2018年4月8日
Python | 爬爬爬:爬百度云,爬百度贴吧,爬爱奇艺
计算机与网络安全
3+阅读 · 2018年3月30日
如何运用Python建一个聊天机器人?
七月在线实验室
17+阅读 · 2018年1月23日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
Top
微信扫码咨询专知VIP会员