在具有vi样式键绑定的gtk应用程序中输入h,j,k,l

时间:2014-02-24 15:01:40

标签: vim gtk keyboard-shortcuts

这是来自vim提示的附件:

# /usr/share/themes/Vi/gtk-2.0-key/gtkrc
# A key-binding set for vi-like key-bindings

binding "gtk-vi-text-view"
{
  bind "<ctrl>d" { "move-cursor" (display-lines, 5, 0) }
  bind "<ctrl>f" { "move-cursor" (display-lines, 5, 0) }
  bind "<ctrl>u" { "move-cursor" (display-lines, -5, 0) }
  bind "<ctrl>b" { "move-cursor" (display-lines, -5, 0) }
  bind "<ctrl>e" { "move-cursor" (display-lines, -1, 0) }
  bind "<ctrl>y" { "move-cursor" (display-lines, 1, 0) }
  bind "j" { "move-cursor" (display-lines, 1, 0) }
  bind "k" { "move-cursor" (display-lines, -1, 0) }
  bind "l" { "move-cursor" (logical-positions, 1, 0) }
  bind "h" { "move-cursor" (logical-positions, -1, 0) }
}

binding "gtk-vi-tree-view"
{
  bind "j" { "move-cursor" (display-lines, 1) }
  bind "k" { "move-cursor" (display-lines, -1) }
  bind "l" { "move-cursor" (logical-positions, 1) }
  bind "h" { "move-cursor" (logical-positions, -1) }
}

class "GtkTextView" binding "gtk-vi-text-view"
class "GtkTreeView" binding "gtk-vi-tree-view"

# The last part is to note your local gtk configuration file. Check in your home directory file named '.gtkrc-2.0'. and "touch" it. The only thing left to be done is appending:

gtk-key-theme="Vi"

这一切都很好,但问题是,在这种配置下,不再可能输入字母 h,j,k和l。怎么解决这个问题?

1 个答案:

答案 0 :(得分:3)

你错过了房间里的大象:Vi(m)是模态编辑器,而GtkTextView小部件显然不是。

您正在玩的非模态编辑器或文本域小部件有自己的方式来处理键盘的字母数字键:修饰键。

无论

  • 您点击某个键进入某种模式,您可以点击hjkl而不将其插入文字中

  • hjkl 加上修改键。

这些基本上是你唯一的选择。

当用户处于阻止他/她插入他/她键入内容的模式时,仅使用hjkl进行光标移动 是有意义的。它可以在GtkTreeView或其他不希望用户输入文本的上下文中“起作用”。

所以......我不确定你是否真的考虑过你的问题。