:right-sidebar: True VimIMContext =================================================================== .. currentmodule:: gi.repository.GtkSource .. versionadded:: 5.4 .. class:: VimIMContext(**properties: ~typing.Any) :no-contents-entry: Superclasses: :class:`~gi.repository.Gtk.IMContext`, :class:`~gi.repository.GObject.Object` Vim emulation. The ``GtkSourceVimIMContext`` is a :obj:`~gi.repository.Gtk.IMContext` implementation that can be used to provide Vim-like editing controls within a :obj:`~gi.repository.GtkSource.View`\. The ``GtkSourceViMIMContext`` will process incoming :obj:`~gi.repository.Gdk.KeyEvent` as the user types. It should be used in conjunction with a :obj:`~gi.repository.Gtk.EventControllerKey`\. Various features supported by ``GtkSourceVimIMContext`` 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 :obj:`~gi.repository.GtkSource.VimIMContext.props.command_bar_text` and :obj:`~gi.repository.GtkSource.VimIMContext.props.command_text` to the user as they represent the command-bar and current command preview found in Vim. ``GtkSourceVimIMContext`` attempts to work with additional :obj:`~gi.repository.Gtk.IMContext` implementations such as IBus by querying the :obj:`~gi.repository.Gtk.TextView` before processing the command in states which support it (notably Insert and Replace modes). .. code-block:: c :dedent: 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); Constructors ------------ .. rst-class:: interim-class .. class:: VimIMContext :no-index: .. classmethod:: new() -> ~gi.repository.Gtk.IMContext Methods ------- .. rst-class:: interim-class .. class:: VimIMContext :no-index: .. method:: execute_command(command: str) -> None Executes ``command`` as if it was typed into the command bar by the user except that this does not emit the :obj:`~gi.repository.GtkSource.VimIMContext.signals.execute_command` signal. .. versionadded:: 5.4 :param command: the command text .. method:: get_command_bar_text() -> str Gets the current command-bar text as it is entered by the user. .. versionadded:: 5.4 .. method:: get_command_text() -> str Gets the current command text as it is entered by the user. .. versionadded:: 5.4 Properties ---------- .. rst-class:: interim-class .. class:: VimIMContext :no-index: .. attribute:: props.command_bar_text :type: str The type of the None singleton. .. attribute:: props.command_text :type: str The type of the None singleton. Signals ------- .. rst-class:: interim-class .. class:: VimIMContext.signals :no-index: .. method:: edit(view: ~gi.repository.GtkSource.View, path: str | None = None) -> None The type of the None singleton. .. versionadded:: 5.4 :param view: the :obj:`~gi.repository.GtkSource.View` :param path: the path if provided, otherwise :const:`None` .. method:: execute_command(command: str) -> bool The type of the None singleton. .. versionadded:: 5.4 :param command: the command to execute .. method:: format_text(begin: ~gi.repository.Gtk.TextIter, end: ~gi.repository.Gtk.TextIter) -> None The type of the None singleton. .. versionadded:: 5.4 :param begin: the start location :param end: the end location .. method:: write(view: ~gi.repository.GtkSource.View, path: str | None = None) -> None The type of the None singleton. .. versionadded:: 5.4 :param view: the :obj:`~gi.repository.GtkSource.View` :param path: the path if provided, otherwise :const:`None`