我如何转到下一个大写字母?

时间:2011-10-31 18:57:24

标签: vim

在vim中,我可以使用f后跟一个字符转到当前行上该字符的下一个匹配项。例如,如果我有以下内容(光标位置标有|):

m|akeBinExprNode = undefined

我可以使用fB移至BdtE删除至E之前,请留下:

make|ExprNode = undefined

我想知道是否有办法做到这一点,不涉及输入确切的字符,即某种动作意味着“转到下一个大写字母”和/或“在下一个大写字母前右转”

5 个答案:

答案 0 :(得分:20)

当我搜索时,我很乐意拥有" native"解决方案:只需进入命令模式:

/\u

代表"搜索大写字母"。之后只需在大写字母之间移动nN(shift + n)。

答案 1 :(得分:14)

我建议使用以下脚本:camelcasemotion。它允许你使用 +普通导航[w,b,e]等跳转,删除内部'驼峰案例词'......

答案 2 :(得分:6)

除非设置'ignorecase'参数,否则

wilhelmtell's回答将有效。如果'smartcase'已激活或'noignorecase'则可以。

但是,可以取代[A-Z]的模式是\u(全球:help /\u或更多:help pattern)。因此,您可以使用以下命令替换映射:

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

答案 3 :(得分:5)

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

然后以正常模式<leader>C(默认情况下为\C

答案 4 :(得分:5)

我发现这个vim tip for moving within 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