Windows键可以在Vim中映射吗?

18

在Emacs中使用Windows键作为Meta非常有用,那么在Vim中有没有这样的方法呢?

5个回答

10

即使在终端中,您肯定可以使用Windows键,但必须将其用作元键(我没有找到单独使用它的方法)。

使用vim编辑您的.vimrc文件。假设您想要在正常模式下重新映射Win+q以退出vim。只需添加您的映射,并在尝试指示快捷方式时按Ctrl+V,然后按Win+q

这将向您的文件添加类似于^X@sq的内容(但不要直接键入它,因为^X是一个特殊字符)。

最终,您的行应该看起来像:

nnoremap ^X@sq :q<CR>

保存并退出,再次启动vim即可。

注意:在插入模式下使用Ctrl+v可以将后面的按键/组合键字面输入。欲了解更多信息,请在vim中尝试:help i_CTRL-V


在更遥远的未来,您可以在xmodmap中将<Win>映射到Mod4,并毫不犹豫地使用它。 - GT.

7

很抱歉回答这么古老的问题,但解决方案非常简单:在终端中无法使用Win键,但可以在Gvim中使用它。只需将其作为修饰键T传递即可。例如:

:nmap <T-F5> :q<cr> 

将Win+F5映射为:q命令。但它只能在*nix下使用。


1
在 Linux 的普通 vim 上是什么?我试过这个 T 的东西,但没有起作用。 - Zen
这似乎不能与最常见的gvim前端(GTK3)一起使用,它似乎只能与旧的gvim GTK2前端一起使用:链接 - durum
是的。在回答这个问题时,GTK3前端界面还不存在。 - frp
这对我有用: :map <T-Right> :tabn<CR> :map <T-Left> :tabp<CR> - Chand Priyankara

6

您可以使用AutoHotkey将Windows键映射到其他键。仅在Vim处于活动状态时激活映射:

#IfWinActive ahk_class GVIM
RWin::Alt  
LWin::Alt  
#IfWinActive  ; This puts subsequent remappings and hotkeys in effect for all windows.

5

这些答案(包括本答案)都不是特定于vim的,所选答案是特定于Windows的。这里有一个适用于*nix运行X的方法。

我将我的左Win键映射为Esc键。这在虚拟终端中不起作用,但在X中可以使用。

要么:
(1) 将keysym Super_L = Escape追加到~/.Xmodmap中,并执行xmodmap .Xmodmap
|______(1a) 与 echo "keysym Super_L = Escape" >> ~/.Xmodmap && xmodmap .Xmodmap 相同。
(2) 执行xmodmap -e "keysym Super_L = Escape"

如果您希望它在虚拟终端中起作用,请参见[0]。

参考文献:
[0] http://www.mail-archive.com/screen-users@gnu.org/msg02859.html
[1] http://www.paganini.net/index.cgi/linux/nocaps.html
[2] http://ubuntuforums.org/archive/index.php/t-975229.html


非常感谢您提供的详细信息,特别是屏幕方面的。虽然我必须承认,我一般不会太想念WinKey。 - sehe

0

不太确定,但 Ctrl+Esc 组合键只是 Windows 上的键映射。它对 vim 没有帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接