unix vi 编辑器:映射 ^J

unix vi 编辑器:映射 ^J

我正在读《学习 vi 编辑器》这本书(琳达·兰姆和阿诺德·罗宾斯,第 6 版)。第115页,书上有一个这样的命令:

:map ^J xyz

xyz 部分本身在这里并不重要,我的问题是制作该^J部分。

我尝试过ctrl+ V ctrl+ j(例如ctrl+v可以用来转义 Enter)和直接ctrl+j

在这两种情况下都不起作用。

我在 FreeBSD 11.0 中使用 vi 编辑器,它不是 vim (vi 改进)。

- - - 编辑 - - -

视频:

https://vimeo.com/212400468

00:05 - 映射 ctrl+K 执行 dd (删除整行)

00:19 - 尝试使用 ctrl+J 执行相同的操作,但它不起作用,因为 ctrl+J 触发了一个表。

00:25 - 使用 ctrl+V ctrl+J 重试。它也不起作用,触发表。

00:33 - 尝试精确映射“^J”

00:44 - 尝试使用 ctrl+J,但它没有按预期工作。它可以输入序列“^J”。

答案1

这实际上似乎是书中的一个错误。该示例后面是以下注释:

在前面的例子中,尽管^J是一个命令(它将光标向下移动一行),此键可以安全映射,因为它实际上与命令相同j。有许多键要么执行与其他键相同的操作,要么很少使用。但是,您应该熟悉命令之前,您可以通过在地图定义中使用它们来大胆地禁用它们的正常使用。

通常的推论为^JcontrolJ。但是第六版中提到的 vi 都不允许在文本中插入文字 control/J,因为这是类 Unix 系统的行结束符(^@当尝试转义 control/J 时,vim 会给你一个空字符,其他编辑忽略这一点)。 A文字^J”不适用于注释,因为这些字符不是命令。

您可以使文字^J“工作,当然。但这不是这个例子的重点。很可能作者想要一些其他有趣的角色,并出于某种原因改变了它。

相关内容