ctrl+shift+p filters: :st2 :st3 :win :osx :linux
浏览

屏幕录制导演

这是我在 <http://colinta.com> 制作屏幕录制的方法。

标签 自动化

详细信息

  • 2.3.0
  • github.com
  • github.com
  • 9个月前
  • 18分钟前
  • 12年前

安装次数

  • 总数 572
  • Win 311
  • Mac 142
  • Linux 119
2021年8月6日 2021年8月5日 2021年8月4日 2021年8月3日 2021年8月2日 2021年8月1日 2021年7月31日 2021年7月30日 2021年7月29日 2021年7月28日 2021年7月27日 2021年7月26日 2021年7月25日 2021年7月24日 2021年7月23日 2021年7月22日 2021年7月21日 2021年7月20日 2021年7月19日 2021年7月18日 2021年7月17日 2021年7月16日 2021年7月15日 2021年7月14日 2021年7月13日 2021年7月12日 2021年7月11日 2021年7月10日 2021年7月9日 2021年7月8日 2021年7月7日 2021年7月6日 2021年7月5日 2021年7月4日 2021年7月3日 2021年7月2日 2021年7月1日 2021年6月30日 2021年6月29日 2021年6月28日 2021年6月27日 2021年6月26日 2021年6月25日 2021年6月24日 2021年6月23日
Windows 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mac 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Linux 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

说明文件

源代码
raw.githubusercontent.com

屏幕录制导演

一个可用来指导屏幕录制的ApplicationCommand。也允许交互式操作,所以你可以自动化一些任务,手动完成其他任务。模拟键盘输入,如果你要求更精细,则可以模拟所有ST2命令。

安装

  1. 使用软件包控制安装“屏幕录制导演”

或者

  1. 打开Sublime Text的包文件夹

    • macOS: ~/Library/Application Support/Sublime Text 3/Packages/
    • Windows: %APPDATA%/Sublime Text 3/Packages/
    • Linux: ~/.Sublime Text 3/Packages/ 或 ~/.config/sublime-text-3/Packages
  2. 克隆此仓库

  3. 安装命令的快捷键映射(参见Example.sublime-keymap以获取我首选的快捷键)

命令

  • screencast_bind_source:将当前窗口设置为“导演”
  • screencast_bind_target:将当前窗口设置为“屏幕录制”
  • screencast_director_run:运行当前命令并将“命令光标”移动到下一个命令
  • screencast_director_previous:将“命令光标”向后移动
  • screencast_director_next:将“命令光标”向前移动

导演命令和示例

write(*what_to_write):这将使用略微随机的延迟写入一些文本,以模仿人类打字。接受多个参数,并在每个参数之间插入换行符。

- write: ['line one', 'line two', 'line three']

delay:暂停,默认为.1秒。用于write以模拟打字,但也适用于导演脚本。

- delay: 1500  # pause for 1.5 secs

write_inside:SublimeText打印匹配的引号,我想在屏幕录制中模拟这一点。此命令使操作变得简单。

- write_inside: "'string in single quotes'"
- write_inside: ["'", "again, using array", "'"]
- write_inside:
    - \'
    - write: you can nest commands, too!
    - \'

go:将光标向前或向后移动N个字符。

- go: -10  # go back ten
- write: HI!
- go: 10  # return to previous position

select_all:显而易见

- select_all

delete:删除所选文本

- delete

clearselect_alldeleteclear_marks

- clear

set_mark:设置标记,这样在执行一些疯狂命令之后可以返回某个位置。 goto_mark:将光标返回到之前保存的位置。

“名称”是可选的,默认为__tmp__

- set_mark  # same as set_mark: __tmp__
- set_mark: my_mark_name
- goto_mark  # same as goto_mark: __tmp__
- goto_mark: my_mark_name

select_from_mark:从标记选择到光标位置。使用与set_markgoto_mark相同的名称(默认:tmp)。

- set_mark
- write: "this will be deleted in one second"
- delay: 1000
- select_from_mark
- delete

run_command:运行任何SublimeText命令!您几乎可以用这个命令做任何事情,所以如果您想创建一个新命令,请考虑使用这个命令。

- write: "I will fix this mitsake."
- delay: 500
- go: -5
- delay: 500
- run_command: [transpose_character]

编写导演命令

我非常欢迎pull requests,增加更多的导演功能!如果您只是查看源代码,这些功能一开始可能会有一点点难以理解。所以,这就开始了。

ScreencastDirector类包含所有可以在您的director.yaml文件中使用的命令。当插件加载时(如果您在源代码中跟踪,则是the_director),会创建一个ScreencastDirector类的实例。

当您运行screencast_director_run命令时,您的YAML源文件的条目将被“执行”,这实际上是将工作委托给ScreencastDirector._run。所有条目都会立即“执行”,也就是说,在这个时候构建命令队列。

让我更清楚地说明:ScreencastDirector方法根据YAML文件中条目的内容向命令队列添加一个或多个函数。

当您将命令添加到队列时,您可以传递delay参数来控制时间。以下是所有命令中最简单的delay命令。

def delay(self, delay=100):
    def _delay(cursor, e):
        pass
    self._append_command(_delay, delay)

我们甚至不需要在命令中“睡眠”——这是通过将delay参数传递给_append_command来解决的。我们确实需要接受cursore参数。如果您更改了光标的位臵,您必须返回那个新位臵(或选择)。参数e是一个sublime.Edit对象。由于大多数命令都需要做出某种更改,它提供了便利。

让我们看看write的简化版本。它每隔一个字母输入,并随机延迟每个字母以模拟实际的输入。我们需要调用target_view.replace来插入文本(如果之前的命令做出选择,这个命令将覆盖它),然后返回我们的新光标位置。

def write(self, what_to_write):
    def _write_letter(letter):
        def _write(cursor, e):
            self.target_view.replace(e, cursor, letter)
            return cursor.a + len(letter)
        return _write

    for letter in what_to_write:
        delay = random.randrange(50, 200)
        self._append_command(_write_letter(letter), delay=delay)

实际实现做了更多的事情——它支持多个参数,如果参数“看起来”像一个命令,它会执行该条目(也称为“将那些命令添加到队列”——记住,一个条目会添加命令到队列)。

对于您的命令,请记住:

  • 对于每个编辑,创建一个新的函数并使用_append_command将其添加到队列中。通常,您会从YAML源接受一个delay参数。
  • 实际命令接受两个参数:cursor(一个sublime.Region对象),以及edit(一个sublime.Edit对象)。除此之外,您应使用从源文件传入的参数。

如果您遇到困难,请创建一个问题,我将查看。

示例

这些都是无声电影,这只是我的个人喜好。任何屏幕录制应用都可以录制音频,您实际上可以坐下来阅读剧本,同时ScreencastDirector完成所有鼠标输入——零错误输入!

https://media.colinta.com/screencasts/bracketeer.mp4 https://media.colinta.com/screencasts/move_text.mp4 https://media.colinta.com/screencasts/quickfind.mp4 https://media.colinta.com/screencasts/transpose_character.mp4

连ScreencastDirector本身也不是例外!

https://media.colinta.com/screencasts/screencast_director.mp4

不幸的是,我并没有保存大多数这些内容的副本……我通常只使用一个草稿文件。我 建议 您模仿我所说的,而不是我做的:保存您的副本!当您意识到出错并需要重新录制视频时,这非常有用。以下是ScreencastDirector的director.yaml文件:https://github.com/colinta/SublimeScreencastDirector/blob/master/director.yaml