6

我现在使用记事本++ 几个月了,并且完成了所有设置,但是当我关闭最后一个选项卡时,找不到让 npp 关闭的方法。它总是会启动一个新的空文档。

任何想法如何让 npp 在关闭最后一个文档时关闭?

4

4 回答 4

4

Notepad++ 的最新更新包括关闭最后一个选项卡后关闭应用程序的功能。

要更新 Notepad++,请转到 ?>Update Notepad++ 并按照安装向导进行操作。

更新完成后,您将在“设置”>“首选项”菜单中选择“关闭最后一个选项卡时退出”(在选项卡栏输入组下)。

于 2017-03-03T16:32:03.843 回答
3

这完全基于 ufo 的代码。只有当您关闭最后一个文档时它才有效,无论它是否是新的,并且它不会冻结 npp。

为简洁起见,这里再次执行以下步骤:

  1. 安装 Python 脚本插件
  2. Plugins > Python Script > Configuration上将初始化模式从 LAZY 更改为 ATSARTUP
  3. 打开...\Notepad++\plugins\PythonScript\scripts\startup.py并将以下代码放在它的末尾。
  4. 保存并重新启动 Npp 以加载脚本。

    from threading import Timer
    
    def shutdownNppOnLastFileClosed(args):
    
        def closeNpp():
            notepad.menuCommand(MENUCOMMAND.FILE_EXIT)
    
        files = notepad.getFiles()
        if len(files) == 2:
            t = Timer(0.1, closeNpp)
            t.start()
    
    notepad.callback(shutdownNppOnLastFileClosed, [NOTIFICATION.FILEBEFORECLOSE])
    
于 2014-09-15T01:16:56.553 回答
2

如果你熟悉 Python,你可以试试 N++ 的Python Script插件。您将为文档关闭事件设置回调脚本。在它内部对所有打开的文档进行一些迭代,当只剩下 1 个没有文本时,则终止 N++。

我个人将“Alt + x”键映射到“Exit”Notepad++,这比通常工作的“Alt + F4”更容易掌握。

/编辑

我其实很喜欢你的想法,所以我自己很快就尝试了。花了大约 20 分钟才弄清楚。这是一个完整的解决方案:

  1. 安装插件Python 脚本(上面的链接)
  2. 转到Plugins > Python > Configuration并将初始化模式从LAZY更改为ATSARTUP
  3. 打开“ ...\Notepad++\plugins\PythonScript\scripts\startup.py ”并在其末尾放置以下代码:似乎代码标签在编号列表下方不起作用,所以点击我查看代码
def shutdownNppOnLastFileClosed(args):
    import os
    files = notepad.getFiles()
    # there are always at least 2 'buffers' open in N++
    if len(files) == 2:
        currentBufferID = notepad.getCurrentBufferID()
        for (filename, bufferID, index, view) in files:
            if os.path.exists(filename):
                break
            notepad.activateBufferID(bufferID) 
            if editor.getLength() > 0:
                break
            # TODO: just to be on the safe side - if we
            # reached here, we actually should also check
            # if the 2 left empty buffers are not unsaved,
            # but I couldn't find a way to do that.
        else:
            # following 'menuCommand' looks cleaner than
            # the 'sys.exit' but it currently deadlocks N++:
            #notepad.menuCommand(MENUCOMMAND.FILE_EXIT)
            sys.exit(0)
        notepad.activateBufferID(currentBufferID)
notepad.callback(shutdownNppOnLastFileClosed, [NOTIFICATION.FILECLOSED])
于 2012-05-22T09:58:58.867 回答
0

notepad++ 是一个 MDI 表单应用程序,就像 MS OFFICE 一样,关闭子 MDI 表单不会影响主应用程序,所以,我认为除非你重建 nodepad++ 的源代码,否则我认为这是不知道的。

于 2012-04-27T00:53:18.943 回答