En utilisant expand-region
Je recommanderais d'installer le expand-region
package (également disponible sur Melpa). Il serait utile pour éditer les situations mentionnées dans votre exemple et bien plus encore.
expand-region
est intelligent. Basé sur le mode principal, il essaiera de comprendre ce que vous essayez de sélectionner. Je ne sais pas de quelle langue vous avez l'exemple d'extrait, je vais donc utiliser votre exemple d'extrait de code et le modifier légèrement pour Python (supprimer;). Donc mon explication ci-dessous est avec l'extrait de code ci-dessous dans un python-mode
tampon.
ref = open('specific-file-name')
Si le point est à côté d'un guillemet simple
Les rectangles verticaux noirs ci-dessous indiquent à quoi ressemblera le curseur.
# point on left of left quote, the cursor is hiding the quote under it
ref = open(▮specific-file-name')
# point on left of right parenthesis, the cursor is hiding the parenthesis under it
ref = open('specific-file-name'▮
Dans les deux cas, lorsque vous le ferez M-x er/expand-region
, 'specific-file-name'
sera sélectionné et vous pouvez ensuite appuyer sur DEL
(ou revenir en arrière) pour supprimer la sélection.
Si vous avez delete-selection-mode
activé (j'aime que cela soit activé personnellement), vous pouvez commencer à taper après avoir fait la sélection et cela écrasera la sélection.
Bien sûr, si vous en utilisez er/expand-region
beaucoup, vous le lieriez à un raccourci clavier. J'aime le lier à C-\
. Donc, avec le point à côté d'une seule citation: C-\fname
me donneraref = open(fname);
Si le point est quelque part à l'intérieur des guillemets
En utilisant expand-region
, le point n'a pas besoin d'être près des guillemets. Mais dans ce cas, vous aurez besoin de quelques touches de plus (généralement un ou deux de plus).
Disons que la position du curseur est comme ci-dessous maintenant:
# cursor shown below is hiding the i character under it
ref = open('specif▮c-file-name')
En utilisant la même liaison que celle utilisée ci-dessus:
- La première fois que je frappe,
C-\
je sélectionnerai specific
.
Maintenant, je dois juste frapper \
pour étendre la sélection ( expand-region
fonctionnalité). Cela sélectionnera specific-file-name
.
Si vous aviez lié er/expand-region
à C-=
, frapper à =
nouveau fera l'expansion progressive. Lisez sa documentation sur la façon de lier des clés pour une expansion / contraction incrémentielle de la sélection.
- Frapper
\
une fois de plus sélectionnera 'specific-file-name'
.
- Maintenant, vous devez appuyer sur
DEL
pour supprimer la sélection, puis taper fname
. Si delete-selection-mode
est activé, vous pouvez ignorer le DEL
trait.
En résumé, avec delete-selection-mode
permis, les frappes ressemblent: C-\\\fname
.
En utilisant change-inner
Je suis également tombé sur le change-inner
package de l' expand-region
auteur magnars (qui l'utilise expand-region
comme back-end) pour faire exactement ce que fait le Vim ci
(et aussi changer externe ).
À partir du package README:
change-inner
vous donne le ci
commandement de vim , en s'appuyant sur expand-region
. Cela s'explique plus facilement par l'exemple:
function test() {
return "semantic kill";
}
Avec un point après le mot sémantique
change-inner "
tuerait le contenu de la chaîne
change-outer "
tuerait la chaîne entière
change-inner {
tuerait la déclaration de retour
change-outer {
tuerait le bloc entier
ref = open(|'specific-file-name');
,C-M-k
donneraref = open(|);
. Les citations sont également des sexps équilibrés .