如何将Vim中单词的第一个字母大写?

如何将Vim中单词的第一个字母大写?,vim,keyboard-shortcuts,capitalization,Vim,Keyboard Shortcuts,Capitalization,很长一段时间以来,我知道我可以在Vim中使用~来切换角色的大小写。但是有没有一种方法可以将一个单词的首字母大写并返回到前面的位置 例如: I like to drink Coca co[l] 如果我的光标位于“l”,并且我意识到我也需要将“c”大写,那么目前,我需要执行以下操作: <C-c> b ~ ll i b~ll i 是否有一种方法可以映射单个键,使光标下单词的第一个字母大写,并使光标保持在原始位置?:nmap m`b~`` :nmap <whatever>

很长一段时间以来,我知道我可以在Vim中使用~来切换角色的大小写。但是有没有一种方法可以将一个单词的首字母大写并返回到前面的位置

例如:

I like to drink Coca co[l]
如果我的光标位于“l”,并且我意识到我也需要将“c”大写,那么目前,我需要执行以下操作:

<C-c> b ~ ll i
b~ll i
是否有一种方法可以映射单个键,使光标下单词的第一个字母大写,并使光标保持在原始位置?

:nmap m`b~``
:nmap <whatever> m`b~``
您也可以使用宏

q<register> <C-c> b ~ ll i q
qb~ll i q

然后每次你需要使用它时,都要执行
@

就我个人而言,这正是我不愿意为之创建宏的事情。没有必要用几十个这样的一次性解决方案来填充
.vimrc
,因为解决方案是如此自然地从标准Vim命令的“工具箱”中流出,以至于您可以像第二天性一样将其串在一起

我正在输入一个长单词:

the gallicizatio|
|
是光标的位置)。突然我意识到我忘了大写“加利化”的
G
。那么,砰!,我按了一下
ESC
(它映射到我键盘上的大写锁定键,所以只需轻轻弹一下小指),然后按了一下
b~a
,然后我继续打字,就好像什么都没发生一样。这个错误的
g
在Emacs用户开始将右手移向箭头键时被大写,我已经转到了句子的其余部分


相比之下,对于一个我有一段时间没有使用过的宏,我可能需要更多的时间来记住我分配给该宏的键。更好的解决方案是非常好地学习重要的“核心”命令,这些命令可以根据简单的规则动态组合,产生数百万种可能的效果。

我发现自己经常这样做,并使用EX命令行来获取符合某个条件的多个记录。在本例中,我使用的反向引用如下所示:

:%s/\(\w\)\(\w*\)/\U\1\L\2/g

这个问题在特定语境下的所有单词中都得到了解决

编辑:也看看这里,刚刚发现有一个链接有类似的答案:


哇,谢谢您的快速回复。这正是我要找的!最好将其设为m`lb~`,这样即使您已经在单词的第一个字符上,也可以产生相同的效果。我自己使用它谢谢,但它在视觉模式下不起作用(使用
vmap
)。这种方法的问题是每个单词的“ll”长度都不确定。谢谢你的回答!不过,对我来说,记住一个内置命令序列与记住我创建的映射或宏没有什么区别。尽管在一台新机器上,没有首选映射,人们必须恢复到他在内置命令上记住的内容:)@Patrick:关键是你不需要记住内置命令序列(
b~a
)。您还记得相对较少的单个内置命令,以及以无限方式组合它们的规则。同样,你可以通过记住有限数量的语素和组合它们的规则来构造无限新颖的英语句子。Emacs用户可以使用
M-b
M-c
来获得相同的结果,而不必移动到箭头键查看。这也是一个很好的指南。谢谢分享。这就是vim的使用方法!