Comment faire pour que les mouvements respectent camelCase ou snake_case?


20

Il est courant d'utiliser camelCase ou snake_case pour séparer plusieurs mots qui forment un identifiant. Ce serait bien si les mouvements « mot » ( b, w, e) détecteraient les limites intérieure identifiant.

Comment réaliser ce comportement? (Plugin / vimrc / ...?)


1
J'aimerais aussi le savoir poursnake_case
Martin Tournoij

Vous pouvez peut-être faire quelque chose avec le iskeywordparamètre, mais je crains que cela n'ait de nombreux effets secondaires supplémentaires ... (voir :help word).
Martin Tournoij

@Carpetsmoker Je pensais que cela fonctionnait snake_case. Semble que ce n'est pas le cas, l'a inclus dans la question.
Jasper

4
VimWiki vous couvre: vim.wikia.com/wiki/Moving_through_camel_case_words Je rédigerai une bonne réponse à un moment donné si quelqu'un ne me bat pas.
Rich

Personnellement, je considère un mot camalCased comme un mot entier et je n'aime pas l'idée de le diviser à moitié en raison de la casse ou du soulignement. Habituellement, j'utilise les touches fet tpour gérer les mouvements internes des mots.
Sukima

Réponses:


11

Le plugin CamelCaseMotion fait ce que vous voulez. Par défaut , il mappe les touches ,w, ,b, ,equi sont équivalentes à la normale w, b, e. Cela fonctionne pour CamelCase et snake_case:

Exemple:

camelCaseWord

L'utilisation d,wsupprimera camel; l'utiliser à nouveau supprimera Case.

Ou avec étui à serpent:

snake_case_word

d,wsupprimera snake_, et la deuxième fois, il sera supprimé case_.

Les mouvements "intérieurs" (comme diw) devraient également fonctionner comme prévu (comme di,w).

Si vous préférez, vous pouvez également remplacer la valeur par défaut w, bet eavec:

map <silent> w <Plug>CamelCaseMotion_w
map <silent> b <Plug>CamelCaseMotion_b
map <silent> e <Plug>CamelCaseMotion_e
sunmap w
sunmap b
sunmap e
omap <silent> iw <Plug>CamelCaseMotion_iw
xmap <silent> iw <Plug>CamelCaseMotion_iw
omap <silent> ib <Plug>CamelCaseMotion_ib
xmap <silent> ib <Plug>CamelCaseMotion_ib
omap <silent> ie <Plug>CamelCaseMotion_ie
xmap <silent> ie <Plug>CamelCaseMotion_ie

2
Notez que les mappages par défaut de ce plugin masquent la ,commande (répéter dernier f/ t/ F/ Tmouvement), ce qui signifie que si vous souhaitez utiliser cette commande, vous devrez attendre un délai (configuré par 'timeoutlen'). Heureusement, le plugin vous permet d'utiliser des mappages alternatifs de votre choix.
tommcdo

Il semble y avoir des effets secondaires avec ce plug - in, à savoir: dwsur , key);lorsque le curseur est à ksemble enlever toute la ligne (y compris saut de ligne), alors que je pensais juste keyà enlever ...
Martin Tournoij

1
J'ai trouvé que ce plugin était meilleur. La combinaison du mouvement avec la suppression fonctionne correctement et elle s'arrête également aux crochets.
Paschalis

Point mineur, mais dans le premier exemple, cela supprimerait sûrement camelet ensuite Case, non Word?
Preferred_anon
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.