Utilizando expand-region
Recomendaría instalar el expand-region
paquete (también disponible en Melpa). Sería útil para editar situaciones mencionadas en su ejemplo y mucho más.
expand-region
es inteligente. Según el modo principal, intentará descubrir qué está intentando seleccionar. No sé de qué idioma tiene el fragmento de ejemplo, por lo que utilizaré su fragmento de código de ejemplo y lo modificaré ligeramente para Python (eliminar;). Entonces, mi explicación a continuación es con el fragmento de código a continuación en un python-mode
búfer.
ref = open('specific-file-name')
Si el punto está al lado de una comilla simple
Los rectángulos verticales negros a continuación indican cómo se verá el cursor.
# 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'▮
En cualquier caso, cuando lo haga M-x er/expand-region
, 'specific-file-name'
se seleccionará y luego podrá presionar DEL
(o retroceder) para eliminar la selección.
Si ha delete-selection-mode
habilitado (me gusta habilitarlo personalmente), puede comenzar a escribir después de hacer la selección y eso sobrescribirá la selección.
Por supuesto, si usa er/expand-region
mucho, lo vincularía a una combinación de teclas corta. Me gusta vincularlo C-\
. Entonces, con un punto al lado de una sola cita: C-\fname
me daráref = open(fname);
Si el punto está en algún lugar dentro de las comillas
Usando expand-region
, el punto no necesita estar cerca de las comillas. Pero en este caso, necesitará unas pocas pulsaciones de teclas más (generalmente una o dos más).
Digamos que la posición del cursor es la siguiente ahora:
# cursor shown below is hiding the i character under it
ref = open('specif▮c-file-name')
Usando el mismo enlace que usé anteriormente:
- La primera vez que golpee
C-\
seleccionaré specific
.
Ahora solo necesito presionar \
para expandir la selección ( expand-region
función). Eso lo seleccionará specific-file-name
.
Si tenía que er/expand-region
hacerlo C-=
, golpear =
nuevamente hará la expansión incremental. Lea su documentación sobre cómo vincular teclas para la expansión / contracción incremental de la selección.
- Golpear
\
una vez más seleccionará 'specific-file-name'
.
- Ahora continúa presionando
DEL
para eliminar la selección y luego escribe fname
. Si delete-selection-mode
está habilitado, puede omitir el DEL
trazo.
En resumen, la delete-selection-mode
habilita, las pulsaciones de teclas se ven como: C-\\\fname
.
Utilizando change-inner
También me encontré con el change-inner
paquete del expand-region
autor Magnars (que usa expand-region
como back-end) para hacer exactamente lo que hace el Vim ci
(y también cambiarlo externamente ).
Del paquete README:
change-inner
da de que vim ci
comando, sobre la base expand-region
. Se explica más fácilmente con un ejemplo:
function test() {
return "semantic kill";
}
Con punto después de la palabra semántica
change-inner "
mataría el contenido de la cadena
change-outer "
mataría toda la cadena
change-inner {
mataría la declaración de retorno
change-outer {
mataría todo el bloque
ref = open(|'specific-file-name');
,C-M-k
daráref = open(|);
. Las citas también son sexps equilibrados .