GtkSourceVimIMContext

Vim emulation.

The gtksource.vim_imcontext.VimIMContext is a gtk.imcontext.IMContext implementation that can be used to provide Vim-like editing controls within a class@View.

The GtkSourceViMIMContext will process incoming gdk.key_event.KeyEvent as the user types. It should be used in conjunction with a gtk.event_controller_key.EventControllerKey.

Various features supported by gtksource.vim_imcontext.VimIMContext include:

  • Normal, Insert, Replace, Visual, and Visual Line modes
  • Support for an integrated command bar and current command preview
  • Search and replace
  • Motions and Text Objects
  • History replay
  • Jumplists within the current file
  • Registers including the system and primary clipboards
  • Creation and motion to marks
  • Some commonly used Vim commands

It is recommended that applications display the contents of property@VimIMContext:command-bar-text and property@VimIMContext:command-text to the user as they represent the command-bar and current command preview found in Vim.

gtksource.vim_imcontext.VimIMContext attempts to work with additional gtk.imcontext.IMContext implementations such as IBus by querying the gtk.text_view.TextView before processing the command in states which support it (notably Insert and Replace modes).

GtkEventController *key;
GtkIMContext *im_context;
GtkWidget *view;

view = gtk_source_view_new ();
im_context = gtk_source_vim_im_context_new ();
key = gtk_event_controller_key_new ();

gtk_event_controller_key_set_im_context (GTK_EVENT_CONTROLLER_KEY (key), im_context);
gtk_event_controller_set_propagation_phase (key, GTK_PHASE_CAPTURE);
gtk_widget_add_controller (view, key);
gtk_im_context_set_client_widget (im_context, view);

g_object_bind_property (im_context, "command-bar-text", command_bar_label, "label", 0);
g_object_bind_property (im_context, "command-text", command_label, "label", 0);
struct GtkSourceVimIMContext