适用于所有程序的通用vim键盘快捷键

时间:2013-04-28 23:47:37

标签: linux x11 shortcut

如何在所有其他程序中编写程序来实现vim功能:

  1. 在所有其他程序之前捕获击键
  2. 根据以前的状态判断它是处于正常模式,插入模式还是可视模式
  3. 如果处于插入模式,则向精确窗口发送精确击键
  4. 如果没有从配置文件中读取相应的操作并将该操作(即另一次击键)发送到焦点窗口
  5. 例如当我点击“j”时,如果它处于正常模式,它会发送“向下滚动”快捷方式,如果它处于插入模式,它会向聚焦窗口或程序发送“j”字符

    我的问题是

    有可能吗? 有没有类似的程序? 如何在所有其他程序之前捕获击键? 如何将按键发送到聚焦窗口? 实际上我需要使用哪个库?

    感谢

1 个答案:

答案 0 :(得分:0)

我有点找到答案。使用i3wmxdotool,您可以模拟类似vim的行为

在i3wm中,您可以定义不同的模式并为不同的操作分配相同的快捷方式,如下所示:

mode "workspace" {
    bindsym j workspace prev
    bindsym h workspace prev
    bindsym k workspace next 
    bindsym l workspace next 
    bindsym Escape mode "default"
}
bindsym $mod+w mode "workspace"

将以上代码添加到.i3 / cofig文件中,我使用Mod4(win key)代替我的$ mod

现在当你点击Mod4 + w i3进入工作区模式,你可以通过hljk更改工作区

这是另一个实际上对我不起作用的例子,但也许它对你有用

mode "vim" {
    bindsym --release j exec --no-startup-id xdotool key --clearmodifiers Down 
    bindsym --release k exec --no-startup-id xdotool key --clearmodifiers Up
    bindsym --release h exec --no-startup-id xdotool key --clearmodifiers Left 
    bindsym --release l exec --no-startup-id xdotool key --clearmodifiers Right
    bindsym Escape mode "default"
}
bindsym $mod+m mode "vim"