11

Sometimes, after I select a suggestion (from the completion pop-up that appears when pressing Ctrl-N) using the Enter key, Vim will insert a newline and the cursor will be moved to the following line. This doesn't always happen - it seems that Vim tries to be smart about it and will only move me to the next line if it thinks this is what I would like.

However, I want to disable this behavior (because it is not always smart) so that I will always have to move to the next line by myself by manually pressing the Enter key. Is this possible?

3 Answers 3

14

What Vim does in response to your typing the <Enter> key while using insert completion depends on the state of the completion menu. The behavior of the menu is described here:

:help ins-completion-menu

and the behavior of various keys when using insert completion is described in the next section,

:help popupmenu-keys

where it explains that the behavior of the <Enter> key depends on the menu state. As I understand it, typing <Enter> inserts a newline except in the case where you have selected a match from the menu using cursor keys.

The best way to avoid inserting a newline when you don't want one is to terminate or make a selection using some other key such as Ctrl-Y or Ctrl-E.

See also

:help complete_CTRL-Y

and for the entire description if insert-mode completion,

:help ins-completion
5

You can add this mapping to your .vimrc file:

inoremap <expr> <CR> pumvisible() ? "\<C-Y>" : "\<CR>"

It will map the return key in insert mode to input CTRL-Y when the popup menu is visible. CTRL-Y selects the currently selected item in the menu without entering a new line. Otherwise it will make the return key act like normal.

1
  • 1
    Can you explain what this code does and how it addresses the problem given by the OP? Unexplained code can appear untrusted and dangerous to users.
    – bwDraco
    Jul 16, 2015 at 1:56
0

I added this to .vimrc and now it behaves as I want:

noremap pumvisible() ? "\" : " "

Your Answer

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