Перемещение через слова CamelCase в vim

Как прыгать до или после первого символа верхнего регистра в vim?

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

Ответы

Ответ 1

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

Ответ 2

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

/\u

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

/\u/s+

или

/\u\zs

Ответ 3

** Обновленный ответ, используя вклад 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

Ответ 4

Думаю, я подумал, может быть, "способ 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........)

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