Як зробити так, щоб рухи поважали camelCase або snake_case?


20

Для відокремлення кількох слів, які утворюють ідентифікатор, звичайно використовувати або camelCase, або snake_case. Було б непогано , якби «слово» рух ( b, w, e) виявить ці межі внутрішнього ідентифікатора.

Як можна досягти такої поведінки? (Плагін / vimrc / ...?)


1
Я також хотів би це дізнатисяsnake_case
Мартін Турноїй

Можливо, ви зможете зробити щось із iskeywordналаштуванням, але я боюся, що це матиме багато додаткових побічних ефектів ... (див. :help word).
Мартін Турноїй

@Carpetsmoker Я подумав, що це працює snake_case. Здається, що цього немає, включив його в анкету.
Джаспер

4
VimWiki вас охоплює: vim.wikia.com/wiki/Moving_through_camel_case_words Я напишу належну відповідь у якийсь момент, якщо хтось інший не переможе мене на це.
Багатий

Я особисто розглядаю слово camalCase як ціле слово і мені не подобається думка про перелом половини слова на слово через регістр чи підкреслення. Зазвичай я використовую клавіші fі tдля управління внутрішніми рухами слова.
Сукіма

Відповіді:


11

Плагін CamelCaseMotion робить все, що ви хочете. За замовчуванням він відображає на клавіші ,w, ,b, ,eякі еквівалентні нормальним w, b, e. Він працює як для CamelCase, так і для snake_case:

Приклад:

camelCaseWord

Використання d,wвидалить camel; використання його знову буде видалено Case.

Або зі змійкою:

snake_case_word

d,wвидалить snake_, а вдруге видалить case_.

"Внутрішні" рухи (такі як diw) також повинні працювати як очікувалося (як di,w).

Якщо ви віддаєте перевагу, ви можете також перевизначити значення за замовчуванням w, bі eз:

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
Зауважте, що відображення за замовчуванням відображення за замовчуванням відтіняє ,команду (повторити останній f/ t/ F/ Tрух), тобто якщо ви хочете використовувати цю команду, вам доведеться чекати затримки (налаштовано 'timeoutlen'). На щастя, плагін дозволяє використовувати альтернативні відображення на ваш вибір.
tommcdo

Там , здається, деякі побічні ефекти з допомогою цього плагіна, тобто: dwна , key);коли курсор знаходиться , kздається , щоб видалити весь рядок (включаючи символ нового рядка), в той час як я очікував тільки keyбути видалений ...
Martin Tournoij

1
Я знайшов цей плагін кращим. Поєднання руху з видаленням працює належним чином, і він зупиняється на дужках.
Пашаліс

Незначна точка, але в першому прикладі це неодмінно видалить, camelа потім Case, чи не так Word?
preference_anon
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.