如何将光标移动到Vim中单词的第一个大写字母之前或之后?
我的动机是删除或选择代码中骆驼大小写标识符的第一个单词。例如,如果光标位于单词camelCase
中的m
字符上,我可以使用正常模式命令的FcdtC
序列来删除camel
前缀。
有没有一种通用的方法可以跳到标识符中下一个大写字母的位置?
在只使用内置Vim仪器的方法优选地,可以使用以下搜索命令。
用于跳到下一个大写字符:
/u
用于将光标移动到下一个大写字母的右侧一个字符字符:
/u/s+
或
/uzs
如果一个人期望经常使用这样的动作,他总是可以为其定义一个快捷键映射,例如:
:nnoremap <leader>u /u/s+<cr>
我不认为有任何内置功能
作为@ib。表示,可以使用正则表达式运动,但键入起来并不特别容易。然而,有一个camelcasemotion插件,它为此添加了必要的动作,以及下划线分隔的标识符。
更新的答案(使用@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
我想我想也许是"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:nohlsearchr"<cr>
这样可以提供
DailyAverage.new(FooBarBaz)
如果我的光标在a
(来自DailyMesure)上,并且我按下dM
,它会删除到A并给出
Average.new(FooBarBaz)
它适用于所有等待移动的命令(c
y
……..)
这个片段需要改进,因为高亮显示不好。