Usando expand-region
Eu recomendaria instalar o expand-region
pacote (disponível também no Melpa). Seria útil para editar situações mencionadas no seu exemplo e muito mais.
expand-region
é inteligente. Com base no modo principal, ele tentará descobrir o que você está tentando selecionar. Não sei de qual idioma você tem o snippet de exemplo, então usarei o seu snippet de código de exemplo e o modificarei levemente para Python (remove;). Portanto, minha explicação abaixo é com o trecho de código abaixo em um python-mode
buffer.
ref = open('specific-file-name')
Se o ponto estiver próximo a uma aspas simples
Os retângulos verticais pretos abaixo indicam a aparência do 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'▮
Em qualquer um dos casos, quando o fizer M-x er/expand-region
, 'specific-file-name'
será selecionado e você poderá pressionar DEL
(ou retroceder) para excluir a seleção.
Se você delete-selection-mode
ativou (eu gosto de ativá-lo pessoalmente), você pode começar a digitar depois de fazer a seleção e isso substituirá a seleção.
Obviamente, se você usa er/expand-region
muito, vincula-o a uma ligação de chave curta. Eu gosto de ligá-lo C-\
. Então, com o ponto ao lado de uma única citação: C-\fname
vai me darref = open(fname);
Se point estiver em algum lugar dentro das aspas
Usando expand-region
, o ponto não precisa estar próximo das aspas. Mas, neste caso, você precisará de apenas mais alguns (geralmente um ou dois mais) pressionamentos de tecla.
Digamos que a posição do cursor esteja como abaixo agora:
# cursor shown below is hiding the i character under it
ref = open('specif▮c-file-name')
Usando a mesma ligação que usei acima:
- A primeira vez que eu clicar
C-\
selecionará specific
.
Agora só preciso clicar \
para expandir a seleção ( expand-region
recurso). Isso irá selecionar specific-file-name
.
Se você tinha ligado er/expand-region
para C-=
, bater =
novamente fará a expansão incremental. Leia sua documentação sobre como vincular chaves para expansão / contração incremental da seleção.
- Bater
\
mais uma vez irá selecionar 'specific-file-name'
.
- Agora você continua pressionando
DEL
para excluir a seleção e digitar fname
. Se delete-selection-mode
estiver ativado, você pode pular o DEL
traço.
Em resumo, com delete-selection-mode
habilitado, os cursos chaves parecer: C-\\\fname
.
Usando change-inner
Eu também me deparei com o change-inner
pacote dos magnars do expand-region
autor (que usa como back-end) para fazer exatamente o que o Vim faz (e também alterar o exterior ).expand-region
ci
Do pacote README:
change-inner
dá a você o ci
comando do vim , construindo expand-region
. É mais facilmente explicado pelo exemplo:
function test() {
return "semantic kill";
}
Com ponto após a palavra semântica
change-inner "
mataria o conteúdo da string
change-outer "
mataria a string inteira
change-inner {
mataria a declaração de retorno
change-outer {
mataria o bloco inteiro
ref = open(|'specific-file-name');
,C-M-k
vai darref = open(|);
. As citações também são sexps equilibrados .