Vim customized with emacs commands (insert mode only)

emacskey mappingkeyboard shortcutsvivim

I was an emacs user, and I have to switch to vim. But I miss some basic emacs commands in vim insert mode:

  1. C-A
  2. C-E
  3. C-K
  4. C-Y
  5. C-x C-s
  6. … and some other

I know that I can press Escape and then press some of the following keys and finally press key i:

  1. ^
  2. $
  3. d$
  4. p
  5. :w [Enter]

However I will like to stay in vim insert mode and avoid pressing Escape/i keys.

On the web, I have found customizations for emacs (vi-mode, vip, viper, vimpulse, vim-mode, evil). But not yet found the opposite: customize vim to use emacs commands…

I am interested about the emacs commands in vim insert mode only. Just some basic commands, as bash commands: C-A, C-E, C-K, C-Y, C-U… (yep C-U is not a default emacs command but I like it too).

Best Answer

I am responding to this question four years later because the answer provided is a partial solution that does not completely address the original question.

I have the exact same desire as olibre, and wanted to come up with a complete solution. I come at it from a different perspective -- I'm used to Emacs line editing in bash -- but the issue is the same. I want to carry that over into Vim insert mode (only).

The following addresses all of the keybinding requests in the original question posed by olibre, plus few extras:

" Mimic Emacs Line Editing in Insert Mode Only
inoremap <C-A> <Home>
inoremap <C-B> <Left>
inoremap <C-E> <End>
inoremap <C-F> <Right>
" â is <Alt-B>
inoremap â <C-Left>
" æ is <Alt-F>
inoremap æ <C-Right>
inoremap <C-K> <Esc>lDa
inoremap <C-U> <Esc>d0xi
inoremap <C-Y> <Esc>Pa
inoremap <C-X><C-S> <Esc>:w<CR>a

The only bindings I cannot seem to get to work at this point are <Alt-B> and <Alt-F>, which would skip entire words. Whenever I bind <Esc>, <Alt>, or <Meta> combinations, gVim (v7.4 on Windows) outputs accented characters. Please feel free to edit this answer if you have a solution to this issue. I have gotten Alt combinations to work based on another post's suggestion to just use the special characters. I have inserted them above.

Edit

-- (edit is not by original answer poster) --

I used the following under Neovim and Windows 10. You might need to change the "A" into "M" on other OSs as "alt" might be "meta" elsewhere. I haven't played with it enough.

inoremap <A-x> <Esc>:
inoremap <A-f> <Esc>lwi
inoremap <A-b> <Esc>bi
inoremap <A-S-f> <Esc>lWi
inoremap <A-S-b> <Esc>Bi