Notepad++ 当您保存文件时,可以自动在该文件上运行程序吗?

Notepad++ 当您保存文件时,可以自动在该文件上运行程序吗?

我想在保存文件(CTRL-S)时对源代码运行 linter。保存文件时是否可以对文件运行外部命令?

答案1

据我所知,严格来说,没有直接选项可以在保存后直接运行程序。也就是说,按以下步骤按Ctrl+键可能会得到(功能上)类似的行为...S

使用 Ctrl + S 保存并执行

安装 NppExec

通常情况下,常规 Notepad++ 宏与来自跑步菜单可能是实现所需行为的最简单途径。但是,跑步菜单目前似乎默认不允许作为宏操作。

为了绕过这个问题,我们需要一个名为 的插件NppExec。这个插件允许我们编写适度改进的宏(命令脚本)来运行 Notepad++ 中的程序。特别是,它允许我们将保存文档和运行程序结合起来(如上所述,这通常是不可能的)。

要安装 NppExec:

  • 打开插件管理器(插件插件管理器显示插件管理器)。

  • NppExec在插件列表中找到并标记它。

  • 点击Install

安装后,您需要根据提示重新启动 Notepad++。

创建命令脚本

Notepad++ 重新启动后,打开插件执行执行...窗口(F6)。在文本字段中,将要执行的命令(按顺序)放在单独的行上:

NPP_SAVE
# ... Another command here ...
# ... Another command here ...

顺便说一下,我不太清楚你想对该文件做什么(关于你的 linting 过程),所以很抱歉上面的例子不够完整。


请注意,每个都# ... Another command here ...只是此示例的占位符。重要的是,#符号实际上并不代表 NppExec 中的注释……这只是我的简写。=)


可用命令

假设我们知道我们希望首先保存,我们可以用来NPP_SAVE启动命令脚本。NPP_SAVE是一个NppExec特定的命令,它告诉 Notepad++ 保存当前文档。

一般来说,对于剩余的命令,您可能会直接调用这些命令(假设它们是NppExec在命令行上注册的命令或项目,其输出并不重要)或使用 eg NPP_RUN cmd /k somecommand.exe(或其他变体NPP_RUN cmd)来生成一个新cmd窗口(这通常是更好的选择)。

任何可以从命令行运行的东西(包括批处理文件和脚本)都可能是您的命令的可行选项。 Notepad++ 环境变量也可用。您可能使用的最常见变量是$(FULL_CURRENT_PATH)(最好用双引号引用,即"$(FULL_CURRENT_PATH)"),它提供当前文档的已保存版本的完整 Windows 路径。

值得一提的是,与Run正常情况类似跑步...对话框OK执行...window 将立即执行您的命令。这样您可以在保存命令之前测试它们的功能。同样,该Command(s)字段在运行之间是持久的。

对命令脚本满意后,您将需要选择Save...,为脚本指定一个合适的名称,然后Save再次选择以保存以供日后使用。关闭执行...完成后窗口。

将命令脚本添加到菜单

我们现在可以将NppExec命令脚本添加到 Notepad++ 菜单中,以便为其分配快捷方式:

  • 插件执行高级选项...

  • Associated script:在左下角的下拉菜单中选择命令脚本。

  • 单击Add/Modify即可将其添加到Menu items上方的字段。

  • 或者,勾选旁边的复选框,Place to the Macros submenu将命令脚本添加到主菜单。否则,它将作为选项出现在插件执行

  • 单击OK完成。

按照提示重新启动 Notepad++,并验证命令脚本现在是否作为菜单项出现在菜单或插件执行

向命令脚本添加热键

最后,重新分配Ctrl+ S

  • 打开设置快捷方式映射器...

  • 主菜单选项卡,突出显示“保存”条目。单击Clear窗口底部的 可清除该项目的热键设置 ( Ctrl+ S)。

  • 选择插件命令选项卡。向下滚动并突出显示命令脚本的条目NppExec(按名称标识)。它很可能是条目块中的最后一项NppExec.dll

  • 单击Modify并设置适当的热键选项(标记CtrlS从下拉菜单中选择)。

  • 单击OK保存新的快捷方式设置Close快捷方式映射器...

Ctrl您的命令脚本现在应该由+触发S(无需重新启动)。


您应该注意,无论您指定哪种热键组合,的正常版本Save仍将与文件 → 保存菜单项和工具栏图标(单个蓝色软盘)相关联。


答案2

我的记事本++棉绒每个Ctrl+保存两个额外的文件S

它使得最小化文件(假设源文件是 CSS、JS 或 HTML 文件)以及该最小化文件中预压缩的 Brotli 文件——全部一次性完成。

这本实用指南让我开始了……

  1. 创建批处理文件

制造脚本

if not exist %1 (
    echo file does not exist %1
    goto :eof
)
set run_lint=0
set ext=%~x1
set nam=%~n1
set fullpath=%~dp1
set full_min=%fullpath%%nam%.min%ext%
set full_br=%fullpath%%nam%%ext%.br

if "%ext%"==".js" (
    set run_lint=1
)
if "%ext%"==".css" (
    set run_lint=1
)
if "%ext%"==".html" (
    set run_lint=1
)
if %run_lint%==1 (
    if "%ext%"==".js" (
        npx google-closure-compiler --js="%fullpath%%nam%%ext%" --js_output_file="%full_min%"
    ) else (
        npm exec --no -- html-minifier "%fullpath%%nam%%ext%"  -o "%full_min%" -c "C:\Windows\System32\node_modules\html-minifier\html-cli-config-file.conf"
    )
    IF EXIST "%full_br%" DEL /F "%full_br%"
    "C:\Program Files\PeaZip\res\bin\brotli\brotli.exe" --quality=11 --large_window=27 "%full_min%" -o "%full_br%"
) else (
    echo This is not a file to minify: %1
)
  1. 将该 mfy.bat 文件保存在位于以下位置的 Notepad++ 用户文件夹中:%APPDATA%\Notepad++
  2. 下载并安装Node.js
  3. 打开CMD窗口并运行:npm 安装 html-minifier -g 在发现github.com/kangax/html-minifierhtml-cli-config-file.conf根据您的喜好进行配置。
  4. 安装npm install --save google-closure-compiler最小化您的 JS 文件。我不得不使用这个,因为它支持逻辑<>在我的 JS 文件中。它还有利于检查您的 JS 代码是否存在错误。
  5. 在 Notepad++ 中添加插件 NppExec(插件 -> 插件管理 -> NppExec)
  6. 转到(插件 -> NppExec -> 执行 NppExec 脚本...)并添加NPP_SAVE到第一行,然后$(SYS.APPDATA)\Notepad++\mfy.bat "$(FULL_CURRENT_PATH)"单击节省 ...将脚本保存为“Minify”。

(插件 -> NppExec -> 执行)

  1. 进入(插件 -> NppExec -> 高级选项)添加“最小化”菜单项。选择关联脚本下的最小化,按添加/修改按钮。选择“放入宏菜单”。

(插件 -> NppExec -> 高级选项)

  1. 重新启动 Notepad++
  2. 安装豌豆压缩作为应用程序(或者使用npm install brotliC:\Program Files\PeaZip\res\bin\brotli\brotli.exe如果您没有安装 PeaZip 应用程序,请在 mfy.bat 文件中进行相应调整。)
  3. 最后,为了让它在按Ctrl+时正常工作,S我按照@Anaksunaman指示。

我希望这可以帮助别人。

相关内容