18

在 Emacs 中使用 Windows 键作为 Meta 非常有用,有没有办法在 Vim 中做到这一点?

4

5 回答 5

10

即使在终端中,您也绝对可以,尽管您必须将其用作元键(我发现无法单独使用它)。

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

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

最后,您的行应如下所示:

nnoremap ^X@sq :q<CR>

保存并退出,再次启动 vim,就是这样。

注意:Ctrl+v在插入模式下,按字面意思插入以下键/键组合。有关更多信息,请尝试:help i_CTRL-V使用 vim。

于 2014-04-08T13:11:01.667 回答
6

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

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

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

于 2012-07-04T12:23:51.897 回答
6

您可以使用AutoHotkey 将windows 键映射到不同的键。仅当 vim 处于活动状态时才激活映射:

#IfWinActive ahk_class GVIM
RWin::Alt  
LWin::Alt  
#IfWinActive  ; This puts subsequent remappings and hotkeys in effect for all windows.
于 2008-11-29T11:57:30.120 回答
4

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

我将左 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

于 2010-04-07T20:13:03.267 回答
0

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

于 2008-11-29T11:12:45.093 回答