如何在Vim中遍历骆驼壳标识符中的单词?

如何在Vim中遍历骆驼壳标识符中的单词?,vim,Vim,如何在Vim中的单词的第一个大写字母之前或之后移动光标 我的动机是删除或选择代码中驼峰大小写标识符的第一个单词。例如,如果光标位于单词camelCase中的m字符上,我可以使用正常模式命令的FcdtC序列删除camel前缀 是否有一种跳转到标识符中下一个大写字母出现的通用方法?我认为没有任何内置的方法 例如,您可以使用正则表达式运动,但它不是特别容易键入。然而,有一种方法为此添加了必要的动作,以及下划线分隔的标识符。更新了答案(使用@ib.的贡献) :D在仅使用内置Vim仪器的进近不可用的情况下

如何在Vim中的单词的第一个大写字母之前或之后移动光标

我的动机是删除或选择代码中驼峰大小写标识符的第一个单词。例如,如果光标位于单词
camelCase
中的
m
字符上,我可以使用正常模式命令的
FcdtC
序列删除
camel
前缀

是否有一种跳转到标识符中下一个大写字母出现的通用方法?

我认为没有任何内置的方法

例如,您可以使用正则表达式运动,但它不是特别容易键入。然而,有一种方法为此添加了必要的动作,以及下划线分隔的标识符。

更新了答案(使用@ib.的贡献)
:D

在仅使用内置Vim仪器的进近不可用的情况下 最好使用以下搜索命令

用于跳转到下一个大写字符:

/\u
/\u/s+
用于将光标移动到下一个大写字母的右侧一个字符 人物:

/\u
/\u/s+

如果你希望经常使用这样的动作,你总是可以 将其键映射定义为简写,例如:

:nnoremap <leader>u /\u/s+<cr>
:nnoremap u/\u/s+
我想我可能想用“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>
如果我的光标在
a
(来自DailyMesure)上,我按
dM
它将删除到a并给出

Average.new(FooBarBaz)
它适用于所有等待移动的命令(
c
y
.)


此代码段需要改进,因为突出显示不好。

太复杂,可能会出现故障,具体取决于
'ignorecase'
参数(尽管它同时适用于
'ignorecase'
'smartcase'
)。关于“ignorecase”的观点很好。不过,我看不出有多复杂。也许是一个按键映射?不过,我更喜欢@ib.的建议。假设一个人没有使用“ignorecase”,你会怎么想?map/\uhI的意思是
[A-Z]
太复杂了<代码>\u减少了50%的字符。但这只是吹毛求疵:)不敢相信我不知道\u:P.好东西。插件是理想的,因为它附带了所有其他东西,但对于正则表达式运动类型,一旦隐藏在映射中,就不会丢失任何东西,也不会学到一点知识。实际上,我建议打开插件,看看它们如何映射自己的命令:)
" 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)
Average.new(FooBarBaz)