Notepad++ 在命令提示符中运行当前行

Notepad++ 在命令提示符中运行当前行

我使用类似的命令在命令提示符上打开当前选定的单词:

cmd /D "%windir%/system32" /K ""$(CURRENT_WORD)""

是否有任何命令可以打开当前行而无需手动选择该行上的任何文本?

答案1

两者都不如何从 Notepad++ 运行外部程序插件的文档也没有执行提及包含当前行的环境变量。

同样,宏只能操作 Scintilla 消息(列表)、搜索和替换录音以及一些 Notepad++ 定义的命令(未记录?),因此无法通过宏实现这一点。

除了编写自己的插件之外,唯一的方法知道如何使用外部程序来做到这一点。AutoHotkey 脚本将执行您想要的操作。

AutoHotkey 脚本:

^F5::
WinGetActiveTitle, Title
if RegExMatch(Title, "- Notepad\+\+$")
{
    SendPlay {Home}+{End}{F5}
    SendPlay cmd /D "%windir%/system32" /K "$(CURRENT_WORD)"
    SendPlay {Enter}
}
else
    SendPlay ^{F5}
return

它能做什么:

  • 如果 Notepad++ 是活动窗口,则组合键Ctrl+F5将选择当前行并执行外部命令

    cmd /D "%windir%/system32" /K ""$(CURRENT_WORD)""

    $(CURRENT_WORD)现在包含整行,因为它已被选中。唯一的缺点是您将丢失当前光标位置,因为脚本将保持当前行处于选中状态。

  • 如果 Notepad++不是活动窗口,组合键Ctrl+F5将正常运行。

如何使用:

  1. 下载并安装最新版本。

  2. npp_runline.ahk使用您最喜欢的文本编辑器将上述脚本保存为。

  3. 双击该文件即可运行脚本。

  4. 如果您愿意,请复制文件夹中的脚本(或其链接)Startup

怎么运行的:

  • ^F5::指定使用的热键 ( Ctrl+ F5)。

  • WinGetActiveTitle, Title将活动窗口的标题存储在变量中Title

  • RegExMatch(Title, "- Notepad\+\+$")返回正则表达式- Notepad\+\+$(其中\+是文字+并且$位于字符串的末尾)在中最左边出现的位置Title,如果没有匹配则返回零。

    • 如果匹配,则if...执行下面的块:

      • SendPlay {Home}+{End}{F5}模拟按下HomeShift+ End(选择当前行而不选择前导空格)然后F5(打开Run...对话框)。

      • SendPlay cmd /D "%windir%/system32" /K "$(CURRENT_WORD)"在对话中输入的就是这个Run...

      • SendPlay {Enter}模拟按下Enter(完成Run...对话)。

    • 如果不匹配,else则执行下面的块:

      • SendPlay ^{F5}模拟按Ctrl+ F5(如果我们需要 Notepad++ 之外的快捷方式,则返回)。
  • return在当前位置终止脚本的执行。


也可以看看:

相关内容