📄 quote.vtc
字号:
func quote(delay, prefix, suffix, cmdflag, fname) [fp] { fp = cmdflag ? popen(fname, "r") : fopen(fname, "r"); if (!fp) return output("Cannot open: " + fname + "\n"); while (1) { if (delay) sleep(delay); if (!input_waiting(fp)) continue; line = fread(fp); if (!line) break; if (line[strlen(line) - 1] == '\n') line[strlen(line) - 1] = '\0'; if (!*prefix) send(line, suffix, "\n"); else if (*prefix == '/') process_cmdline(prefix + "%*" + suffix, line, alloc(1)); else handle_line(prefix + line + suffix); } fclose(fp);}func repeat(delay, count, cmd) { while (count--) { if (delay) sleep(delay); process_cmdline(cmd); }}func unescape(s) { for (; *s; s++) if (*s == '\\') strcpy(s, ++s); }// Black magic. But they work, trust me.quotefmt = regcomp("^(-[0-9]+ +|)((\\\\.|[^\\'!])*)(['!])(\"((\\\\.|[\^\\\"])*)\"(.*)|(.*))$");func Quote(s) [a, suffix] { if (!regexec(quotefmt, s)) return printf("Invalid /quote syntax: %s\n", s); a = regmatch_array(quotefmt); unescape(a[2]); unescape(suffix = a[8] ? : ""); quote(atoi(a[1] + 1), a[2], suffix, *a[4] == '!', a[6] ? : a[9]);}repeatfmt = regcomp("^(-[0-9]+ +|)([0-9]+|[Ff]orever) *(.*)$");func Repeat(s) [a, num] { if (!regexec(repeatfmt, s)) return printf("Invalid /repeat syntax: %s\n", s); a = regmatch_array(repeatfmt); num = stricmp(a[2], "forever") ? atoi(a[2]) : -1; repeat(atoi(a[1] + 1), num, a[3]);}add_cmd("quote", -1, .Quote, "/quote [-<delay>] <prefix>['!]<file/cmd>");add_cmd("repeat", -1, .Repeat, "/repeat [-<delay>] <number> <command>");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -