2012-04-27 151 views
6

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

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

回答

0

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

2

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

就我个人而言,我将按键“Alt + x”映射到“退出”记事本++,这更容易抓图,然后通常工作的“Alt + F4”。

/EDIT

其实我挺喜欢你的想法,所以我赶紧尝试过自己。 花了20分钟才弄明白。下面是一个完整的解决方案:

  1. 安装插件的Python脚本(以上链接)
  2. 转到插件>的Python>配置和改变初始化模式从LAZYATSARTUP
  3. 打开“... \ Notepad ++ \ plugins \ Pyth onScript \脚本\ startup.py“,地点在之后它的结束代码:Seems like the code tags don't work below a numbered list, so click me to see the code
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]) 
+0

它有一个错误 - 当没有保存的文档打开 - 只打开(一个&&空&&没有改变)文档 - 它不工作 – msangel 2013-05-20 00:52:44

3

这完全是基于UFO的代码。只有当你关闭最后一个文档时它才起作用,不管它是否新建,它都不会冻结npp。

为了简洁起见,这里如下再次步骤:

  1. 安装Python脚本插件
  2. 插件>的Python脚本>从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]) 
    
2

记事本++最新的更新包括关闭最后一个标签后关闭应用程序的功能。

要更新Notepad ++,请进入?>更新Notepad ++并遵循安装向导。

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

+0

从Notepad ++ v7.5.3起,使用startup.py和PythonScript有一些问题用作Git编辑器。如果一个文件通过PythonScript关闭,那么它似乎挂起了Git进程。记事本++实例在外观上看起来是封闭的,但根据Process Explorer保持不变。 使用@ Sebastian的建议为我工作。 – blitzvergnugen 2018-01-02 19:02:34