21

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

例如:

I like to drink Coca co[l]

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

<C-c> b ~ ll i

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

4

4 回答 4

16
:nmap <whatever> m`b~``
于 2010-06-27T05:52:05.163 回答
11

就个人而言,这正是我希望为其制作宏的那种事情。没有必要.vimrc用几十个这样的一次性解决方案来填充你,因为这些解决方案非常自然地来自标准 Vim 命令的“工具箱”,你可以像第二天性一样将它串在一起。

我打了一个长字:

the gallicizatio|

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

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

于 2012-08-10T21:23:51.750 回答
3

我发现自己经常这样做,并使用 EX 命令行来查看多个匹配条件的记录。在这种情况下,我使用如下所示的反向引用:

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

和 BOOM,解决了特定上下文中所有单词的问题。

编辑:也看这里,刚刚意识到这个链接有类似的答案:

使用vim将选择中每个单词的首字母大写

于 2013-08-02T13:55:22.383 回答
2

你也可以使用宏

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

然后@<register>每次你需要使用它时做。

于 2010-06-27T05:54:21.323 回答