我使用类似的命令在命令提示符上打开当前选定的单词:
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将正常运行。
如何使用:
下载并安装最新版本。
npp_runline.ahk
使用您最喜欢的文本编辑器将上述脚本保存为。双击该文件即可运行脚本。
如果您愿意,请复制文件夹中的脚本(或其链接)
Startup
。
怎么运行的:
^F5::
指定使用的热键 ( Ctrl+ F5)。WinGetActiveTitle, Title
将活动窗口的标题存储在变量中Title
。RegExMatch(Title, "- Notepad\+\+$")
返回正则表达式- Notepad\+\+$
(其中\+
是文字+
并且$
位于字符串的末尾)在中最左边出现的位置Title
,如果没有匹配则返回零。如果匹配,则
if...
执行下面的块:SendPlay {Home}+{End}{F5}
模拟按下Home和Shift+ End(选择当前行而不选择前导空格)然后F5(打开Run...
对话框)。SendPlay cmd /D "%windir%/system32" /K "$(CURRENT_WORD)"
在对话中输入的就是这个Run...
。SendPlay {Enter}
模拟按下Enter(完成Run...
对话)。
如果不匹配,
else
则执行下面的块:SendPlay ^{F5}
模拟按Ctrl+ F5(如果我们需要 Notepad++ 之外的快捷方式,则返回)。
return
在当前位置终止脚本的执行。
也可以看看: