我知道在 Vim 中,使用 ~ 可以切换字符的大小写已经有很长一段时间了。但是是否有一种方法可以将一个键映射为大写一个单词并回到先前的位置呢?
例如:
I like to drink Coca co[l]
如果我的光标在“l”处,我意识到我还需要将“c”大写,那么目前我需要执行以下操作:
<C-c> b ~ ll i
有没有一种方法可以将单个键映射为使光标下单词的第一个字母大写,并保持光标在原始位置?我知道在 Vim 中,使用 ~ 可以切换字符的大小写已经有很长一段时间了。但是是否有一种方法可以将一个键映射为大写一个单词并回到先前的位置呢?
例如:
I like to drink Coca co[l]
如果我的光标在“l”处,我意识到我还需要将“c”大写,那么目前我需要执行以下操作:
<C-c> b ~ ll i
有没有一种方法可以将单个键映射为使光标下单词的第一个字母大写,并保持光标在原始位置?:nmap <whatever> m`b~``
lb~
,这样即使您已经在单词的第一个字符上也能产生相同的效果。我自己使用这个功能。 - Hennadii Madanvmap
)不起作用。 - user4104817个人而言,这正是我不想制作宏的事情类型。没有必要让您的.vimrc
充满数十个这样的一次性解决方案,因为解决方案自然地从标准Vim命令“工具箱”中流动,您只需像第二天性一样将其串在一起即可。
我正在输入一个长单词:
the gallicizatio|
(其中|
是光标的位置) 突然我意识到我忘记了将 "Gallicization" 的 G
大写。于是我按下 ESC
键(这个键位于我的键盘上的大写锁定键上,所以只需轻轻一点),接着按下 b~A
,然后继续打字,就好像什么也没发生一样。那个错误的小写字母 g
被大写的时间足以让 Emacs 用户开始动他的右手去按箭头键,而我已经继续输入接下来的句子了。
相比之下,使用我已经很久没用过的宏可能需要更多的时间才能够记住我为该宏分配了哪些按键。更好的解决方案是学习重要的“核心”命令,这些命令可以根据简单的规则组合在一起,在飞行中产生数百万种可能的效果。
b~A
)。你只需要记住相对较少的个别内置命令,以及无限组合它们的规则。就像你可以通过记住有限数量的语素和组合它们的规则来构造无限、新颖的英语句子一样。 - Maxy-BM-b
M-c
来获得相同的结果,而不是移动箭头键。 - Carlo Espino我经常这样做,使用EX命令行遍历匹配某个条件的多条记录。在这种情况下,我使用一个反向引用,看起来像这样:
:%s/\(\w\)\(\w*\)/\U\1\L\2/g
然后,问题就解决了,所有在特定上下文中的单词都会被处理。
编辑:还有这里,请看这个链接,它有类似的答案:
你也可以使用宏
q<register> <C-c> b ~ ll i q
@<register>
。您可以使用以下步骤将第一个字母从小写更改为大写或反之:
使用:<,
> 或者 ctrl+v
然后按 j
或者 k
高亮选中您要更改的所有行。
使用 l
或者 h
调整高亮选中每行的第一个字母。
从大写转换为小写使用 gu,从小写转换为大写使用 gU。这将适用于您所选中的所有字母。 注意:您可以使用: