Как перейти к следующей заглавной букве? - PullRequest
31 голосов
/ 31 октября 2011

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

m|akeBinExprNode = undefined

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

make|ExprNode = undefined

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

Ответы [ 5 ]

21 голосов
/ 22 ноября 2016

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

/\u

, что означает «поиск заглавной буквы». После этого просто перемещайтесь между заглавными буквами с n и N (shift + n).

14 голосов
/ 08 ноября 2011

Я бы порекомендовал следующий скрипт: camelcasemotion .Он позволяет вам прыгать, удалять внутренние «слова верблюжьих слов», используя , + обычная навигация [w, b, e] и т. Д. *

7 голосов
/ 01 ноября 2011

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

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

:nnoremap <leader>C /\u<CR>:nohlsearch<CR>
5 голосов
/ 31 октября 2011

Я нашел этот совет 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
5 голосов
/ 31 октября 2011
:nmap <leader>C /[A-Z]<CR>:nohlsearch<CR>

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

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