首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Komodo编辑中重复宏?

如何在Komodo编辑中重复宏?
EN

Stack Overflow用户
提问于 2013-10-18 20:31:17
回答 3查看 591关注 0票数 1

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

NotePad++允许您重复一个宏

Komodo编辑在菜单中没有这个选项

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-07 18:22:39

下面是如何在宏中执行此操作(我称之为“运行当前宏到文件末尾”):

代码语言:javascript
复制
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();
}

您也可以让宏调用其他宏,但这要复杂一些。

票数 1
EN

Stack Overflow用户

发布于 2013-11-07 16:58:32

您可以通过使用“代码>重复下一次击键N次”菜单项来重复宏X次数。在文件结束之前无法重复当前的宏,但是已经记录了对此的增强请求(我刚刚讨论了这个请求,希望在下一个主要版本中看到):bug.cgi?id=76022

票数 2
EN

Stack Overflow用户

发布于 2015-03-26 11:24:57

首先记录一个宏。(一次行动)。

编辑宏的源代码(使用JavaScript或Python)示例:文本文件

abc

abc

abc

abc

abc

abc

abc

abc

abc

记录宏代码:

代码语言:javascript
复制
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所示,编辑代码如下所示:

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19458544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档