J'ai récemment demandé:
Comment ajouter un préfixe à chaque ligne?
Allez donc du code ci-dessous:
I said Hello
I said There
I said I am some code
Pour coder comme:
Hello
There
I am some code
Maintenant, comment supprimer n nombre de caractères d'une ligne?
text-editing
editing
Luke Shimkus
la source
la source
Réponses:
C'est encore plus simple! Encore une fois, utilisez des commandes rectangulaires . Déplacez-vous dans un coin du rectangle que vous souhaitez supprimer, appuyez sur
C-SPC
pour définir la marque. Passez à l'autre coin du rectangle et appuyez surC-x r d
(delete-rectangle
). Par exemple, passez à la première ligne sur laquelle vous souhaitez agir, appuyez surC-a
ouhome
pour aller au début de la ligne, descendez jusqu'à la dernière ligne sur laquelle vous souhaitez agir, pour vous déplacer dans le coin inférieur droit, puis supprimez.C-u number C-f
C-x r d
Si la dernière ligne contient moins que le nombre de caractères souhaité, il peut être plus pratique d'utiliser à la place les coins inférieur gauche et supérieur droit. Alternativement, vous pouvez insérer des caractères indésirables (cela est utile si la première ligne et la dernière ligne sont plus courtes).
Vous pouvez utiliser
C-x r k
pour tuer le rectangle, ce qui vous permet de le tirer (C-x r y
) plus tard (déplacez-vous dans le coin supérieur gauche de l'endroit où vous souhaitez l'insérer).Vous pouvez également utiliser
C-x r t
(string-rectangle
) et saisir une chaîne vide.Les commandes rectangulaires sont basées sur les positions des colonnes. Si vous souhaitez supprimer n caractères, plutôt que n colonnes (ce qui fait la différence avec les caractères multi-colonnes tels que les tabulations), vous pouvez utiliser le remplacement d'expressions régulières : remplacez
^.\{42\}
par rien pour supprimer les 42 premiers caractères de chaque ligne.la source
Autre possibilité: j'aime vraiment utiliser plusieurs curseurs pour des tâches comme celle-ci. Disponible en
package.el
via MELPA, il est devenu un élément indispensable de mes emacs. Je voudrais simplement sélectionnerI said
(et éventuellement inclure le saut de ligne avant), utiliserM-x mc/mark-all-like-this
et être en route. Si vous souhaitez un contrôle plus fin, vous pouvez utilisermc/mark-next-like-this
oumc/mark-next-lines
.Mes raccourcis clavier:
Les Roches Emacs obligatoires! épisode: http://emacsrocks.com/e13.html
la source
Si vous l'avez
cua-mode
activé, alors:Je préfère la
cua-mode
façon de travailler, par rapport au rectangle standard Emacs où l'équivalent serait:Le
cua-mode
enregistre trois pressions de touche par rapport au rectangle Emacs standard.la source
Par souci d'exhaustivité: la suppression des 3 premiers caractères de chaque ligne (formellement: à partir du point ou dans la région) peut être effectuée en remplaçant regexp
^...
(ou plus généralement:)^.\{3\}
par une chaîne vide.Explication: dans regexen,
^
signifie "début de ligne",.
signifie "n'importe quel caractère" et\{n\}
signifie " n répétitions de la chose précédente".Cela a un avantage supplémentaire d'être interactif (sauf si l'on appuie
!
, ce qui faitquery-regexp-replace
tout remplacer désormais sans plus de questions).la source
Et encore une possibilité:
F3C-aC-3C-dC-nF4
enregistre une macro de clavier, disant en gros "passer au début de la ligne, supprimer trois caractères et passer à la ligne suivante". Ensuite, vous pouvez le rejouer jusqu'à la fin du tampon par C-uF4, ou l' C-xC-krappliquer aux lignes de la région. Cela a un inconvénient: il se cassera lorsqu'une ligne contient moins de 3 caractères.
la source
S'il ne s'agit que d'une ligne, vous pouvez zapper sur char avec Mz en supposant que ce caractère n'est pas répété entre le point et celui que vous souhaitez supprimer. Dans certains cas, cela est plus rapide que la création d'une région.
la source