【问题标题】:Snippet for title in restructured text in vs codevs代码中重组文本中的标题片段
【发布时间】:2020-11-17 14:49:55
【问题描述】:

在重组文本中,标题使用相同数量的非字母数字 7 位 ASCII 字符作为标题文本。如果同时使用下划线和上划线,则应相等且至少与标题文本一样长。来自official docs

标题带有下划线(或过度 和下划线)与印刷 非字母数字 7 位 ASCII 特点。推荐选择 是“= - ` : ' " ~ ^ _ * + # < >”。 下划线/上划线必须位于 至少和标题文本一样长。

标题

示例
=========================================================
Main titles are written using equals signs over and under
=========================================================

我想为此创建一个 VS Code sn-p。我能做的也只有这个了,

"Title RST": {
    "prefix": "title",
    "body": [
      "="
      "$1"
      "=\n"
      "$0"
    ],
    "description": "Title for restructured text"
  }

有没有办法知道将要输入的文本的长度,并相应地插入相同数量的上划线和下划线=

yasnippet in emacs,他们这样做:

${1:$(make-string (string-width yas-text) ?\=)}
${1:Title}
${1:$(make-string (string-width yas-text) ?\=)}

$0

任何帮助如何在VS代码中实现这样的sn-p?我在 VS Code hererestructured text 扩展中查看了 sn-ps,但找不到适合我的需求。

【问题讨论】:

标签: visual-studio-code emacs restructuredtext vscode-snippets yasnippet


【解决方案1】:
  "Title RST": {
    "prefix": "title",
    "body": [
      "${1/./=/g}",
      "$1",
      "${1/./=/g}",
      "$0"
    ],
    "description": "Title for restructured text"
  },

转换 ${1/./=/g} 只是将文本上方和下方的文本 $1 中的每个字符替换为 =

sn-p 条目的末尾需要逗号,并且不需要换行符,因为 sn-p 正文中的另一行已经是换行符。

当您键入文本时,点击 Tab 即可完成转换。


您询问是否可以在输入标题文本后立即将上划线/下划线显示为=s。但这对于 vscode sn-ps 是不可能的,需要进行转换,并且直到 Tab 才会发生。

HyperSnips版本就可以了(设置起来比普通的vscode sn-ps要麻烦一点,但不多):

snippet title "Title" A
``rv =  '='.repeat(t[0].length)``
$1
``rv = '='.repeat(t[0].length)``
endsnippet

【讨论】:

  • 很好的解决方法。但是有没有办法让我得到= 上划线和下划线,而不是在三行之后输入标题并按下Tab>?
  • 不,不能使用普通的 vscode sn-ps,转换为 = 只能在选项卡上发生。有一个扩展,HyperSnips,它可以满足你的需求。
  • 我编辑了答案以显示 HyperSnips 版本。它们比 vscode sn-ps 更强大,因为它们可以运行 javascript。
  • 正是我想要的。谢谢。
猜你喜欢
  • 1970-01-01
  • 2017-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-29
  • 2023-02-10
  • 1970-01-01
  • 2019-09-05
相关资源
最近更新 更多