10

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]
  6. ...

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).

7

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
  • Just a small suggestion: I think <Esc>pa would be better for <C-Y> – Yamaneko Nov 15 '16 at 7:57
  • Looks like <C-K> doesn't work when the cursor at the leftmost -- it should delete the entire line but Esc>lDa will leave the first character undeleted. – Ying Xiong Jul 30 '17 at 22:45
7

You can map any command in insert mode to anything using the :imap command, or save typing by using :im. For your first mapping, you could type (in normal mode):

:im <C-A> <esc>^i

Which goes to normal mode (with escape), presses ^ for you and goes back to insert mode. See the help for more info:

:help :imap or shorter: :h :im

Do note that you might be overwriting existing key mappings. Put the commands into your .vimrc configuration file if you want them to be there for every document.

  • thanks for you tips +1 :-) But do you know whether this kind of mapping has already been configures? (e.g. without existing key mappings overwrite). Where to find such project/configuration? I would prefer to re-use something already done (and robust), than trying to do it myself (and missing something important). Cheers – olibre Sep 26 '12 at 15:11
  • Should I ask/move my question to superuser.com ? – olibre Sep 26 '12 at 15:15
  • Thanks! You can see whether a command exists with the (logic) command :im <c-a>. If it says 'No mapping found', you won't be overwriting anyting. I don't think it'll get much more robust than that... – Joker Sep 26 '12 at 15:18
  • Humm... I have to code, test my configuration, then fix my bugs, and again.... But I do not know all the vim commands... Please, do you know where I can find a list of :im last arguments? FYI, I am also used with the following bash commands: M-backspace, M-F, M-B, M-D... It will be nice if someone has already done that and shares his work, isn't it? (something like evil) Therefore I could reuse his :im key mapping without doing it by myself (error prone). Do you see what I mean? – olibre Sep 26 '12 at 16:43
  • I might not understand exactly what you mean, but you can find all non-standard key mappings by typing :im. To make a higher-level comment: if you want to be able to use Vim on multiple platforms/computers without always having to load your own plugins, special modes or vimrc-file, I think the best thing to do is to learn/use the standard Vim-commands as much as possible. I made several key mappings myself, but always try to find the standard Vim-alternative. And it can be pretty quick. One thing I did is map <esc> to ;j, making your nr 1 mapping as easy as ;jI and nr 2 ;jA. – Joker Oct 2 '12 at 15:50
6

Not a complete answer, but are you aware of Vim's so-called "easy mode" (vim -y)? It is always in edit mode by defaut, and does quite a lot of what you want, and doesn't need you to install or customise anything. It does CTRL-A, C, V, X, Y etc. From the key-listing:

Key mappings:
    <Down>      moves by screen lines rather than file lines
    <Up>        idem
    Q           does "gq", formatting, instead of Ex mode
    <BS>        in Visual mode: deletes the selection
    CTRL-X      in Visual mode: Cut to clipboard
    <S-Del>     idem
    CTRL-C      in Visual mode: Copy to clipboard
    <C-Insert>  idem
    CTRL-V      Pastes from the clipboard (in any mode)
    <S-Insert>  idem
    CTRL-Q      do what CTRL-V used to do
    CTRL-Z      undo
    CTRL-Y      redo
    <M-Space>   system menu
    CTRL-A      select all
    <C-Tab>     next window, CTRL-W w
    <C-F4>      close window, CTRL-W c

A much more powerful version of this is Cream, which remaps many more keys, and makes the basic commands similar to other editors you may be familiar with.

There is also the plugin Vimacs, which enables all the common emacs key mappings. It's easy to install, and may do what you want (I've never tried it).

  • Very interesting +1 :-) I an reading/testing all your links... I will give you more feedback later. Thank you. Cheers – olibre Sep 27 '12 at 7:00
  • 1
    Keys of the «easy mode» have nothing to do with Emacs ones. But «vimacs» seems an interesting thing. I just installed, and despite being old it still works. – Hi-Angel Jul 1 '15 at 10:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.