J'ai le code ci-dessous:
Hello
There
I am some code
Et voulez ajouter du code devant, comme:
I said Hello
I said There
I said I am some code
Alors, comment pourrais-je ajouter un préfixe à chaque ligne?
la source
J'ai le code ci-dessous:
Hello
There
I am some code
Et voulez ajouter du code devant, comme:
I said Hello
I said There
I said I am some code
Alors, comment pourrais-je ajouter un préfixe à chaque ligne?
Vous pouvez ajouter un préfixe avec M-x string-rectangle
, qui est lié à C-x r t
. Cela fait partie d'une série de commandes qui opèrent sur des sélections rectangulaires ; celui-ci insère du texte à chaque ligne du rectangle.
Commencez par définir la marque au début de la première ligne, puis déplacez le curseur sur le premier caractère de la dernière ligne à préfixer:
*Hello
There
▮I am some code
Puis utilisez C-x r t
, entrez votre préfixe ( I said
) et appuyez sur RET
. Cela ajoute le texte à chaque ligne du rectangle:
I said Hello
I said There
I said I am some code
Si vous n'alignez pas votre curseur sur la même colonne que votre marque, cela écrasera cette partie du rectangle:
*Hello
There
I am▮ some code
avec la même commande, on obtient:
I said o
I said e
I said some code
M-x string-insert-rectangle
. C'est très similaire, maisstring-insert-rectangle
insère au début de chaque ligne de la sélection, alors questring-rectangle
remplace , donc avec cette dernière vous devez être plus précis sur votre sélection si vous ne voulez rien écraser.Vous pouvez utiliser le mode multiple-cursors , pour placer un curseur sur chaque ligne. Ensuite, le texte que vous tapez sera inséré sur chaque ligne.
Vous commenceriez avec le point au début du morceau de code:
Puis frappez C->deux fois. (Ceci est la liaison de clé suggérée; vous devez la configurer vous-même.) Cela crée deux curseurs supplémentaires sur les deux lignes suivantes:
Puis tapez
I said
. Le texte sera ajouté sur chaque ligne:Enfin, appuyez sur RETpour quitter le mode de curseurs multiples et laisser le point sur le dernier curseur:
Voici une vidéo qui montre comment cela fonctionne.
la source
Personnellement, je préfère
replace-regexp
(remplacer "^" par "j'ai dit").la source
Une autre option consiste à utiliser des macros, qui peuvent traiter plus de tâches que les sélections rectangulaires ou les curseurs multiples, même si c'est un peu plus encombrant dans ce cas particulier.
Placez le curseur au début de la première ligne et appuyez F3pour démarrer l'enregistrement, insérez le texte, déplacez le curseur au début de la ligne suivante et appuyez F4pour arrêter l'enregistrement. Appuyez de F4nouveau sur pour répéter la macro, la C-2 F4répéter deux fois ou C-0 F4jusqu'à ce qu'une erreur se produise (telle qu'une épuisement des lignes).
la source
Vous pouvez installer evil et le faire de nombreuses manières similaires à vi - je préfère la sélection visuelle de blocs en utilisant Ctrl+ Vpour marquer chaque ligne, puis Shift+ Ipour insérer, puis tapez le texte que vous souhaitez insérer et, enfin, appuyez sur ESCpour quitter le mode insertion et le menu contextuel. le texte sera ajouté à chaque ligne. Ceci est très similaire aux sélections de rectangle emacs mais quelques touches de moins.
la source
Ceci est très similaire à la réponse d’artagnon, mais
replace-regexp
n’est lié à aucune clé.Donc, j’utilise réellement
query-replace-regexp
ce qui est lié par défaut àC-M-%
et puis le remplace^
par le préfixe indiquéI said
, puis je tape!
pour tout remplacer sans plus de demande.la source
Si vous avez
cua-mode
activé, alors:I said
comme texte à insérerJe préfère la
cua-mode
façon de travailler par rapport au rectangle standard Emacs où l'équivalent serait:I said
RET insérer du texteLes
cua-mode
arrêts deux touches par rapport à la norme rectangle Emacs.Mais pour moi, l’avantage supplémentaire du mode cua est que je peux ajouter du texte au rectangle (personnellement, je ne sais pas comment ajouter du texte avec un rectangle Emacs standard). En mode Cua, il RETsuffit d'appuyer sur une touche, saisie avant le
I said
.la source