为什么我的 map 命令在 vi/ex 中不起作用?

为什么我的 map 命令在 vi/ex 中不起作用?

我刚刚学习如何使用 vi 编辑器,并尝试在我的 .exrc 文件中使用以下 map 命令:

map K 0I^I^[j0O^I^[j0

这就是我在 ex 模式下创建地图并手动输入时出现的内容,并给了我这些转义代码。我希望它:

  1. 转到行首
  2. 插入模式
  3. 按 T​​ab 键 ( ^I)
  4. Esc键
  5. 向下一行
  6. 转到行首(我想没有必要)
  7. 在下面另起一行
  8. 再次标签
  9. Esc键
  10. 向下一行
  11. 转到该行的开头

但它不起作用!它执行了 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",它就正常工作了!感谢您的帮助!

相关内容