如何将Vim中单词的首字母大写?

时间:2010-06-27 05:43:19

标签: vim keyboard-shortcuts capitalization

很长一段时间我都知道我可以在Vim中使用来切换一个字符的大小写。但有没有办法映射一个键来大写一个单词并回到之前的位置?

例如:

I like to drink Coca co[l]

如果我的光标位于“l”并且我意识到我需要使“c”大写,目前,我需要这样做:

<C-c> b ~ ll i

有没有办法映射单个键,使光标下的单词的第一个字母大写,并将光标保持在原始位置?

4 个答案:

答案 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