Comment sélectionner ou mettre en évidence un bloc dans Emacs?

Je veux sélectionner ou mettre en évidence un bloc dans emacs sans la souris mais à partir du clavier comme le mode visuel de vim. Quelle est la manière la plus simple de faire cela depuis un clavier?

Jetez un coup d’œil à region-rectangle dans emacs.

En bref, vous commencez la sélection comme d’habitude avec ControlSpace , puis tuez la région avec Controlxrk et collez (ou yank ) le bloc tué avec Controlxry .

Si je comprends bien la question, il ne s’agit pas de régions rectangulars à l’origine.

C-Spc marque la position actuelle.

Où que votre curseur se trouve par la suite, le texte entre la dernière marque et la position actuelle est “sélectionné” (vous pouvez le mettre en évidence en activant transient-mark-mode , mais cela signifie également que les marques doivent être supprimées lorsque vous ne voulez pas surligner).

Vous pouvez opérer sur cette région avec des commandes telles que:

Cw . . Tuez la région. Cela supprime et met la région dans le ring.
Cy . . Coup sec. Cela insère le dernier extrait de l’anneau mortel.
My . Cycle de destruction Immédiatement après Cy , cela remplace la partie arrachée par les autres fragments de l’anneau de destruction.
Mw . . Sauvegardez la région dans un anneau mortel. Comme Cw , mais ne supprime pas.

Ceci est juste l’utilisation de base. Les marques ont aussi d’autres utilisations. Je recommande le tutoriel ( Ch t ).

Emacs 24.4 est maintenant en mode rectangle. Cx espace pour l’invoquer.

Voir l’article: “Travailler avec des sélections rectangulars” , en particulier la section commentaires. Voir aussi la section de la documentation du mode CUA intitulée “Prise en charge des rectangles CUA”. Il y a aussi une belle vidéo sur vimeo .

Bien que C-SPC soit un moyen courant de marquer quelque chose où que vous soyez, il existe souvent des moyens plus rapides / plus simples qui ne nécessitent pas de déplacement explicite vers les points de départ / fin …

Raccourcis de sélection intégrés

  • Mh – un moyen important de marquer un paragraphe . Un “paragraphe” signifie souvent un bloc de code.

  • CMh et CM-@ – pour marquer les sexps et les defuns , respectivement. Cela fonctionne pour plusieurs langues, pas seulement lisps.

  • maintenez la touche Maj enfoncée – une autre façon de mettre en évidence pendant le mouvement. MSf sélectionne par exemple un mot entier. Ceci est le mode shift-select-mode , et il est activé par défaut dans Emacs 24+. Sur certains claviers (non-chiclet), vous devriez pouvoir maintenir CS- avec un seul petit doigt.

Vous pouvez appuyer sur l’une de ces touches à plusieurs resockets pour augmenter la sélection.

(REMARQUE: utilisez souvent Cg pour annuler le marquage pendant l’expérimentation.)

Add-ons

Il y a quelques paquets supplémentaires qui améliorent la sélection des régions et des choses. Celles-ci sont toutes jouées ensemble et correspondent à différents cas d’utilisation. Utilisez-les tous!

  • Expand-Region : Expand region augmente la région sélectionnée par unités sémantiques. Continuez à appuyer sur la touche jusqu’à ce qu’elle sélectionne ce que vous voulez. C-= est une liaison recommandée pour cela. Frappez-le plusieurs fois pour obtenir ce dont vous avez besoin.

  • Easy-Kill : Utilisez Mw et un mnémonique pour sélectionner différents types de choses, comme des mots, des sexps, des listes, etc.

  • Zop-to-Char : comme zap-to-char , mais offre une belle sélection et d’autres actions pilotées par des menus.

Utilisez CtrlEspace pour définir une marque et déplacer votre curseur.

Le transient-mark-mode met en évidence les sélections pour vous. Mx transient-mark-mode .

Vous pouvez configurer Emacs pour activer ce mode par défaut en utilisant une personnalisation. Mx customize-option RET transient-mark-mode .

… et si vous utilisez Ubuntu et que C-spc ne fonctionne pas pour vous: vous devez effacer la reliure à clé IBus “next input method”, comme dans

lancez ibus-setup et changez la liaison de clé pour “méthode de saisie suivante” à autre chose (ou supprimez-la entièrement en cliquant sur le bouton “…” puis sur le bouton “Supprimer”).

Citation tirée d’ une réponse à une question SO.

Pour élargir la réponse de Edin Salkovic, si vous utilisez le mode CUA, vous pouvez commencer à sélectionner un bloc visuel. Il existe de nombreux raccourcis pour contrôler la sélection des blocs décrits dans la documentation de CUA .

Avec Emacs 25, appuyez simplement sur CSpace , puis déplacez votre curseur où vous voulez mettre en surbrillance / sélectionner la région du texte qui vous intéresse. Après cela, vous pouvez avoir besoin de ces commandes:

  • Cw pour la coupe.
  • Mw pour la copie.
  • Cy pour coller.