É possível fazer com que as marcas vim (por exemplo, mm) apontem para o caractere para o qual foram originalmente definidas, em vez da localização original da linha/coluna do caractere?
Por exemplo, se eu digitar mm na primeira letra da palavra "políticos" (Linha 1, Coluna 72) na frase de exemplo abaixo e, em seguida, excluir a palavra "entradas" e digitar `m, meu cursor retornará ao originalcursorposição (Linha 1, Coluna 72) que é agora a localização da letra 'a' na palavra "políticos". Eu entendo que este é o comportamento esperado do vim, masEu gostaria que `m me retornasse ao 'p' dos políticos, mesmo que a localização da Linha/Coluna tenha mudado.
Frase de exemplo:
O bloqueio de 10 dias ocorre depois que mudanças anônimas foram feitas em políticos e empresas, bem como em eventos como o assassinato de Kennedy.
Acho meu comportamento desejado muito mais útil para a maneira como escrevo/edito (especialmente ao usar o Vim além de seu propósito original de codificação). Viemu, um plug-in que adiciona muitas das funcionalidades do Vim ao Word, marca o caminho que desejo. Infelizmente, o Viemu não é uma versão perfeita do Vim e eu preferiria redigir todo o texto (e-mails, ensaios, etc. e não apenas código) no Vim. Não saber como fazer com que o Vim trate as marcas da maneira que desejo é um dos principais motivos pelos quais não o utilizo exclusivamente.
Agradeço antecipadamente,
PS Esta é a primeira vez que posto em um stackexchange/superusuário, então, por favor, me perdoe se não segui o formato/protocolo adequado para fazer uma pergunta e corrija-me.
Responder1
Embora as marcas sejam ajustadas para linhas adicionadas/removidas, a posição da coluna não; você está correto nisso. O comportamento desejado certamente traz vários benefícios; Acho que ainda não foi implementado, provavelmente por causa da complexidade envolvida. (E isso quebraria a compatibilidade com o vi e versões anteriores do Vim, algo que não é considerado levianamente.)
Embora seja possível conectar-se a algumas ações de edição com :autocmd
s, isso geralmente não é possível (por exemplo, coisas como :s
não podem ser interceptadas), portanto, emular esse comportamento no Vimscript seria difícil e não conheço nenhuma implementação desse tipo.