我在极简主义的 FreeBSD 系统上,需要使用内置的vi编辑器来编辑文件。具体来说,这不是 vim、vim-tiny 或其他替代品。它是“4BSD bug-for-bug 兼容”nvi 编辑器。
它几乎按预期工作。手册页说 control-T 和 control-D 将根据shiftwidth
. Control-T 有效,但 control-D 无效。它实际上将 ^D 字符输入到文件中。
如果我确实将 vim 安装到系统上,control-T 和 control-D 会按预期工作,所以这不是终端错误解释密钥的问题。Vi 本身不解释 control-D。
有人遇到这个吗?一个解决方案?使用 vim 不是一种选择。
tl;博士;
vim
不是vi
。在
vi
中,您应该使用 Control-T 而不是 Tab 来缩进一行。如果你发现很难重新训练,你可以添加一个从 Tab 到 Control-T 的输入模式映射:
在真实
vi
的 和nvi
克隆中(在 FreeBSD 中使用),control-D 将擦除自动缩进字符,直至先前的“shiftwidth”边界。它不会擦除您通过按 Control-I、Tab 或 Space 手动输入的制表符或空格字符。这是错误对错误兼容性的一部分。
在来源的评论中有一个关于它的冗长讨论,在
/usr/src/contrib/nvi/vi/v_txt.c
. 输入被视为文字␄
字符,除非ai
模式打开并且最后插入的字符是自动缩进字符(通过Control+T或在新行上自动缩进)。评论还指出 original
vi
的Control+T和Control+D受到更多限制,只有当它们是在插入模式下键入的第一个内容时才会影响缩进。