Подтвердить что ты не робот

Как перейти к следующей заглавной букве?

В vim я могу использовать f, за которым следует символ, чтобы перейти к следующему вводу этого символа в текущей строке. Например, если у меня есть следующее (позиция курсора с |):

m|akeBinExprNode = undefined

Я могу использовать fB для перехода к B и dtE для удаления до E, оставив меня с:

make|ExprNode = undefined

Интересно, есть ли способ сделать это, который не включает в себя написание точного символа, т.е. какое-то движение, которое означает "перейти к следующей заглавной букве" и/или "перейти вправо до следующей заглавной буквы",.

4b9b3361

Ответ 1

Я нашел этот vim отзыв для перемещения в CamelCaseWords, который может быть полезен:

" Use one of the following to define the camel characters.
" Stop on capital letters.
let g:camelchar = "A-Z"
" Also stop on numbers.
let g:camelchar = "A-Z0-9"
" Include '.' for class member, ',' for separator, ';' end-statement,
" and <[< bracket starts and "'` quotes.
let g:camelchar = "A-Z0-9.,;:{([`'\""
nnoremap <silent><C-Left> :<C-u>call search('\C\<\<Bar>\%(^\<Bar>[^'.g:camelchar.']\@<=\)['.g:camelchar.']\<Bar>['.g:camelchar.']\ze\%([^'.g:camelchar.']\&\>\@!\)\<Bar>\%^','bW')<CR>
nnoremap <silent><C-Right> :<C-u>call search('\C\<\<Bar>\%(^\<Bar>[^'.g:camelchar.']\@<=\)['.g:camelchar.']\<Bar>['.g:camelchar.']\ze\%([^'.g:camelchar.']\&\>\@!\)\<Bar>\%$','W')<CR>
inoremap <silent><C-Left> <C-o>:call search('\C\<\<Bar>\%(^\<Bar>[^'.g:camelchar.']\@<=\)['.g:camelchar.']\<Bar>['.g:camelchar.']\ze\%([^'.g:camelchar.']\&\>\@!\)\<Bar>\%^','bW')<CR>
inoremap <silent><C-Right> <C-o>:call search('\C\<\<Bar>\%(^\<Bar>[^'.g:camelchar.']\@<=\)['.g:camelchar.']\<Bar>['.g:camelchar.']\ze\%([^'.g:camelchar.']\&\>\@!\)\<Bar>\%$','W')<CR>
vnoremap <silent><C-Left> :<C-U>call search('\C\<\<Bar>\%(^\<Bar>[^'.g:camelchar.']\@<=\)['.g:camelchar.']\<Bar>['.g:camelchar.']\ze\%([^'.g:camelchar.']\&\>\@!\)\<Bar>\%^','bW')<CR>v`>o
vnoremap <silent><C-Right> <Esc>`>:<C-U>call search('\C\<\<Bar>\%(^\<Bar>[^'.g:camelchar.']\@<=\)['.g:camelchar.']\<Bar>['.g:camelchar.']\ze\%([^'.g:camelchar.']\&\>\@!\)\<Bar>\%$','W')<CR>v`<o

Ответ 2

Я бы рекомендовал следующее script: camelcasemotion. Это позволяет вам прыгать, удалять внутренние "слова верблюда", используя , + нормальную навигацию [w, b, e] и т.д.

Ответ 3

Когда я искал это, я был бы рад просто иметь "родное" решение: просто введите в командном режиме:

/\u

который означает "поиск заглавной буквы". После этого просто переместите заглавные буквы с n и n (shift + n).

Ответ 4

Ответ wilhelmtell будет работать, если не установлен параметр 'ignorecase'. Если 'smartcase' активирован или 'noignorecase', тогда все в порядке.

Однако шаблон, который может заменить [A-Z], равен \u (см. :help /\u или более глобально :help pattern). Поэтому вы можете заменить свое сопоставление:

:nnoremap <leader>C /\u<CR>:nohlsearch<CR>

Ответ 5

:nmap <leader>C /[A-Z]<CR>:nohlsearch<CR>

Затем в нормальном режиме <leader>C (который по умолчанию означает \C)