如何在 VIM 片段中将这个词大写?

How can you capitalize this word in VIM snippet?

编辑 — 这是 not possible 和 coc 片段。使用 Ultisnips 是可能的。

我有以下 vim 片段,我正在使用(与 coc-snippets)用于 React:

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

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

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

问题是 setcolor 需要驼峰化,像这样:setColor

如何编写此代码段才能使扩展输入大写?

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

usecolor 没有这样的东西。没有分隔符,所有内容都是相同的大小写,因此您可以从该字符串中得到很多有效的 camel-cased 名称:usecOloruSeCoLor

您有三个选择:

  1. camel-case 您的文件名,这样您就不必执行任何转换,
  2. kebab-case 或 snake-case 您的文件名,以便通过简单的替换轻松转换它们,
  3. 提出广泛的规则并找出如何以令人满意且可重现的方式转换随机字符串。

我会选择 1。

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

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

工作原理: 检查 documentation 我发现你应该用相同的文本覆盖文本但大写,所以 \w+ 获取所有文本(我认为'+'是不必要的)并用 [=12= 覆盖它](是相同的文本,但大写)