2010-07-03 3 views
11

Je me retrouve souvent à rebondir sur o ou O et ctrl {pour insérer des lignes vides et sortir du mode insertion.Insérer des lignes vides sans passer en mode insertion

Pensant qu'il doit y avoir un moyen plus simple, et dans l'espoir de conserver ma position du curseur, je piraté ensemble ces macros bâclée:

map <Leader>O :let cursorpos = getpos(".")<CR>:i<CR><CR>.<CR>:let cursorpos[1] = cursorpos[1] + 1<CR>:call setpos('.', cursorpos)<CR> 
map <Leader>o :let cursorpos = getpos(".")<CR>:a<CR><CR>.<CR>:call setpos('.', cursorpos)<CR> 

Cependant, cela ne permet pas pour les plages. Ce serait bien de pouvoir aller 5 \ O et obtenir 5 blancs au dessus de ma ligne actuelle.

Des suggestions sur comment je peux résoudre ce problème pour autoriser les plages et revenir à la position du curseur d'origine une fois terminé?

Répondre

12

Vous pouvez utiliser :call append(linenumber, repeat([''], 5)). Cela ne bougera pas le curseur.

+3

Excellent, c'est parfait. Je pensais qu'il devait y avoir un moyen plus élégant. Commuté à: carte O: appel append (ligne (".") -1, répétition ([ ''], v: count1)) carte o: ajout d'appels (ligne (" "), la répétition (. [ ''], V: count1)) à .! répondre aux gammes Merci – JameyC

+0

Mais dans cet exemple si l'on applique une version « comptage » il se déplace le curseur vers le haut/bas et – user3663882

+0

@ user3663882 nous devons remplacer ':.. call' avec': call' et remplacer 5 avec 'v. count1' par exemple, ou garder le 5 et lancez la commande avec' ' ou' ' pour effacer le compte. –

1

j'ai ajouté à mon .vimrc

"create new line below current line without leaving normal mode or moving cursor 
noremap - m`o<Esc>`` 
"create new line above current line without leaving normal mode or moving cursor 
noremap _ m`O<Esc>`` 

Je préfère cette solution pour plusieurs raisons:

  • Je n'utilisent pas normalement les - ou _ clés en mode normal et ils sont situés sur la même touche physique sur mon clavier.
  • Il semble juste que l'installation d'un plugin pour cela est exagéré. J'évite de télécharger des plugins pour des choses simples, car ils introduisent un nouveau code dans mon environnement que je ne comprends pas encore totalement ou que je ne crois pas et cela peut interférer avec d'autres personnalisations ou plugins.
  • J'ai essayé la solution de l'auteur de cette question situé dans son commentaire sous la réponse acceptée, mais après l'avoir utilisé, le . commande fait des choses étranges et dérangeantes. Je préfère habituellement appuyer sur . plusieurs fois en passant un argument numérique, de sorte qu'au lieu de rester assis là à compter des choses sur mes doigts, je continue à appuyer sur . jusqu'à ce qu'il semble juste (moins de visualisation conceptuelle et plus de vision réelle). Malheureusement, même cette solution ne fonctionne pas comme je le veux avec le . commande. Cependant, en mappant - et _, ceux-ci peuvent être pressés plusieurs fois pour le même effet. Dommage qu'il n'est pas plus proche de la ligne de la maison ...

AVERTISSEMENT: Marquer la clé ` affecte la liste de saut. Vous pouvez utiliser n'importe quelle autre marque si cela vous fait plaisir ++

Questions connexes