将特定键盘键映射到vim


1

我有一个巨大的键盘:微软人体工程学键盘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

但它没有用。任何提示都会受到欢迎!


我真的不相信这是这个问题的正确论坛 - 请您查看我们的常见问题解答。
Chopper3 2010年

嗯,我只是把常见问题解答,你是对的!我在超级用户上发布了相同的主题。谢谢,对不起

Answers:


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键。Voilà,键码发现插入。


好吧它在gvim工作,但即使从gnome-terminal启动也不在vim中。有什么不同吗?据我所知,它不适用于真正的“控制台”
2010年

您可能需要告诉vim如何解释终端传递的密钥代码。通常这些代码与普通的x程序不同(这就是为什么gvim得到的代码)。使用vim FROM YOUR TERMINAL编辑.vimrc文件。在您的映射行之前,添加如下内容:set <F13>=^[[25~...键盘代码很容易填写。由于您已经使用vim在终端中,只需使用CTRL-v快捷键插入视觉角色,然后点击新的F键,它将填写从终端获得的代码。在那之后当然添加你的map / nmap宏。
Caleb 2010年

请参阅上面编辑过的答案,我将评论从评论中移开回答。
Caleb 2010年

1

我在这里使用以下命令找到了vim的解决方案:

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

必须按原样键入{}之间的键,然后将键映射到:

:map < F13> :undo<CR>

看起来我们都在同时追逐这个:)看到我上面编辑的答案。
Caleb 2010年

0

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

为什么不简单地使用<FN>键映射?只是做:nnoremap <F2> u等等其他键?

我想知道,简单地按下u撤消是不是更容易?(是的,不是编辑模式。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.