您如何在VIM代码段中大写该单词?

问题描述

编辑-对于不熟悉React的人,第二个“设置者”将始终以set开始。

我有以下我正在使用的vim代码片段(带有coc代码片段)用于React:

snippet STATE_HOOK "useState hook" b
const [${1:state},set${1:`!v expand('%:t:r')`}] = useState($2)
endsnippet

这可以用于快速创建以下(不正确的)代码

const [color,setcolor] = useState("green");

问题是setcolor需要用驼峰式包装,例如:setColor

如何编写此代码段,以使扩展的输入大写?

解决方法

我正在测试一些不同的东西,您可以使用:

snippet STATE_HOOK "useState hook" b
const [$1,set${1/\w+/\u$0/g}] = useState("$2")
endsnippet 

工作原理: 检查documentation后,我发现您应该使用相同的文本但大写来覆盖文本,因此\w+提取所有文本(我认为“ +”是不必要的)并用{{1}覆盖}(是相同的文字,但大写)

enter image description here

,

foo-barfoo_bar这样的字符串很容易变成fooBar,而fooBar容易变成foo-barfoo_bar,因为这两个部分很容易识别,这为您提供了一个可以使用的结构。

usecolor没有这样的东西。没有分隔符,并且所有内容都是相同的情况,因此您可以从该字符串中获得很多有效的驼峰式名称:usecOloruSeCoLor,等等。

您有三个选择:

  1. 使用驼峰式的文件名,以便您无需执行任何转换,
  2. 使用kebab-case或snake-case来命名您的文件名,以便通过简单的替换即可轻松地对其进行转换,
  3. 提出广泛的规则,并找出如何以令人满意的可重复方式转换随机字符串。

我会选择1。