2014-02-24 24 views
0

下面是VIM的提示receipe:輸入H,J,K,L在GTK程序用vi風格的鍵綁定

# /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。這怎麼解決?

回答

3

你錯過了房間裏的大象:Vi(m)是模式編輯器,而GtkTextView小部件顯然不是。

非模態編輯器或文本框窗口小部件(如您正在玩的窗口小部件)都有自己的方法來處理鍵盤的字母數字鍵:修飾鍵。

要麼

  • 你打一鍵進入某種模式,您可以打hjkl,而無需在文本中插入他們

  • hjkl修飾鍵。

這些基本上是你唯一的選擇。

對光標移動使用hjkl只有當用戶處於阻止他/她插入他/她類型的模式時是有意義的。不過,它可能在GtkTreeView或用戶不希望鍵入文本的其他上下文中「起作用」。

所以......我不確定你是否真的對你的問題給了很多想法。