Vim completion - always suppress the newline after I select a suggestion with the Enter key
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?
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
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.