VimIMContext
Added in version 5.4.
Superclasses: IMContext
, Object
Vim emulation.
The GtkSourceVimIMContext
is a IMContext
implementation that can
be used to provide Vim-like editing controls within a View
.
The GtkSourceViMIMContext
will process incoming KeyEvent
as the
user types. It should be used in conjunction with a 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
command_bar_text
and
command_text
to the user as they represent the
command-bar and current command preview found in Vim.
GtkSourceVimIMContext
attempts to work with additional IMContext
implementations such as IBus by querying the 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);
Constructors
Methods
- class VimIMContext
- 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 theexecute_command
signal.Added in version 5.4.
- Parameters:
command – the command text
Properties
Signals
- class VimIMContext.signals
- edit(view: View, path: str | None = None) None
Requests the application open the file found at
path
.If
path
isNone
, then the current file should be reloaded from storage.This may be executed in relation to the user running the
:edit
or:e
commands.Added in version 5.4.
- Parameters:
view – the
View
path – the path if provided, otherwise
None
- execute_command(command: str) bool
The signal is emitted when a command should be executed. This might be something like
:wq
or:e
.If the application chooses to implement this, it should return
True
from this signal to indicate the command has been handled.Added in version 5.4.
- Parameters:
command – the command to execute
- format_text(begin: TextIter, end: TextIter) None
Requests that the application format the text between
begin
andend
.Added in version 5.4.
- Parameters:
begin – the start location
end – the end location
- write(view: View, path: str | None = None) None
Requests the application save the file.
If a filename was provided, it will be available to the signal handler as
path
. This may be executed in relation to the user running the:write
or:w
commands.Added in version 5.4.
- Parameters:
view – the
View
path – the path if provided, otherwise
None