我正在讀《學習 vi 編輯器》這本書(琳達·蘭姆和阿諾德·羅賓斯,第 6 版)。第115頁,書上有一個這樣的命令:
:map ^J xyz
xyz 部分本身在這裡並不重要,我的問題是製作該^J
部分。
我嘗試過ctrl+ V ctrl+ j(例如ctrl+v可以用來轉義 Enter)和直接ctrl+j
在這兩種情況下都不起作用。
我在 FreeBSD 11.0 中使用 vi 編輯器,它不是 vim (vi 改進)。
- - - 編輯 - - -
影片:
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
命令相同。有許多鍵要么與其他鍵執行相同的任務,要么很少使用。但是,您應該熟悉六在命令之前,您可以透過在地圖定義中使用它們來大膽地停用它們的正常使用。
通常的推論為^J
是controlJ。但第六版中提到的 vi 都不允許在文本中插入文字 control/J,因為這是類 Unix 系統的行結束符(^@
當嘗試轉義 control/J 時,vim 會給你一個空字符,其他編輯忽略這一點)。 A文字「^J
」不適用於註釋,因為這些字元不是六命令。
你可以使文字」^J
「工作,當然。但這不是這個例子的重點。很可能作者想要一些其他有趣的角色,並出於某種原因改變了它。