【问题标题】:How can you capitalize this word in VIM snippet?您如何在 VIM 代码段中将这个词大写?
【发布时间】:2020-12-11 04:35:44
【问题描述】:

编辑 — 这是 not possible 和 coc-sn-ps。 Ultisnips 可以做到这一点。

我有以下 vim sn-p 用于 React(与 coc-sn-ps):

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

如何编写这个 sn-p 以使扩展的输入大写?

【问题讨论】:

  • 现在可以使用常规的 vscode sn-ps。增加了对 \u 等大小写修饰符的支持。

标签: javascript vim code-snippets vscode-snippets ultisnips


【解决方案1】:

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

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

您有三个选择:

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

我会选择 1 号。

【讨论】:

  • 感谢您的回复,但需要注意的是,我只想将“set”后面的单词大写。 “set”字符串将永远是“set”,而不是其他任何东西。这就是我认为这绝对是可能的原因......意思是,如果模式总是设置{variable},则应该可以将变量字符串大写。
【解决方案2】:

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

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

它是如何工作的: 检查documentation我发现你应该用相同的文本覆盖文本但大写,所以\w+获取所有文本(我认为'+'是不必要的)并用\u$0覆盖它(是相同的文本但大写)

【讨论】:

  • 这很棒。我自己遇到问题的原因(这个答案为我指明了正确的方向)是因为我一直在尝试使用不支持大写的 coc-sn-ps。
  • 对我来说不起作用,使用 coc-sn-ps
  • 嘿,是的,因为 coc-sn-ps 不支持 \u 修饰符(大写修饰符)。我建议只安装 Utilsnips,最终走这条路并且它可以工作。见这里:github.com/neoclide/coc-snippets/issues/62
猜你喜欢
  • 2021-11-30
  • 1970-01-01
  • 2011-03-08
  • 2021-04-28
  • 1970-01-01
  • 2010-09-23
  • 1970-01-01
  • 2011-02-10
  • 1970-01-01
相关资源
最近更新 更多