web-dev-qa-db-fra.com

Insérer une nouvelle ligne sans entrer en mode insertion, vim

Je veux insérer des sauts de ligne en mode normal dans vim en utilisant Shift-Enter et Ctrl-Enter. J'essaie des solutions et des solutions de mixage de Vim Wikia - Insérer une nouvelle ligne sans entrer en mode d'insertion mais Shift-Enter et Ctrl-Enter n'a pas répondu:

" put a new line before or after to this line
nnoremap <S-CR> m`o<Esc>``
nnoremap <C-CR> m`O<Esc>``

" reverse J command
nnoremap <C-J> vaW<Esc>Bi<CR><Esc>k:s/\s\+$//<CR>$
59
helq

Mon alternative utilise oo (resp. OO) pour insérer une nouvelle ligne sous (resp. Over) le courant à travers ce mappage: nmap oo o<Esc>k (resp. nmap OO O<Esc>j)

53
TKrugg

Tirez une ligne vide et collez-la:

En commençant par le curseur sur une ligne vide:

yy + (shift + p)

"yy" tire la ligne et "shift + p" l'insère en dessous, sans entrer en mode d'insertion.

10
Rasmus Larsen

En raison de la façon dont la saisie au clavier est gérée en interne, ce n'est malheureusement généralement pas possible aujourd'hui. (Ce cas particulier devrait cependant fonctionner dans GVIM.) Certaines combinaisons de touches, comme Ctrl + non-alphabetic ne peut pas être mappé, et Ctrl + letter contre. Ctrl + Shift + letter ne peut pas être distingué. (À moins que votre terminal n'envoie un code distinct termcap pour celui-ci, ce que la plupart ne font pas.) En mode insertion ou en ligne de commande, essayez de taper la combinaison de touches . Si rien ne se passe/n'est inséré, vous ne pouvez pas utiliser cette combinaison de touches. Cela s'applique également à <Tab>/<C-I>, <CR>/<C-M>/<Esc>/<C-[> etc. (La seule exception est <BS>/<C-H>.) Ceci est un problème connu et fait l'objet de diverses discussions sur vim_dev et le canal #vim IRC.

Certaines personnes (avant tout Paul LeoNerd Evans) veulent corriger cela (même pour la console Vim dans les terminaux qui prennent en charge cela), et ont flotté diverses propositions .

Mais à ce jour, aucun correctif ou volontaire ne s'est encore présenté, bien que beaucoup aient exprimé le souhait de l'avoir dans une future version majeure de Vim 8.

9
Ingo Karkat

Voici ce que j'utilise:

nmap <CR> :a<CR><CR>.<CR>

J'ai essayé nmap <CR> o<Esc>, mais cela a rendu l'interface utilisateur glitch en passant au mode d'insertion et inversement.

1
Erik B

J'utilise: s/\ n/\ r\r/g (remplacez la nouvelle ligne par deux nouvelles lignes, ce qui équivaut à "o").

1
malcolm