Vim 使用vi风格的键绑定在gtk应用程序中输入h、j、k、l

Vim 使用vi风格的键绑定在gtk应用程序中输入h、j、k、l,vim,gtk,keyboard-shortcuts,Vim,Gtk,Keyboard Shortcuts,以下是来自vim tips的receipe: # /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-

以下是来自vim tips的receipe:

# /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"
#/usr/share/themes/Vi/gtk-2.0-key/gtkrc
#用于vi类键绑定的键绑定集
绑定“gtk vi文本视图”
{
绑定“d”{“移动光标”(显示行,5,0)}
绑定“f”{“移动光标”(显示行,5,0)}
绑定“u”{“移动光标”(显示行,-5,0)}
绑定“b”{“移动光标”(显示行,-5,0)}
绑定“e”{“移动光标”(显示行,-1,0)}
绑定“y”{“移动光标”(显示行,1,0)}
绑定“j”{“移动光标”(显示行,1,0)}
绑定“k”{“移动光标”(显示行,-1,0)}
绑定“l”{“移动光标”(逻辑位置,1,0)}
绑定“h”{“移动光标”(逻辑位置,-1,0)}
}
绑定“gtk vi树视图”
{
绑定“j”{“移动光标”(显示行,1)}
绑定“k”{“移动光标”(显示行,-1)}
绑定“l”{“移动光标”(逻辑位置,1)}
绑定“h”{“移动光标”(逻辑位置,-1)}
}
类“GtkTextView”绑定“gtk vi文本视图”
类“GtkTreeView”绑定“gtk vi树视图”
#最后一部分是注意您的本地gtk配置文件。签入名为“.gtkrc-2.0”的主目录文件。并“触摸”它。唯一要做的就是附加:
gtk key theme=“Vi”
这很好,但问题是,在这种配置下,无法再输入字母
h、 j、k和l。如何解决这个问题?

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

非模态编辑器或文本字段小部件(如您正在使用的小部件)有自己处理键盘字母数字键的方法:修改键

或者

  • 您可以按一个键进入某种模式,在这种模式下,您可以按hjkl而无需在文本中插入它们

  • 按hjkl加上一个修改键
这些基本上是你唯一的选择

使用
hjkl
移动光标只有在用户处于无法插入其键入内容的模式时才有意义。不过,它可能在
GtkTreeView
或其他不希望用户键入文本的上下文中“起作用”


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

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

非模态编辑器或文本字段小部件(如您正在使用的小部件)有自己处理键盘字母数字键的方法:修改键

或者

  • 您可以按一个键进入某种模式,在这种模式下,您可以按hjkl而无需在文本中插入它们

  • 按hjkl加上一个修改键
这些基本上是你唯一的选择

使用
hjkl
移动光标只有在用户处于无法插入其键入内容的模式时才有意义。不过,它可能在
GtkTreeView
或其他不希望用户键入文本的上下文中“起作用”


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

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

非模态编辑器或文本字段小部件(如您正在使用的小部件)有自己处理键盘字母数字键的方法:修改键

或者

  • 您可以按一个键进入某种模式,在这种模式下,您可以按hjkl而无需在文本中插入它们

  • 按hjkl加上一个修改键
这些基本上是你唯一的选择

使用
hjkl
移动光标只有在用户处于无法插入其键入内容的模式时才有意义。不过,它可能在
GtkTreeView
或其他不希望用户键入文本的上下文中“起作用”


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

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

非模态编辑器或文本字段小部件(如您正在使用的小部件)有自己处理键盘字母数字键的方法:修改键

或者

  • 您可以按一个键进入某种模式,在这种模式下,您可以按hjkl而无需在文本中插入它们

  • 按hjkl加上一个修改键
这些基本上是你唯一的选择

使用
hjkl
移动光标只有在用户处于无法插入其键入内容的模式时才有意义。不过,它可能在
GtkTreeView
或其他不希望用户键入文本的上下文中“起作用”

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