![为什么我的 map 命令在 vi/ex 中不起作用?](https://linux22.com/image/947942/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E7%9A%84%20map%20%E5%91%BD%E4%BB%A4%E5%9C%A8%20vi%2Fex%20%E4%B8%AD%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
我刚刚学习如何使用 vi 编辑器,并尝试在我的 .exrc 文件中使用以下 map 命令:
map K 0I^I^[j0O^I^[j0
这就是我在 ex 模式下创建地图并手动输入时出现的内容,并给了我这些转义代码。我希望它:
- 转到行首
- 插入模式
- 按 Tab 键 (
^I
) - Esc键
- 向下一行
- 转到行首(我想没有必要)
- 在下面另起一行
- 再次标签
- Esc键
- 向下一行
- 转到该行的开头
但它不起作用!它执行了 0 和 I,然后像在插入模式下一样插入其余的映射键^I^[j0O^I^[j0
。请告诉我,为什么它不起作用?我做错了什么?
答案1
在 Vivian De Smedt(以及建议我去 vi.stackexchange.com 发布我的问题的 mattb)的帮助下,我了解到,如果我输入 :map (带有冒号,所以我实际上是在 ex,而不是 vi),ex 将 Tab 转换为“^I”序列,因此我认为当我在 .exrc 文件中使用 vi 输入序列时,它会以相同的方式工作(但使用“map”,而不是“:map”,因为我正在阅读的书说您不需要 .exrc 文件中的 :)。在那里输入时,序列 Ctrl-v Tab 将 Tab 打印为空格,而不是“^I”。显然,为了使其正常工作,我需要使用实际的制表符生成按键序列,而不是“^I”。一旦我这样做,地图看起来如下:"map K 0I ^[j0O ^[j0"
,它就正常工作了!感谢您的帮助!