【发布时间】:2014-01-03 18:21:44
【问题描述】:
我一直在 Vim 中使用一些映射,以避免切换键盘布局以输入我的语言(克罗地亚语)的变音符号。但是,现在我想将这些映射“向上”移动,以便它们在全球范围内可用。我尝试为此使用 AutoHotkey。这是我写的映射
#CommentFlag //
!;::Send {U+010D} // č
!'::Send {U+0107} // ć
!]::Send {U+0111} // đ
![::Send {U+0161} // š
!\::Send {U+017E} // ž
这些在我尝试过的每个应用程序(浏览器、记事本、MS Word)中都很好用,但在 Vim 中不起作用,这很烦人,因为我大部分时间都在那里打字。更具体地说,只有“š”和“ž”按预期工作,而 Alt-;和 Alt-' 给我一个 'c'(而不是 'č' 和 'ć'),而 Alt-] 给我一个 'd'(而不是 'đ')。
我正在使用 AutoHotkey_L(尽管我使用“常规”AHK 得到了相同的结果),Vim 7.3(在 gVim 中尝试这个;它在终端版本中也不起作用(以稍微不同的方式)但我在 Win8 上真的不在乎。
我可以提供有关 Vim 版本的更多信息,但它基本上是来自 vim.org 的那些 Windows 二进制文件之一。我想可能很重要的是它有 +multi_byte,而且我一直在其中使用 Unicode,没有任何问题。
更新:
根据下面 Ingo 的建议,我尝试使用 IfWinNotActive 来避免 Vim 中存在映射并继续在那里使用我的旧映射。这是我试过的一个例子
SetTitleMatchMode 2
IfWinNotActive GVIM
{
#CommentFlag //
!;::Send {U+010D} // č
!'::Send {U+0107} // ć
!]::Send {U+0111} // đ
![::Send {U+0161} // š
!\::Send {U+017E} // ž
}
我还尝试了Vim 窗口类(使用ahk_class)、#IfWindowNotActive 等的许多其他变体,但无济于事...... Vim 中仍然存在映射。顺便说一句,窗口标题始终包含字符串“GVIM”,而 AHK 看到了这一点,正如我通过 WinGetTitle 确认的那样。
【问题讨论】:
-
:set encoding?的价值是多少
标签: vim unicode autohotkey diacritics