utilizzando expand-region
Consiglio di installare il expand-regionpacchetto (disponibile anche su Melpa). Sarebbe utile per modificare le situazioni menzionate nel tuo esempio e molto altro.
expand-regionè intelligente. Basato sulla modalità principale, proverà a capire cosa stai cercando di selezionare. Non so da quale lingua hai lo snippet di esempio, quindi userò lo snippet di codice di esempio e lo modificherò leggermente per Python (remove;). Quindi la mia spiegazione di seguito è con lo snippet di codice in basso in un python-modebuffer.
ref = open('specific-file-name')
Se il punto è accanto a una singola citazione
I rettangoli verticali neri sottostanti indicano l'aspetto del cursore.
# 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'▮
In entrambi i casi, quando lo fai M-x er/expand-region, 'specific-file-name'verrà selezionato e puoi quindi premere DEL(o backspace) per eliminare la selezione.
Se hai delete-selection-modeabilitato (mi piace averlo abilitato personalmente), puoi iniziare a digitare via dopo aver fatto la selezione e questo sovrascriverà la selezione.
Ovviamente, se usi er/expand-regionmolto, lo legheresti a una scorciatoia da tastiera breve. Mi piace legarlo a C-\. Quindi, con il punto accanto a una singola citazione: C-\fnamemi daràref = open(fname);

Se il punto è da qualche parte all'interno delle virgolette
Utilizzando expand-region, il punto non deve essere vicino alle virgolette. Ma in questo caso, avrai bisogno di pochi altri tasti (di solito uno o due più).
Supponiamo che ora la posizione del cursore sia la seguente:
# cursor shown below is hiding the i character under it
ref = open('specif▮c-file-name')
Usando la stessa associazione che ho usato sopra:
- La prima volta che premo
C-\selezionerò specific.
Ora ho solo bisogno di premere \per espandere la selezione ( expand-regionfunzione). Quello selezionerà specific-file-name.
Se tu avessi legata er/expand-regiona C-=, colpendo =ancora una volta farà l'espansione incrementale. Leggi la sua documentazione su come associare i tasti per l'espansione / contrazione incrementale della selezione.
- Colpire
\ancora una volta si selezionerà 'specific-file-name'.
- Ora si procede con il colpo
DELper eliminare la selezione e quindi digitare fname. Se delete-selection-modeabilitato, puoi saltare il DELtratto.
In sintesi, con delete-selection-modeabilitata, i tasti che assomigliano: C-\\\fname.

utilizzando change-inner
Mi sono anche imbattuto nel change-innerpacchetto degli expand-regionautori magnars (che usa expand-regioncome back-end) per fare esattamente quello che fa il Vim ci(e anche cambiare l'esterno ).
Dal pacchetto README:
change-innerti dà il cicomando di Vim, basandoci su expand-region. È più facilmente spiegato dall'esempio:
function test() {
return "semantic kill";
}
Con punto dopo la parola semantica
change-inner "ucciderebbe il contenuto della stringa
change-outer "ucciderebbe l'intera stringa
change-inner {ucciderebbe la dichiarazione di ritorno
change-outer {ucciderebbe l'intero blocco
ref = open(|'specific-file-name');,C-M-kdaràref = open(|);. Le citazioni sono anche sexps equilibrati .