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「工作,當然。但這不是這個例子的重點。很可能作者想要一些其他有趣的角色,並出於某種原因改變了它。

相關內容