很长一段时间我都知道我可以在Vim中使用〜来切换一个字符的大小写。但有没有办法映射一个键来大写一个单词并回到之前的位置?
例如:
I like to drink Coca co[l]
如果我的光标位于“l”并且我意识到我需要使“c”大写,目前,我需要这样做:
<C-c> b ~ ll i
有没有办法映射单个键,使光标下的单词的第一个字母大写,并将光标保持在原始位置?
答案 0 :(得分:15)
:nmap <whatever> m`b~``
答案 1 :(得分:11)
就个人而言,这正是我喜欢而不是制作宏的方式。没有必要用几十个这样的一次性解决方案来填充你的.vimrc
,因为解决方案从标准Vim命令的“工具箱”中自然流动,你可以将它串起来就像第二天性。
我正在输入一个长词:
the gallicizatio|
(|
是光标的位置)。突然间我意识到我忘了把“Gallicization”的G
大写。所以,bam !,我点击了ESC
(它被映射到我键盘上的大写锁定键,所以只需轻轻一点小拇指),然后是b~A
,我继续键入,就好像没啥事儿。错误的g
在Emacs用户开始向箭头键移动右手的时候大写了,我已经转到了句子的其余部分。
相比之下,对于我暂时没有使用的宏,我可能需要更多的时间来记住我分配给该宏的键。更好的解决方案是很好地学习重要的“核心”命令,这些命令可以根据简单的规则动态组合,具有数百万种可能的效果。
答案 2 :(得分:2)
你也可以使用宏
q<register> <C-c> b ~ ll i q
然后每次需要使用它时都会@<register>
。
答案 3 :(得分:2)
我发现自己经常这样做,并使用EX命令行来完成符合条件的多条记录。在这种情况下,我使用如下所示的反向引用:
:%s/\(\w\)\(\w*\)/\U\1\L\2/g
和BOOM,问题解决了某个特定环境中的所有单词。
编辑:也看这里,只是意识到这个链接有类似的答案:
Capitalize first letter of each word in a selection using vim