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

Pat*_*ick 18 vim keyboard-shortcuts capitalization

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

例如:

I like to drink Coca co[l]
Run Code Online (Sandbox Code Playgroud)

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

<C-c> b ~ ll i
Run Code Online (Sandbox Code Playgroud)

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

Ign*_*ams 16

:nmap <whatever> m`b~``
Run Code Online (Sandbox Code Playgroud)

  • 最好把它做成m`lb~`,这样即使你已经在单词的第一个字符上也能有同样的效果。自己用 (2认同)

Max*_*y-B 11

就个人而言,这正是我不想制作宏的事情.没有必要填写.vimrc几十个这样的一次性解决方案,因为解决方案从标准Vim命令的"工具箱"中自然流动,您可以将它串起来,就像第二天性一样.

我正在输入一个长字:

the gallicizatio|
Run Code Online (Sandbox Code Playgroud)

(|是光标的位置).突然间我意识到我忘记G了"高利化"的大写.所以,bam !,我点击ESC(它被映射到我的键盘上的大写锁定键,所以它只需要轻弹一下),然后b~A,我继续输入,好像什么也没发生.g当Emacs用户开始将右手移向箭头键时,该错误被大写,我已经转移到句子的其余部分.

相比之下,对于我暂时没有使用的宏,我可能需要更多的时间来记住我分配给该宏的键.更好的解决方案是很好地学习重要的"核心"命令,这些命令可以根据简单的规则动态组合,具有数百万种可能的效果.

  • @Patrick:关键是你*不需要记住内置的命令序列(在这种情况下是`b~A`).您记得相对较少的单个内置命令,以及用于以无限方式组合它们的*规则*.通过记住有限数量的语素和组合它们的规则,你可以用同样的方式构建无限的,新颖的英语句子. (2认同)