在许多其他编辑器中,当您录制宏时,您可以重复运行该宏。但是,在Komodo Edit中,没有选项可以这样做。在Komodo Edit中,如何重复宏X次,或者将宏重复到文件末尾?
NotePad ++允许您重复宏
Komodo Edit菜单中没有该选项
答案 0 :(得分:2)
您可以使用“代码>重复下一击键N次”菜单项重复宏X次。在文件结束之前没有选项可以重复当前的宏,但是已经为此记录了一个增强请求(我刚刚碰到并希望在下一个主要版本中看到):http://bugs.activestate.com/show_bug.cgi?id=76022
答案 1 :(得分:1)
以下是如何在宏中执行此操作(我称之为“将当前宏运行到文件末尾”):
var currentMacro = ko.macros.recorder.currentMacro;
if (!currentMacro || !currentMacro.length) {
alert("There is no current macro to execute");
return;
}
var view = ko.views.manager.currentView;
var scimoz = view.scimoz;
var startingLine = scimoz.lineFromPosition(scimoz.currentPos);
var i = 1;
scimoz.beginUndoAction();
try {
while (true) {
ko.macros.recorder.executeLastMacro();
let newPos = scimoz.currentPos;
let newLine = scimoz.lineFromPosition(newPos);
if (newLine <= startingLine) {
newLine = startingLine + 1;
}
startingLine = newLine;
if (startingLine >= scimoz.lineCount) {
break;
}
scimoz.gotoPos(scimoz.positionFromLine(startingLine));
}
} finally {
scimoz.endUndoAction();
}
您也可以让宏调用其他宏,但这有点复杂。
答案 2 :(得分:0)
首先记录一个宏。 (单一动作)。
编辑宏的源代码(使用JavaScript或Python)
示例:文本文件
ABC
ABC
ABC
ABC
ABC
ABC
ABC
ABC
abc
录制的宏代码:
komodo.assertMacroVersion(3);
if (komodo.view) {
komodo.view.setFocus();
}
ko.commands.doCommand('cmd_home')
ko.commands.doCommand('cmd_right')
ko.commands.doCommand('cmd_right')
komodo.view.selection = ' - ';
ko.commands.doCommand('cmd_lineNext')
ko.commands.doCommand('cmd_home')
现在我们可以循环(在这种情况下为9次)或运行到文件末尾,如Eric所示,编辑代码,如下所示:
komodo.assertMacroVersion(3);
if (komodo.view) {
komodo.view.setFocus();
}
for (i = 0; i < 9; i++) {
ko.commands.doCommand('cmd_home')
ko.commands.doCommand('cmd_right')
ko.commands.doCommand('cmd_right')
komodo.view.selection = ' - ';
ko.commands.doCommand('cmd_lineNext')
ko.commands.doCommand('cmd_home')
}