Vim + Catalina
我刚刚切换到 MacOS Catalina,它有现成的 zsh 和 vim 8.1。
VIM - Vi IMproved 8.1 (2018 May 18, compiled Dec 13 2019 14:45:40)
Included patches: 1-503, 505-680, 682-1312
Compiled by [email protected]
我使用 Karabiner Elements 和 BetterTouchTool 将 Caps Lock 映射到delete_or_backspace
并将 Delete 映射到delete_forward
(又名fn
+ delete
)。
删除转发 => 大小写互换
我遇到一个问题,使用delete_forward
( fn
+ delete
) 会将光标下的内容替换为相反的情况。
例如,假设我有以下文本:
func SomeFunc() {
return true
}
无论我处于命令(?)模式还是处于插入模式,使用前向删除都会交换大小写,如下所示:
FUNC sOMEfUNC() {
RETURN TRUE
}
我的delete_forward
样子:
它似乎在所有其他程序中都按预期运行。这是我得到的转义序列:
cat
hello^[[3~^[[3~^[[3~^[[3~^[[3~
那就是我输入 5 个字母(“hello”)然后按 5 次前进删除键。
另外,这是我从:set t_kD
vim 内部获得的信息:
E846: Key code not set: t_kD
:echo $TERM
揭示了以下内容:
ansi
:set term?
给出:
term=ansi
该怎么办?
我以前也见过这种情况,但我不知道是什么原因造成的,如果我按下 Esc 或退出并重新启动,它就会自行修复。在我的新电脑上...它一直存在。
我想这只是我意外启用的某种新的默认设置或选项。
无论如何,我的插件(sensible、syntastic、solarized、rust)似乎都无法加载,但我怀疑这不是它们的错。
答案1
您遇到的问题与终端设置有关,您可以在$TERM
环境变量或:set term?
Vim 中的选项中找到它。
您将该变量设置为ansi
,这是一个功能相当差的终端设置,缺少很多颜色和对特殊键(如箭头键、删除键等)的支持。
您应该配置您的终端设置以使用功能更强大的终端,例如xterm
或理想情况下xterm-256color
。
在聊天中,我们确定您很可能从 Terminal.app 中针对 Solarized 配色方案的配置文件中获取了此设置。由于配置文件包含所有内容(而不仅仅是配色方案)的设置,因此此ansi
终端仿真设置随附于此。将其切换到xterm-256color
并启动一个新 shell(以$TERM
正确设置),您应该一切就绪了!