Como substituo a palavra atual sob o cursor no Emacs?
Eu sei que posso usar query-replace ou replace-string, mas toda vez que faço isso, tenho que digitar toda a string a ser substituída, isso é apenas irritante.
O Vi possui comando equivalente cword e posso usar um atalho para puxar a palavra sob o cursor para substituição:
nmap <leader>z :%s#\<<C-r>=expand("<cword>")<CR>\>#
Alguém sabe como fazer isso com o Emacs?
Respostas:
Use copiar e colar:
M-d C-_ M-x replace-string RET C-y
(kill-word
,undo
,replace-string
,yank
). Se você já começou a substituição, você pode voltar para o tampão original para fazer o copiar e colar com a janela de costume ou buffer comandos de comutação:M-x replace-string RET … C-x o M-d C-_ C-x o C-y
. Você pode usar um argumento de prefixo emM-d
(por exemploESC 4 2 M-d
) para substituir várias palavras.Se estiver planejando substituir uma ou mais palavras no cursor, comece com a pesquisa incremental (
C-s
), useC-w
para começar a pesquisar a palavra sob o cursor e pressioneM-%
para alternar parareplace-string
.fonte
A pesquisa incremental possui esse recurso, mas as funções de substituição não. Felizmente, pesquisa incremental faz tem uma maneira de mudar o modo de substituir uma vez que você selecionou um termo de pesquisa. Tão:
Como você provavelmente sabe do uso M-%normal, esse é um modo de substituição de consulta, em que solicita o que fazer com cada correspondência. Se você quiser apenas substituí-los, bata !na primeira partida
fonte
fonte
Sou absolutamente novo no emacs, mas posso sugerir o seguinte:
Agora você pode escrever uma nova palavra. Funciona quase como
cw
no vimfonte
Se você pesquisar e substituir,
M-S-%
basta pressionar aM-n
palavra sob o cursor, pressioná-lo novamente e enviá-lo no "delimitador de símbolo".fonte
Eu estava lutando e querendo a mesma coisa desde a mudança do Vim para o Emacs.
Após algumas pesquisas e experiências, criei a função abaixo, que permite que você faça a mesma coisa com o pacote Evil instalado ou usando o spacemacs.
Também funciona com a região ativa (ou seleção visual no termo vim) e pode ser bastante útil para substituir palavras como abc-def-hij:
em seu init.el, defina a mesma ligação de chave:
keybinding é um pouco diferente do vim, que é o "espaço z", mas não descobri como mapear isso no emacs quando o modo maligno está lá. continue reclamando não é um prefixo etc e eu sou relativamente novo no emacs. Mas ainda não é tão ruim e eu estou feliz com esta solução no momento.
fonte
Isso já foi respondido e não posso comentar porque ainda não tenho reputação suficiente. Mas o que você está procurando é
ciw
no vim.No emacs, o mais próximo que cheguei é dessa combinação:
M-b M-d
Isso volta ao início da palavra em que o cursor está e exclui a palavra.
fonte