Je voudrais agrandir une sélection sans déplacer le point (le curseur) de son emplacement. Je sais que je peux toujours utiliser C-u C-spc
pour déménager à l'emplacement précédent, mais je voudrais éviter cela.
Plus précisément, je voudrais effectuer ces deux opérations:
- Sélectionner tout le texte dans le tampon
- Ajoutez progressivement les lignes / paragraphes suivants à la sélection
tout en gardant le curseur où il se trouve.
Emacs a-t-il des fonctions interactives pour cela? Sont-ils liés à des raccourcis clavier?
C-u C-spc
.Réponses:
Il existe une réponse distincte pour chacun des points que vous avez énumérés:
La liaison par défaut emacs C-x hsélectionnera tout le tampon, quel que soit l'emplacement du curseur.
Le paquet expansion-région aidera à atteindre le deuxième objectif d'élargir progressivement la sélection.
expand-region
sélectionnera également éventuellement la totalité du tampon pendant que vous continuez à étendre la région. Jetez un œil à son readme sur github pour plus d'informations. Ce package est disponible via MELPA.Voici une brève introduction à ce paquet depuis son github:
Je voudrais ajouter cependant que la modification de la sélection de région dans les deux cas déplacera toujours le curseur.
la source
C-x h
cela déplace le curseur: à la fin du tampon puis au début du tampon. Vous avez besoin deC-u C-spc
deux fois pour revenir là où vous étiez.Si la région s'agrandit, le curseur change de position. En effet, le curseur se trouve toujours à une extrémité de la région.
Si vous sélectionnez tout le texte du tampon (
C-x h
et utilisez ensuiteC-x C-x
pour permuter le point et le marquer, de sorte que le curseur se trouve à la fin du texte), puis que vous tapez un peu plus de texte, alors vous avez accompli ce que vous voulez: la région a été étendu pour inclure le texte que vous avez tapé. (Cela suppose que vous ne l'avez pasdelete-selection-mode
activé.)La région a également été désactivée automatiquement, de sorte que le texte de la région n'est plus mis en surbrillance. Pour réactiver la région, faites
C-x C-x
(que vous pouvez répéter, si vous voulez garder le curseur à l'extrémité du tampon.la source
Comme mentionné, le
expand-region
package est génial mais je pense aussi qu'il vaut la peine d'être mentionnéeasy-kill
. Il est facturé comme une baisse de remplacementkill-ring-save
qui transforme laM-w
"copie" normale en une commande de copie dynamique qui agit également comme un préfixe pour enregistrer diverses choses. Par exemple,M-w
copierait la région active, l'URL, l'e-mail ou la ligne actuelle (dans l'ordre deeasy-kill-try-things
), mais suivi d'un "d",M-w d
il copierait de force le défaut actuel.Il existe également une méthode pour agrandir / réduire la sélection actuelle, un peu comme
expand-region
, ainsi qu'une commande appeléeeasy-mark
pour marquer les régions sans changer votre point actuel.la source
Lorsque vous avez copié quelque chose, vous pouvez ajouter du texte à la sélection ultérieurement en utilisant
C-M-w
:C-M-w
(append-next-kill
) puis copiez ce que vous voulez (M-w
).la source
Comme indiqué dans d'autres réponses:
C-xh sélectionnera la totalité du tampon;
(mark-whole-buffer)
Si vous souhaitez élargir votre sélection, la manière la plus simple serait d'utiliser les
mark-*
commandes.Comme exemple de raccourci clavier:
C-M-SPC
(mark-sexp)
marquera le sexp au point. Si vous répétez la commande, cela ajoutera le sexp suivant à la sélection. Le curseur restera à la position actuelle ou se déplacera au début de l'objet (paragraphe / sexp) pour s'assurer qu'il est entièrement marqué.la source
(mark-whole-buffer)
à <kbd> Cmd-a </kbd> sur OSX pour conserver une certaine similitude avec la fonctionnalité OSX typique.Si vous êtes d'accord avec l'utilisation de la souris, vous pouvez utiliser la sélection secondaire . Appuyez sur Meta, puis cliquez et faites glisser le bouton gauche de la souris (
M-drag-mouse-1
). Cela ne déplace pas le point tant que vous ne copiez que du texte visible à l'écran. Vous pouvez copier la sélection secondaire avecM-mouse-3
et tirer dessus avecM-mouse-2
.En dehors de la sélection secondaire, vous devrez déplacer le curseur pour sélectionner du texte arbitraire, car le curseur est une extrémité de la sélection (l'autre est la marque).
Si vous souhaitez travailler dans un tampon sans affecter le point, vous pouvez ouvrir le tampon dans une deuxième fenêtre (
C-x 2
ouC-x 3
). Chaque fenêtre a son propre point. Lorsque vous avez terminé de sélectionner et sinon de modifier, fermez la fenêtre (C-x 0
) et revenez à l'autre.Pour plus de flexibilité, vous pouvez cloner le tampon actuel. Exécutez
M-x clone-indirect-buffer
ouC-x 4 c
pour créer également une nouvelle fenêtre affichant ce tampon. Le clone a le même texte que l'original, mais il a sa propre marque et son propre point.Si vous avez déjà tué du texte, vous pouvez ajouter plus de texte en tapant
C-M-w
(append-next-kill
) puis en utilisant une commande kill. Par exemple,C-M-w C-k
ajoute la queue de la ligne actuelle au texte qui se trouve déjà à l'avant de l'anneau de suppression et supprime le texte copié.C-M-w M-w
ajoute la sélection au texte à l'avant du kill ring (contrairement àM-w
ce qui pousse le texte sélectionné en tant que nouvelle entrée sur le kill ring).la source