utilizzando expand-region
Consiglio di installare il expand-region
pacchetto (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-mode
buffer.
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-mode
abilitato (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-region
molto, lo legheresti a una scorciatoia da tastiera breve. Mi piace legarlo a C-\
. Quindi, con il punto accanto a una singola citazione: C-\fname
mi 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-region
funzione). Quello selezionerà specific-file-name
.
Se tu avessi legata er/expand-region
a 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
DEL
per eliminare la selezione e quindi digitare fname
. Se delete-selection-mode
abilitato, puoi saltare il DEL
tratto.
In sintesi, con delete-selection-mode
abilitata, i tasti che assomigliano: C-\\\fname
.
utilizzando change-inner
Mi sono anche imbattuto nel change-inner
pacchetto degli expand-region
autori magnars (che usa expand-region
come back-end) per fare esattamente quello che fa il Vim ci
(e anche cambiare l'esterno ).
Dal pacchetto README:
change-inner
ti dà il ci
comando 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-k
daràref = open(|);
. Le citazioni sono anche sexps equilibrati .