[工具][VSCode 扩展] AegiKit——方便 Aegisub 使用的工具箱

这次来介绍的是我一周之前完工的 VSCode 扩展:AegiKit 的使用介绍。这里准备简单介绍一下这个扩展的功能和用法。

功能列表

功能列表其实 Readme 里也有,但是鉴于不是所有人都会看这个,加之 Readme 里也说得比较简单,所以我在这里也列一下好了。

  • ASS 基础高亮
  • 卡拉 OK 模板行(template)的高亮
  • 卡拉 OK 代码行(code)的高亮
  • Lua 代码格式化
  • Lua 代码压缩(minify

下面就从几个大类来简单说明一下好了。

ASS 基础高亮

这个其实没什么好说的,为 VSCode 增加了新的 tmLanguage 支持也是耗时最长的。在我目前的颜色主题下,显示效果是这样的:

字幕高亮预览

卡拉 OK 模板行高亮

AegiKit 为这种高亮定义了一种全新的文件后缀:karatmpl,以方便实现更精准的功能对应。

样式

首先先来看一下效果吧:

模板高亮预览

默认情况下,karatmpl 文件会开启自动换行,以方便阅读。对于被感叹号(!)包裹的内联 Lua 代码,也会根据 Lua 的高亮进行代码高亮的显示。

内联变量补全($

对于内联变量,只要你输入 $ 字符,就会显示 kara-templater 可用的所有内联变量。其中部分变量有中文解释,便于书写代码。

内联补全

内联变量在代码中也有自己的高亮,以表明其身份。

颜色预览

对于诸如 1c 等表示颜色的标签,AegiKit 基于 VSCode 实现了颜色预览与编辑的功能。如下图所示:

颜色预览

这张图中,我们可以通过这个小方格来实时查看当前对应的颜色。此外,还可以通过 VSCode 的颜色拾取器来主动选择颜色:

颜色拾取

不过目前,颜色选择的功能还没有和透明度关联起来,因此选择透明度是没有用的。

卡拉 OK 代码行高亮

Lua 代码在卡拉 OK 自动化中起到了非常关键的作用。可惜的是,Aegisub 并没有对 Lua,即卡拉 OK 代码行的高亮支持。并且在 Aegisub 中书写 Lua 也不是那么流畅。于是我把代码行高亮的部分也加到了 VSCode 里。

虽然目前代码行并没有太多的补全,但之后是有可能会有的。毕竟代码行也许要很多补全的内容,包括 _Gmaxjj 之类的。

代码格式化

AegiKit 自带了 Lua 的代码格式整理器,可以将 Aegisub 中单行的 Lua 代码变成人能正常阅读的多行代码。

代码格式化的方式和其他语言没有区别,按照正常的 VSCode 操作方式进行就可以了。

代码压缩

和上面的步骤相反,当我们想要将代码复制到 ASS 中时,我们需要压缩代码。这时候就可以使用代码压缩功能了。只需要使用这个命令就行了:

它会将目前编辑器中的代码压缩。

我还在寻找其他不修改当前源码,但可以获取压缩后源码的方式,所以可能还会有变动(

评论

  1. 光谷部落
    2月前
    2022-4-05 0:11:49

    请问,关于AEGISUB的样式设计中,如何用代码设计自动换行的脚本(比如,一行的总像素不能超过1520,否则,自动换行,并设置行距为多少),并导入样式管理器中,供后续有长文案的时候,能自动换行使用

    • 某昨P
      博主
      光谷部落
      2月前
      2022-4-05 2:06:24

      以我个人的看法的话,你可以这么假定:对于某一特定字体,每个字符的宽度是相同的。
      比如随便取一个汉字,它的宽度可以通过 aegisub 自带的字体宽度计算函数计算得到,屏幕(视频)的宽度也可以得知。这里除一下取整就可以得到每行应有的字数了。
      样式管理器是管理 ASS 自带样式的功能,对于诸如行距之类的属性可以调节一下,但其他的就做不到了。所以可以模仿卡拉ok脚本的效果,把原有行做注释处理,生成新的行用于实际渲染。
      当然了,从个人角度而言,换行的显示效果是不大好的。所以我会选择实现一个简单的脚本,检测是否存在换行。如果存在换行则手动修正(比如通过概略计时拆分)。

发送评论 编辑评论


				
上一篇
下一篇