将特定键盘键映射到 vim

将特定键盘键映射到 vim

我有一款超棒的键盘:Microsoft Ergonomic keybord 4000。我也是 Fedora 上的 Vim 重度用户。

键盘上有一个开关 - FLock - 可以改变所有键的值。一旦切换,X 就会将它们视为 =Help =Undo =Redo 等等。但我没能将这些键映射到 vim 中的操作

切换前的 xev:

state 0x2010, keycode 68 (keysym 0xffbf, F2), same_screen YES

切换后 xev:

state 0x2010, keycode 139 (keysym 0xff65, Undo), same_screen YES

所以我尝试在 vim 中使用基本地图

:map u

但它不起作用。欢迎提供任何提示!

答案1

我建议使用 xmodmap 在 X 级别重新绑定额外的键,这样它们就不会触发所有奇怪的键码(如“撤消”),而是触发标准 F 代码(如“F20”)。这使得它们更容易在终端和 vim 等程序中绑定。

你的 .xmodmaprc 文件中需要类似这样的内容:

keycode 139 = F13

然后,该键就可以按照通常的方式进行映射了。从 .vimrc 文件中,您可以创建如下映射:

map <F13> YOUR_COMMAND_HERE

以上内容适用于 X 级别的绑定,也适用于 gvim,但终端程序中的键码略有不同。您可能需要告诉 vim 您的新键码,以便它知道终端发送的奇怪东西是 F13。您可以通过在键映射上方添加一行(参见上文)来实现此目的,如下所示:

set <F13>=^[[25~

当然,您需要的疯狂代码序列将根据您绑定的键、键盘和终端等而有所不同,但填写起来确实很容易。使用您通常使用的终端,用 vim 打开 .vimrc。填写行的第一部分,set <F13>=然后仍然在插入模式下按 CTRL+v 插入可视键代码,然后点击您尝试绑定的新 F 键。瞧,找到并插入了键代码。

答案2

我找到了一个针对 vim 的解决方案这里使用以下命令:

set < F13>={C-v}{myspecialkey}

{ } 之间的键必须按原样输入,然后使用以下命令映射键:

:map < F13> :undo<CR>

答案3

我有相同的键盘,在 Linux 下“特殊”键并不像平常那​​么有用<FN>。)。

为什么不直接使用<FN>按键映射?:nnoremap <F2> u其他按键也一样吗?

我很好奇,直接按下“撤消”按钮不是更简单吗u?(是的,不是在编辑模式下。)

相关内容