博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vi快捷方式_如何在vi中创建快捷方式
阅读量:2530 次
发布时间:2019-05-11

本文共 2655 字,大约阅读时间需要 8 分钟。

vi快捷方式

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

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

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

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

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

:w

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

:map , :wCTRL-v

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
                    :x^M
or
:map X ,:qCTRL-v
                  ,:q^M

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

:map v :e
                  :e

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

:map CTRL-vCTRL-e :e
#CTRL-v
    :e #^M

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

map CTRL-vCTRL-r :!spell %>err &CTRL-v
    :!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
:map!
:ab

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

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

翻译自:

vi快捷方式

转载地址:http://hwnzd.baihongyu.com/

你可能感兴趣的文章
阶段3 2.Spring_10.Spring中事务控制_9 spring编程式事务控制1-了解
查看>>
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制
查看>>
阶段3 3.SpringMVC·_01.SpringMVC概述及入门案例_07.入门案例中使用的组件介绍
查看>>
阶段3 3.SpringMVC·_02.参数绑定及自定义类型转换_1 请求参数绑定入门
查看>>
阶段3 3.SpringMVC·_02.参数绑定及自定义类型转换_2 请求参数绑定实体类型
查看>>
阶段3 3.SpringMVC·_02.参数绑定及自定义类型转换_4 请求参数绑定集合类型
查看>>
阶段3 3.SpringMVC·_02.参数绑定及自定义类型转换_3 配置解决中文乱码的过滤器
查看>>
阶段3 3.SpringMVC·_02.参数绑定及自定义类型转换_6 自定义类型转换器代码编写
查看>>
阶段3 3.SpringMVC·_02.参数绑定及自定义类型转换_5 自定义类型转换器演示异常
查看>>
阶段3 3.SpringMVC·_03.SpringMVC常用注解_1 RequestParam注解
查看>>
阶段3 3.SpringMVC·_02.参数绑定及自定义类型转换_7 获取Servlet原生的API
查看>>
阶段3 3.SpringMVC·_03.SpringMVC常用注解_2 RequestBody注解
查看>>
阶段3 3.SpringMVC·_03.SpringMVC常用注解_3 PathVariable注解
查看>>
阶段3 3.SpringMVC·_03.SpringMVC常用注解_4 HiddentHttpMethodFilter过滤器
查看>>
阶段3 3.SpringMVC·_03.SpringMVC常用注解_6 CookieValue注解
查看>>
阶段3 3.SpringMVC·_03.SpringMVC常用注解_5 RequestHeader注解
查看>>
阶段3 3.SpringMVC·_03.SpringMVC常用注解_7 ModelAttribute注解
查看>>
阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_1 搭建环境
查看>>
阶段3 3.SpringMVC·_03.SpringMVC常用注解_8 SessionAttributes注解
查看>>
阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_3 响应之返回值是void类型...
查看>>