J'utilise ViM, TextMate et GNU Emacs depuis des années.
Par exemple, voici le texte que je souhaite modifier
foo
foo
foo
Et voici le résultat du texte que je veux avoir
bar foo
bar foo
bar foo
Quand je suis sur Vim, je peux faire "Ctrl v" sur la toute première ligne et la première colonne, puis appuyer sur "2 j", puis appuyer sur "i", puis taper "bar", c'est fait.
Lorsque je suis sur Textmate, je peux appuyer sur "Apple Command Option" à la fois tout en sélectionnant vers le bas (par ma souris), puis tapez "bar", c'est fait.
Mais quand je suis sur GNU Emacs 23.1, je ne sais pas comment le faire. : ((
J'ai recherché EmacsWiki et googlé, mais je n'ai pas trouvé la solution. Veuillez me guider si vous connaissez ma solution. Serait reconnaissant pour cela.
Réponses:
Deux options viennent à l'esprit. Le premier est des rectangles (comme mentionné dans une autre réponse). Les directions explicites pour cela sont:
Une autre option, qui fournit de très belles commandes d'édition de rectangle / colonne est le mode CUA . Voici un article de blog (divulgation: mon blog) qui décrit comment l'utiliser. Pour voir la puissance du mode CUA, il vaut vraiment la peine de regarder cette vidéo de trois minutes .
J'intègre le mode CUA avec les éléments suivants (car je préfère ne pas avoir de mode de marque transitoire):
la source
Dans Emacs-24.4, le support de base pour les rectangles a été légèrement amélioré, donc au lieu d'utiliser
C-SPC
suiviC-x r t
, vous pouvez faire:Par rapport à la
C-SPC
méthode, l'une des bonnes choses à ce sujet est que vous obtiendrez des commentaires visuels sur le rectangle que vous sélectionnez. Bien sûr, lacua-mode
méthode fonctionne également (et fonctionne de manière similaire).la source
cua-mode
si c'était plus juste ... Juste pour mentionner une chose: danscua-mode
, alors qu'un rectangle est mis en surbrillance, je peux taper et ajouter du texte. Dans le support de base emacs intégré actuel, la surbrillance disparaît (la sélection est "annulée") et l'entrée est insérée au point du curseur. C'est contre-intuitif et ce n'est pas ce que je veux habituellement (et je m'habitue à commentcua-mode
ça se passe)(global-set-key [?\C-x ?\s] 'cua-rectangle-mark-mode)
.C-t
opération de rectangle non-CUA (akaC-x r t
) vous montre également un aperçu du texte nouvellement inséré lorsque vous le tapez.Dans emacs, ce type de colonnes est appelé «rectangles». Donc , c'est la page de la documentation pertinente.
Toutes ces commandes nécessitent que la région contienne le rectangle sur lequel vous opérez. Vous devez donc définir la marque sur le caractère en haut à gauche dans le rectangle et étendre la région au caractère en bas à droite dans le rectangle. La commande que vous recherchez est celle
M-x string-insert-rectangle
qui vous invite à insérer la chaîne.la source
Réponse la plus courte: activez le mode rectangle CUA via C-RET.
Donc, pour votre cas, ce serait
bar
SPCVoir la réponse de @Trey pour une solution plus élaborée et des liens vers CUA.
la source
Vous pouvez utiliser replace-regexp pour cela:
Cela ajoutera une barre au début de la ligne.
la source