Перемещение через слова 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
........)
Этот фрагмент должен быть улучшен из-за плохого выделения.