vim - 区分 Vim 中两次击键之间修饰键的按住和释放

标签 vim key-bindings

我想在 Vim 中进行映射,以便 CtrlTab 切换到前一个缓冲区 (:b#),但随后如果再次按下 Tab 而不释放 Ctrl,则切换到下一个缓冲区 (:bn)。

这类似于 MS Windows 中的 AltTab 功能的工作方式。有什么办法可以达到这样的效果吗?
我似乎在其他地方找不到这个问题。

最佳答案

Vim 只处理完整的按键; <LeftMouse> 中只有轻微的语义差异与 <LeftRelease> 。您需要以某种方式将键和弦处理为不同的、单独的击键(也许是一些未使用的 <F13> 键?),然后可以 :map Vim 内部的那个。在 Windows 上,AutoHotkey tool会让你实现这一目标。

或者,您可以 :nmap <C-Tab> ,并检查先前的调用是否最近才发生(使用 localtime() )。这应该会给你一些实际上按照你想要的方式工作的东西。

关于vim - 区分 Vim 中两次击键之间修饰键的按住和释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16564293/

相关文章:

search - Vim:在匹配另一个模式后搜索第一个匹配项

python - 在 vim/emacs 中自动包含 python 导入语句?

vim - 强制 vim 重新加载已经加载的自动加载 vim 文件

vim - 如何从 Vim 递归打印当前工作目录下的所有文件?

未调用 java keylistener

展开 html 标签后的 Vim 光标位置

java - 使用按键绑定(bind)在两种形式之间切换

java - Java 中带有键绑定(bind)的 keyReleased() 方法?

macros - Sublime Text 绑定(bind) : insert semicolon at eol and come back

java - Keymap、InputMap、ActionMap、KeyListener — 选择重载