【问题标题】:How do I capitalize the first letter of a word in Vim?如何在 Vim 中将单词的第一个字母大写?
【发布时间】:2011-03-08 18:39:18
【问题描述】:

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

例如:

I like to drink Coca co[l]

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

<C-c> b ~ ll i

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

【问题讨论】:

  • 看看here
  • 这也是一个很好的指南。感谢分享。
  • THIS是vim应该怎么用的!

标签: vim keyboard-shortcuts capitalization


【解决方案1】:

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

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

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

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

Capitalize first letter of each word in a selection using vim

【讨论】:

    【解决方案2】:

    就个人而言,这正是我更喜欢为其制作宏的那种东西。无需在您的.vimrc 中填写数十个这样的一次性解决方案,因为解决方案非常自然地来自标准 Vim 命令的“工具箱”,您可以像第二天性一样将它串在一起。

    我正在输入一个长字:

    the gallicizatio|
    

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

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

    【讨论】:

    • 感谢您的回答!不过,对我来说,记住内置命令序列与记住我创建的映射或宏没有区别。尽管在没有首选映射的新机器上,必须恢复到他在内置命令中记住的任何内容:)
    • @Patrick:关键是您不需要需要记住内置命令序列(在这种情况下为b~A)。您还记得相对少量的单独的内置命令,以及以无限方式组合它们的规则。就像你可以通过记住有限数量的语素和组合它们的规则来构建无限的、新颖的英语句子一样。
    • 一个 Emacs 用户会做 M-b M-c 以获得相同的结果而不是移动到箭头键
    【解决方案3】:

    你也可以使用宏

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

    然后每次需要使用时都做@&lt;register&gt;

    【讨论】:

    • 这种方法的问题是“ll”的长度对于每个单词都是不确定的。
    【解决方案4】:
    :nmap <whatever> m`b~``
    

    【讨论】:

    • 哇,感谢您的快速回复。这正是我要找的!
    • 最好设为m`lb~`,这样即使你已经在单词的第一个字符上也能有同样的效果。自己用
    • 谢谢,但它在可视模式下不起作用(使用vmap)。
    猜你喜欢
    • 2011-07-20
    • 1970-01-01
    • 2011-07-29
    • 2017-06-20
    • 2020-10-06
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    相关资源
    最近更新 更多