web-dev-qa-db-fra.com

Commande Vim split line

Duplicata possible:
Comment puis-je insérer un saut de ligne où se trouve le curseur sans entrer en mode d'insertion dans Vim?

En vim, J joint la ligne suivante à la ligne actuelle. Existe-t-il une commande similaire (ou relativement courte) pour diviser une ligne à une position de curseur donnée? Je sais que cela se fait avec une simple macro, mais il semble que si le J-la commande existe, il devrait y avoir une fonction similaire. J'ai essayé de le chercher, mais je n'arrive pas à trouver de réponse.

86
dburke

Je ne pense pas qu'il existe un seul raccourci clavier pour cela. Le mieux que vous puissiez faire avec stock vim est probablement iEnterEsc.

40
Brian Pellin

rEnter tandis que sur les espaces blancs le fera. Ça fait deux frappes.

168

Ma solution a été de remapper la touche K car je n'utilise jamais l'action par défaut (recherchez le mot sous le curseur avec "man"), et mon éditeur précédent utilisait Alt + j et Alt + k pour joindre et diviser des lignes, respectivement.

:nnoremap K i<CR><Esc>

Cela roule ces trois frappes ennuyeuses en une seule.

Il existe probablement un moyen plus sophistiqué d'éliminer également tous les espaces de fin, mais je préfère supprimer tous les espaces de fin lors de l'écriture.

35
Steve

Non. J'ai maintenant lu suffisamment de réponses pour conclure qu'il n'y a pas une telle commande.

Réponse facile: appuyer sur "Entrée" pendant l'insertion le fera; mais vous avez raison, il doit y avoir une clé pour cela en mode commande. Je me suis aussi demandé.

Puisque tout le monde a une solution de contournement préférée, je vais partager la mienne. L'hypothèse est que je ferai n'importe quoi pour éviter d'avoir à atteindre la touche Esc.

ylprX ... où 'X' est le caractère inséré, qui peut même être un saut de ligne .

Donc, 'yl' est tiré sur le caractère à droite, 'p' = coller le caractère, 'r' est remplacer ce caractère; alors vous tapez simplement le nouveau caractère. C'est combien je déteste utiliser Escape.

(C'était 'l', comme dans "aller à droite", BTW)

21
gbarry

Ancien thread, mais je n'utilise pas "K" pour la recherche de page de manuel ou quelle que soit la magie qu'il fait. J'ai donc cette cartographie dans mon .vimrc:

map K i<Enter><Esc>

J'ai pensé que "J" est joint, "K" peut être krack ou quelque chose. :)

8
Johnny Sparks

Vous pouvez diviser des lignes si vous pouvez créer une expression régulière pour l'emplacement auquel ajouter le fractionnement. Par exemple, si vous souhaitez diviser les lignes à chaque point-virgule, vous pouvez utiliser la substitution suivante:

% s /;/^ v ^ m/g

à grand effet

6
user162267

La réponse de Jed est des plus utiles. Je voudrais ajouter que j'avais besoin de "control-V-alternative", c'est-à-dire control-Q:% s /;/^ q ^ m/g

0
user269423