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.