写作时,我经常发现我最终得到的东西是[where] [是光标):
quux foo fooba][rino
我的意思是
quux foo Fooba][rino
是否可以将foobarino
大写为Foobarino
,从插入模式开始,最终在同一个地方,而不擦除您可能设置的某个标记?
我知道我可以使用bgUlea
之类的东西来移动单词的开头,大写一个字符然后移到最后并附加,但我想继续我离开的地方。
答案 0 :(得分:2)
您可以将ea
替换为gi
。
:help gi
说:
Insert text in the same position as where Insert mode
was stopped last time in the current buffer.
This uses the |'^| mark. It's different from "`^i"
when the mark is past the end of the line.
The position is corrected for inserted/deleted lines,
but NOT for inserted/deleted characters.
When the |:keepjumps| command modifier is used the |'^|
mark won't be changed.
答案 1 :(得分:2)
基于@ romainl的想法,这是一个由<C-g>~
触发的完整映射。
" i_CTRL-G_~ Switch case of the start of the current word from insert
" mode.
inoremap <C-g>~ $<BS><C-\><C-n>b~gi
首先确保在自动缩进的情况下保持当前位置(通过插入虚拟字符),然后离开插入模式,跳转,执行大小写切换,最后在原始位置重新进入插入模式