目标是在 Ubuntu 上安装的 Vim 中将 CapsLock 重新映射为 Esc(仅限控制台,无桌面环境)。
此 Ubuntu 系统安装在虚拟专用服务器上。我正在使用 Putty 从装有 Windows 10 的家用笔记本电脑登录到此服务器。
每个人都在谈论将这个 CapsLock 键映射到 Vim 中的 Esc,但我无法找到实际的行,需要将 2 写入 $HOME/.vimrc 文件中。
这是我自己尝试过的,但除了第一行添加行号之外,这些都不起作用:
set number
inoremap <Caps> <Esc>
inoremap <Caps_Lock> <Esc>
inoremap <CapsLock> <Esc>
目标是仅在 Vim 中将 CapsLock 重新映射到 Esc,而不是在整个 Ubuntu 服务器中。
我检查过,CapsLock 在 Vim 中工作正常,并且在锁定时变为大写。
我搜索过很多地方,例如: https://vim.fandom.com/wiki/Mapping_keys_in_Vim_-教程(第1部分) 本指南的所有 3 部分以及这里以及。
就像所有内容都写在那里一样:映射“ii”、“jj”、“jk”、“jw”不同的 Ctrl 和 Shift 组合。除 CapsLock 之外的所有内容都重新映射为 Esc。
???为什么 ???
为什么在 Vim 中将 CapsLock 重新映射到 Esc 如此困难? 这几乎是我的问题,但不幸的是在 Windows 操作系统上。
从我的问题下面的评论中我了解到,仅在 Vim 中将 CapsLock 映射到 Esc 是不可能的。
我也读过这个主题:如何在 Vim 中使用 CapsLock 代替 Escape?
接受的答案指出:“为了在控制台中重新映射,如果您的发行版使用systemd
,您可以使用自定义键盘布局,/etc/vconsole.conf
如拱门维基”。
我猜Ubuntu使用的是systemd
,所以我准备接受将 CapsLock 映射到安装在我的 VPS 上的整个 Ubuntu 中的 Esc 键的答案,提供我家的Windows机器按键映射,保持不变。
我已经运行了这个:
michal@localhost:~$ localectl status
System Locale: LANG=en_US.UTF-8
VC Keymap: n/a
X11 Layout: us
X11 Model: pc105
接下来我应该做什么?
/etc/vconsole.conf
我想我的 Ubuntu VPS 上没有这个文件。我应该自己创建它,还是应该默认存在?
答案1
一个简单的替代方法是将其添加到您的 vimrc 文件中
imap ii <Esc>
这里我使用 ii( 2 'i's ) 而不是 Escape 返回到正常模式。
在英语中,您可能很少遇到带有两个连续 ii 的单词,因此您不会意外进入正常模式。
如果您愿意,您也可以将 ii 替换为任何其他键,但据我所知并且我已经尝试过,它不适用于 Caps Lock、Shift、Ctrl 和 Alt 等键,因为它们需要任何其他键才能提供某些功能有意义的。