перемещение по словам CamelCase в VIM - PullRequest
15 голосов
/ 21 января 2012

Как перейти до или после первого заглавного символа в vim?

И если я хочу удалить или выбрать первое слово из (например) camelCase. Если я нахожусь на м-символе, я могу сделать FcdtC, но есть ли более общий способ сделать это?

Ответы [ 4 ]

21 голосов
/ 21 января 2012

Используйте следующие команды поиска. Для перехода на следующую заглавную букву характери-

/\u

Для перемещения курсора на один символ справа от следующего верхнего регистра характери-

/\u/s+

или

/\u\zs
3 голосов
/ 21 января 2012

** Обновленный ответ, используя вклад ib:

"select from first char up to First uppercase letter ( after first char )
map ,b bv/[A-Z]<cr>h

** Оригинальный ответ

Относительно прыжков до и после первой заглавной буквы Вы можете отобразить его, если хотите.

"Before next uppercase letter
map ,A /[A-Z]<cr>l

"After next uppercase letter
map ,B /[A-Z]<cr>h

: D.Надеюсь это поможет.Я читаю ваш второй вопрос сейчас.

Хорошо, прочитайте его.Теперь вы можете сделать это

bv,A

: D

3 голосов
/ 21 января 2012

Я не думаю, что есть что-то встроенное. . Как @ib. указывает на то, что вы можете использовать движение регулярного выражения, но набрать его не особенно просто. Однако есть плагин , который добавляет для этого необходимые движения, а также подчеркивает отдельные идентификаторы.

2 голосов
/ 04 июня 2015

Я думаю, я подумал, может быть, "vim способ" сделать это:

Vim позволяет нам определить наш собственный оператор!

" movement mapping {
" Delete yank or change until next UpperCase
" o waits for you to enter a movement command : http://learnvimscriptthehardway.stevelosh.com/chapters/15.html
" M is for Maj (as in french)
" :<c-u>execute -> special way to run multiple normal commande in a map : learnvimscriptthehardway.stevelosh.com/chapters/16.html

onoremap M :<c-u>execute "normal! /[A-Z]\r:nohlsearch\r"<cr>

Таким образом, давая

DailyAverage.new(FooBarBaz)

Если мой курсор находится на a (из DailyMesure), и я нажимаю dM Он удаляет A и дает

Average.new(FooBarBaz)

Он работает со всеми командами, ожидающими движение (c y ........)

Этот фрагмент необходимо улучшить из-за плохого выделения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...