在许多其他编辑器中,当记录宏时,可以重复运行该宏。然而,在Komodo编辑中没有这样做的选择。在Komodo中,如何重复宏X次,或者将宏重复到文件的末尾?

NotePad++允许您重复一个宏

Komodo编辑在菜单中没有这个选项
发布于 2013-11-07 18:22:39
下面是如何在宏中执行此操作(我称之为“运行当前宏到文件末尾”):
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();
}您也可以让宏调用其他宏,但这要复杂一些。
发布于 2013-11-07 16:58:32
您可以通过使用“代码>重复下一次击键N次”菜单项来重复宏X次数。在文件结束之前无法重复当前的宏,但是已经记录了对此的增强请求(我刚刚讨论了这个请求,希望在下一个主要版本中看到):bug.cgi?id=76022
发布于 2015-03-26 11:24:57
首先记录一个宏。(一次行动)。
编辑宏的源代码(使用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')
}供参考:http://docs.activestate.com/komodo/4.4/macroapi.html
https://stackoverflow.com/questions/19458544
复制相似问题