Commande Vim pour insérer une ligne vide en mode normal

Est-il une commande dans Vim qui fera la même chose que o ou O (insérez une ligne vide avant / après la ligne courante), mais qui ne passe pas aussi en mode insert?

15
demandé sur JSBձոգչ 2011-07-20 20:25:09

4 réponses

:nnoremap <silent> [<space> :pu! _<cr>:']+1<cr>
:nnoremap <silent> ]<space> :pu _<cr>:'[-1<cr>

Explication:

  • :put va coller un registre en ligne ci-dessous. (:pu! au-dessus)
  • :pu _ coller le blackhole registre, qui est vide, donc nous obtenons une ligne vide
  • '[ et '] les marques sont définies au début et à la fin d'un texte modifié ou supprimé.
  • :'[ déplace le curseur à la ligne de départ de la dernière modification (le mettre dans ce cas)
  • :'[-1 déplacer '[ mais vers le haut une ligne

si vous préférez un plugin alors je suggère Tim Pope intacte.vim. Qui fournit ces garnitures, mais prendra également un compte. Le plugin a aussi beaucoup d'autres belles correspondances.

16
répondu Peter Rincker 2011-07-20 16:47:10

En mode insertion:

:normal O

à Partir de vim inline manuel:

exécuter des commandes en mode Normal {commandes}. Cela rend possible pour exécutez les commandes de mode Normal tapées sur la ligne de commande. {commande} sont exécutés comme ils sont tapés. Pour annuler toutes les commandes sont annulées ainsi. L'exécution s'arrête lorsqu'une erreur est rencontrée. Si l' [!] est donnée, les mappages ne sera pas utilisé. {commande} devrait être un commande complète. Si {commandes} ne termine pas une commande, le dernière sera annulée que si ou a été tapé.

http://vimdoc.sourceforge.net/htmldoc/various.html#:normal

j'ai eu l'allusion n': https://unix.stackexchange.com/a/16452/7914

0
répondu John Christopher 2017-04-13 12:36:24

vous pouvez essayer quelque chose comme ceci:

:map <c-j> o<esc>

ceci est: quand vous appuyez sur contrôle + j il va ajouter une ligne ci-dessous (et passer en mode insertion) et puis revenir en mode normal si vous voulez rester dans la même ligne vous où avant juste ajouter un k à la fin, quelque chose comme ceci:

:map <c-j> o<esc>k

j'ai aussi ajouté un contrôle + k ajouter une ligne avant celle que j'ai est debout sur

:map <c-k> O<esc>

et tout comme le précédent, vous pouvez ajouter j à la fin pour rester sur la même ligne:

:map <c-k> O<esc>j

si vous avez besoin ou voulez quelque chose de plus avancé, vous pouvez vérifier ces messages: ajouter et supprimer rapidement des lignes vides ou insérez newline sans entrer insert mode

0
répondu Luiso 2015-05-06 20:36:42

dd sur une ligne vide, p pour la restaurer, et alors p l'endroit où vous souhaitez que la ligne vide(s)

-1
répondu Hugo 2012-03-08 18:36:20