由于历史原因,终端无法将 tab 与 Ctrl + I 区分开。当我使用Vim时,这很混乱:我的肌肉记忆告诉我 Ctrl + I 将使我前进到“跳转列表”中的下一个位置,但是有些Vim -插件会重新映射 tab 键来做其他一些好事。
当活动窗口的左下角没有显示“特殊字符”时,我可以从ahk_process gvim.exe
为活动窗口进行“条件映射”吗?
最后,我只想将 tab 键映射为“ 普通模式”。我能想到的最好的方法是对左下角的像素固定区域进行OCR,并使其成为条件像素。但是,我没有在AHK上完成OCR工作的经验。
旁注:我正在向Vim社区寻求同一个问题的反面:https://vi.stackexchange.com/questions/18796/may-i-have-a-vim-session-report-its-mode-in-its-window-title
答案 0 :(得分:2)
无需OCR / AHK黑客攻击。
:nmap
(和:nnoremap
)仅在普通模式下映射。
:imap
(和:inoremap
)仅在插入模式下映射。
等
有关各种模式的各种不同的映射命令,请参见:help :map-commands
。
如果某个插件正在覆盖 Tab 的常规模式映射,请使用:verbose nmap <Tab>
(或等效的:verbose nmap <C-I>
)查看犯罪者是谁,然后查看它的文档以了解如何重新绑定它(或者在最坏的情况下,消除罪魁祸首)。
答案 1 :(得分:2)
无需获取Vim的当前模式即可将其用于其他应用程序。那真的很麻烦。如果您的最终目标是向<Tab>
/ <C-i>
发送不同的密钥给Vim(例如<F13>
而不是<Tab>
),而您只希望Vim在某些模式下做出不同的反应(例如正常模式),您可以映射其他模式以再次统一两个键:
:nnoremap <F13> ... " Functionality A
:nnoremap <C-i> ... " Functionality B
:map! <F13> <C-i> " Both keys continue to do the same in insert and command-line mode.