algon-320 / vime

Using Vim as an input method for X11 apps
Apache License 2.0
229 stars 2 forks source link

vime

Using Vim as an input method editor for X11 applications.

demo

In the above demo, I used fcitx with vime to input Japanese sentences.

Installation

  1. Clone this repo recursively, and then apply patches to the dependencies:

    $ git clone https://github.com/algon-320/vime.git --recursive
    $ ./apply_patches.sh
  2. Copy the configuration files:

    $ mkdir -p ~/.config/vime
    $ cp config_example/* ~/.config/vime
  3. Install the terminfo for toyterm, which is a terminal emulator vime uses to run Vim:

    $ tic -x -o ~/.terminfo/ toyterm/toyterm.info
  4. (Optionally) Install vime:

    $ cargo install --path ./vime

To uninstall vime, do the opposite:

$ cargo uninstall vime
$ rm -r ~/.config/vime
$ rm ~/.terminfo/t/toyterm.info

Usage

  1. Start a vime process:
    $ cargo run --release

    or if you installed vime:

    $ vime

Note for those who are using another input method, you can use it with vime. To do that, please make sure $XMODIFIERS is defined properly for the vime process. For example to use fcitx with vime:

$ XMODIFIERS="@im=fcitx" vime
  1. (Open another terminal and) set the following environment variables:
    $ export XMODIFIERS="@im=vime" # for X11 apps
    $ export GTK_IM_MODULE="xim"   # for GTK apps
    $ export  QT_IM_MODULE="xim"   # for Qt apps

NOTE: vime might not work in Qt apps for now. I am going to create a Qt plugin to work properly, but it is WIP yet.

  1. Start your favorite application (e.g. Firefox).
  2. Focus any input field (e.g. HTML form).
  3. Hit Alt+RightShift key to trigger (toggle) vime.
  4. Write some text and save it with :wq normally.
  5. The text you've just written would be inserted in the input field.

Customization

vimrc

Since vime starts a Vim with ~/.config/vime/vimrc by default, you can customize vim behavior by editing it.

different text editor

If your favorite text editor is runnable in a terminal, then you should be able to use it as input method. To change the editor to use, set VIME_EDITOR environment variable for the vime process. If the variable is not defined, vime will use /usr/bin/vim -u ~/.config/vime/vimrc instead.

The following example shows how to use Emacs as an input method:

$ VIME_EDITOR='/usr/bin/emacs -nw' vime

trigger key

To change the key combination to trigger vime, edit trigger_key_state and trigger_key_keycode fields in ~/.config/vime/config.toml.

You can use the xev utility to lookup the values of your favorite key combination.

terminal appearance

You can also configure the terminal by editing ~/.config/vime/config.toml.

See the toyterm repo for details about toyterm.

License


Architecture

architecture