En utilisant expand-region
Je recommanderais d'installer le expand-regionpackage (également disponible sur Melpa). Il serait utile pour éditer les situations mentionnées dans votre exemple et bien plus encore.
expand-regionest 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-modetampon.
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-modeactivé (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-regionbeaucoup, vous le lieriez à un raccourci clavier. J'aime le lier à C-\. Donc, avec le point à côté d'une seule citation: C-\fnameme 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-regionfonctionnalité). 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
DELpour supprimer la sélection, puis taper fname. Si delete-selection-modeest activé, vous pouvez ignorer le DELtrait.
En résumé, avec delete-selection-modepermis, les frappes ressemblent: C-\\\fname.

En utilisant change-inner
Je suis également tombé sur le change-innerpackage de l' expand-regionauteur magnars (qui l'utilise expand-regioncomme back-end) pour faire exactement ce que fait le Vim ci(et aussi changer externe ).
À partir du package README:
change-innervous donne le cicommandement 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-kdonneraref = open(|);. Les citations sont également des sexps équilibrés .