Skip to content

Vi (Vim) editing mode

Koichi Murase edited this page Sep 17, 2017 · 31 revisions

Enabling vi/vim editing mode

Vim/vim editing mode will be enabled by one of the following settings.

In ~/.inputrc

$if Bash

  # Option #1
  set editing-mode vi

$endif

In ~/.bashrc

if [[ $- == *i* ]]; then # in interactive session

  # Option #2
  set -o vi

  # Option #3
  #   Or, the following setting can also enable the vi/vim mode.
  bind 'set editing-mode vi'

  # Option #4
  #   After the load of the ble.sh, the following setting also enables the vi/vim mode.
  #   This setting overwrites all the other settings presented so far.
  bleopt default_keymap=vi

fi

Possible preferences for the insert mode

SP: magic-space / insert space

The default mapping of SP is magic-space which performs history expansion before inserting a space. If you want to have just a space without history expansion, please add the following settings.

ble-bind -m vi_insert -f 'SP' 'self-insert'

C-k: kill-forward-line / digraphs

The default mapping of C-k is vi-insert/@norepeat kill-forward-line. If you want to input digraphs with <C-k>{char1}{char2}, please add the following settings:

ble-bind -m vi_insert -f 'C-k' 'vi-insert/insert-digraph'

C-o: single-command-mode / accept-and-next

The default mapping of C-o is vi-insert/single-command-mode. If you want to execute the command and load the next history entry with C-o, please add the following settings:

ble-bind -m vi_insert -f 'C-o' 'vi-insert/@norepeat accept-and-next'

Or you may like C-@, instead of C-o, bound to accept-and-next:

ble-bind -m vi_insert -f 'C-@' 'vi-insert/@norepeat accept-and-next'