Costumo usar várias invocações forward-word
seguidas por uma única backward-word
para mover o ponto para o início de uma palavra em uma linha. Acho que nunca me acostumei com a maneira como forward-word
difere do vim w
e, mesmo depois de anos usando o Emacs, não consigo me acostumar com a diferença.
Existe uma função que eu poderia usar em vez de forward-word
não pular sobre as palavras, mas parar no início de uma palavra também? Existem outras estratégias para avançar para o início de uma palavra ao avançar um ponto que não envolva a execução repetida forward-char
?
Respostas:
O
misc
pacote (enviado com o emacs) possui a função internaforward-to-word
, que faz o que eu acho que você deseja:Para usá-lo, primeiro adicione
(require 'misc)
ao seu arquivo de configuração.fonte
w
. Tanto quanto eu posso ver, existe um mapeamento quase perfeito do vim para o emacs:w
=forward-to-word
;e
=forward-word
;b
=backward-word
;ge
=backward-to-word
. Mas eu não sou um usuário especialista em vim, então talvez exista alguma sutileza.w
,e
eb
simplesmente me afasto e me movo. Esquisito. Eu tinha certeza quew
parei nos dois pontos! Então, eu vou aceitar sua resposta, porque ele se encaixa exatamente a minha pergunta :)Você pode vincular a seguir função
M-f
e ligam o originalforward-word
paraM-F
. Esta função simplesmente pegaarg
e passa para aforward-word
função. Portanto, os argumentos universais funcionarão tão bem quanto com a função original.Atenção, porém, que a função acima nem sempre pode fazer a coisa certa ; depende muito se o ponto já está no início de uma palavra ou não.
Aqui está outra maneira de implementar o acima, onde o limite da palavra não é conforme a tabela de sintaxe, mas estritamente na separação de espaço em branco:
O crédito vai para @glucas para essa ideia.
fonte
Depois de uma longa e dolorosa busca pelas funções perfeitas de 'avançar / retroceder', encontrei o seguinte com o qual agora estou muito feliz:
fonte
Se você estiver disposto a usar
evil
,w
no estado normal está vinculadoevil-forward-word-begin
, qual é a funcionalidade no estilo Vim que você procura.fonte
evil
há muito tempo, mas há algum tempo eu usogod-mode
e ligações regulares do Emacs.Como você mencionou, o truque é avançar duas palavras e depois uma palavra para trás.
A seguir, você deve executar o truque e respeitar outros modos, como o modo de subpalavras.
Esta é uma versão rudimentar de /emacs//a/4272/508 que não cobre alguns casos, mas é mais fácil de entender.
fonte