Utilizando expand-region
Recomendaría instalar el expand-regionpaquete (también disponible en Melpa). Sería útil para editar situaciones mencionadas en su ejemplo y mucho más.
expand-regiones 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-modebú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-modehabilitado (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-regionmucho, 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-\fnameme 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-regionfunción). Eso lo seleccionará specific-file-name.
Si tenía que er/expand-regionhacerlo 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
DELpara eliminar la selección y luego escribe fname. Si delete-selection-modeestá habilitado, puede omitir el DELtrazo.
En resumen, la delete-selection-modehabilita, las pulsaciones de teclas se ven como: C-\\\fname.

Utilizando change-inner
También me encontré con el change-innerpaquete del expand-regionautor Magnars (que usa expand-regioncomo back-end) para hacer exactamente lo que hace el Vim ci(y también cambiarlo externamente ).
Del paquete README:
change-innerda de que vim cicomando, 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-kdaráref = open(|);. Las citas también son sexps equilibrados .delete-everything-inside-parensalgo así, nodelete-first-sexp-inside-parens.evilemula la mayoría de Vim, y hace objetos de texto fuera de la caja.En otras palabras, con la
evilactivación y el uso de las combinaciones de teclas predeterminadas,ci(hará exactamente lo que está pidiendo: cambiar lo que está dentro de los paréntesis.Más precisamente,
ci(se encadenaráevil-changeaevil-inner-paren. También puede crear sus propios objetos de texto arbitrarios como desee.fuente
evil, ¿por qué querría la noevilalternativa?Usando smartparens
Matar
1) Use
C-M-u(sp-backward-up-sexp) para salir de los'delimitadores.2) Use
C-0 C-M-k(0prefijo +sp-kill-sexp) para matar cosas dentro del sexp actual oC-k(sp-kill-hybrid-sexp). Este último solo funciona cuandosmartparens-strict-modeestá habilitado y el sexp actual se ajusta en una línea.Marcar y borrar / matar / copiar
1) Encuentra tu camino al comienzo de sexp (en este ejemplo
C-M-u sp-backward-up-sexpes suficiente), marcaC-SPCy ve al final de sexp consp-end-of-sexp.2) Luego puede hacer lo que desee:
C-wmatar a la región, matar a la regiónM-wde guardar el anillo (copiar),backspaceeliminarla sin saturar el anillo de matar (solo condelete-selection-mode)Función Mark-inside-sexp
smartparensEl paquete tiene unasp-mark-sexpfunción que marca el próximo sexp completo, es decir, delimitadores y cosas entre ellos.Puede usar una función como esta para eliminar delimitadores de la selección:
Sal de tu sexp usando
C-M-urepetidamente y dispara mark-inside-sexp-using-sp y luego decide qué hacer con la región activa.fuente