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

rn0zuynd  于 2022-11-11  发布在  其他
关注(0)|答案(5)|浏览(173)

很长一段时间以来,我知道我可以在Vim中使用~来切换字符的大小写。但是有没有办法Map一个键来大写一个单词,然后回到以前的位置呢?
例如:

I like to drink Coca co[l]

如果我的光标在“l”上,我意识到我需要将“c”也变为大写,那么现在,我需要执行以下操作:

<C-c> b ~ ll i

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

bbmckpt7

bbmckpt71#

:nmap <whatever> m`b~``
2sbarzqh

2sbarzqh2#

就我个人而言,这正是我不喜欢**为之制作宏的类型。没有必要用几十个这样的一次性解决方案来填充你的.vimrc,因为解决方案是如此自然地从标准Vim命令的“工具箱”中流出,以至于你可以像第二天性一样把它串起来。
我打了一个长长的字:

the gallicizatio|

(the |是光标的位置)。突然我意识到我忘了把“Gallicization”的G大写。于是,砰!我点击了ESC(它Map到我键盘上的caps lock键,所以只需要轻弹小手指),后面是b~A,然后我继续输入,就好像什么都没发生一样。错误的g在Emacs用户开始将右手移向箭头键的时间内就被大写了,我已经进入了句子的其余部分。
相比之下,如果我有一段时间没有使用宏了,我可能会花更多的时间来记住我给宏分配了什么键。更好的解决方案是非常好地学习重要的“核心”命令,这些命令可以根据简单的规则快速组合,具有数百万种可能的效果。

nc1teljy

nc1teljy3#

我发现自己经常这样做,并且使用EX命令行来遍历多个与条件匹配的记录。在本例中,我使用了如下所示的反向引用:
:%s/\(\w\)\(\w*\)/\U\1\L\2/g
而BOOM,问题在特定语境中的所有单词中解决。
编辑:也看看这里,刚刚意识到有这个链接,其中有类似的答案:
Capitalize first letter of each word in a selection using vim

ebdffaop

ebdffaop4#

您还可以使用宏

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

然后在每次需要使用它时执行@<register>

qvtsj1bj

qvtsj1bj5#

更改多行的大小写

您可以使用以下命令将第一个字母从小写更改为大写,反之亦然

步骤-1-

使用以下命令突出显示要更改的所有行:<,〉或使用ctrl+v,然后使用jk

步骤-2-

使用lh将突出显示调整为每行的首字母

步骤-3-

从大写字母到小写字母使用gu从小写字母到大写字母使用gU这将适用于您要突出显示的所有字母注意:您可以使用

  • gu(上-〉下)
  • gU(下部-〉上部)和
  • g~在大小写之间切换(大写-〉小写或小写-〉大写)

相关问题