Ao procurar uma string com C-s
, desejo poder pressionar alguma tecla para sair do modo de pesquisa, mas ainda manter a seleção da correspondência. Dessa forma, posso começar a digitar imediatamente e substituir a última correspondência.
Por exemplo, diga que tenho o seguinte documento:
The quick brown fox jumps over the lazy dog.
Se eu procurar por "preguiçoso", o emacs selecionará essa palavra assim (colchetes são seleção, pipe é cursor):
The quick brown fox jumps over the [lazy|] dog.
Agora, se eu pressionar return, o emacs manterá minha posição do cursor, mas desmarcará "preguiçoso":
The quick brown fox jumps over the lazy| dog.
Em vez disso, quero um atalho que saia do modo de pesquisa, mas mantenha a seleção de correspondência atual, como no segundo estado acima.
M-x query-replace
que você está procurando?C-s
e digitar o que acho que quero pesquisar e, em seguida, altere a consulta com espaço de retorno para zerar o que quero alterar. Então brinco com o que exatamente quero substituí-lo.M-%
é muito "formal".query-replace
não resolve isso.Respostas:
Aqui está uma abordagem:
Isso liga uma tecla diferente (retorno C) para sair da pesquisa atual e também deixar a última correspondência selecionada. Isso também funcionará
isearch-forward-regexp
, o que é útil.fonte
bind-key
vem?bind-key
vem de outra biblioteca. Alterei a resposta para usar adefine-key
função interna.O Library Isearch + permite que você faça isso com facilidade e até ative / desative rapidamente .
A opção Não nulo
isearchp-set-region-flag
define automaticamente a região (seleção) ao redor do último destino de pesquisa quando você sai da pesquisa.Comando
isearchp-toggle-set-region
, vinculado àM-s M-SPC
opção isearch togglesisearchp-set-region-flag
.O comando
set-region-around-search-target
define manualmente a região em torno do último destino de pesquisa. (Portanto, mesmo que a opção não esteja definida, você não poderá obter a seleção automática, poderá fazê-lo manualmente.)Biblioteca Substituir + permite que você faça a mesma coisa para
query-replace
etc. Ele coloca a região em torno (ou seja, seleciona) a última ocorrência de substituição. Ele usa a mesma opção,,isearchp-set-region-flag
para controlar isso, e o comandoset-region-around-search-target
tem o mesmo efeito.fonte