Faça movimentos de palavras tratar. (ponto) como espaço

2
a b.c d
^

Se eu pressionar w, meu cursor se moverá para b, pressionar novamente o moverá para.

Como posso fazer com que o vim ignore .da mesma forma que ignorou o espaço, ou seja, quando o cursor está bpressionado, wme move para ce não . quero fazer isso desde 90% do tempo em que quero mudar para outra palavra com w, .não é para onde pretendo me mudar e é tão irritante ter que pressionar wduas vezes para atravessar um.

Eu também gostaria de fazer o mesmo com um monte de não-palavras óbvias, como ()[]{}:,

Note-se que :set iskeyword+=.não satisfaz a minha necessidade, uma vez que resulta em pressionar wa bir para dem vez de c(eu quero isso para ir diretamente para capenas ignorando a .)

Rufus
fonte
Como faço para migrar isso para o vi stackexchange ?
Rufus

Respostas:

0

Aqui está um excelente plug-in de Kana Natsuno que eu tenho usado há anos e acho que faz o que você precisa: https://github.com/kana/vim-smartword

Não ignora apenas ., ignora qualquer tipo de pontuação. Isto significa que a palavra moções, w, b, e, e ge, pular diretamente sobre o caráter palavra anterior / seguinte, em vez de aterrar em coisas no meio.

A documentação explica melhor: https://github.com/kana/vim-smartword/blob/master/doc/smartword.txt#L40-L66

Andrew Radev
fonte
Boa solução, acabei vinculando-os a W, B, E em vez de w, b, e já que eu queria reter dwapenas a exclusão de uma palavra, obrigado!
Rufus
Eu acho que dwainda apaga apenas a palavra. Pode haver uma substituição especial lá. Eu recomendo que você experimente dWseu novo mapeamento e veja o que ele faz.
precisa saber é o seguinte
0

Você deseja modificar a iskeywordconfiguração:

'iskeyword'
    Keywords are used in searching and recognizing with many commands:
    "w", "*", "[i", etc.  It is also used for "\k" in a |pattern|.  See
    'isfname' for a description of the format of this option.

Um simples :set iskeyword+=.será adicionado .à lista de caracteres considerados parte de a word. Use vírgulas para adicionar vários caracteres ou um intervalo ASCII decimal para especificar vários de uma vez:

:set iskeyword+=[,],40-41    " adds []()

Observe que alguns caracteres são especiais. ,, obviamente, e também @. Veja :help 'isfname'para detalhes completos.

iskeywordé uma configuração local do buffer e, muitas vezes, modificada como efeito colateral quando o tipo de arquivo é definido, lembre-se disso. iskeywordtambém pode afetar o realce da sintaxe, a menos que a sintaxe seja usada syn-iskeyword.

8bittree
fonte
Não funciona como pretendido, porém, acrescentando .como palavra-chave torna premente w a bir diretamente para d, em vez de c... Gostaria de fazê-lo de tal forma que pressionar w a bir para c, em vez de.
Rufus
@ Woofas Ah, entendo o que você quer dizer agora. Deixarei essa resposta no lugar, pois pode ser útil para outras pessoas.
precisa saber é o seguinte