AutoHotKey 之于 Windows,就好比 Javascript 之于 Chrome, 千万不要错过“DIY”操作系统的乐趣!
IDEA的标签页操作不是很灵活。单行模式下,拖拽时自动滚动很慢,而且一旦误操作,容易错误地把标签页拿下来,再放上去的时候,却变成了同一行的最后一个,很糟心。还是多行标签页重排起来比较轻松。
但是多行标签页又不能限制最大行数,数量一多,就会挤占大量的看代码空间,所以往往需要来回切换两种模式。
设置按钮位于 File -> Settings -> Editor -> Eidtor Tabs(这么长的路径…)
,也可以右击任意一个标签,选“Configure Eidtor Tabs…”
打开的设置会遮挡住IDE的界面,而且需要多次运用肉眼比对,在数个列表中搜寻相关入口。如此简单的功能,犯不着为它练成肌肉记忆,如果能一键切换就好了!
第一反应是,能不能用插件实现?然而搜索资料,出来的都是为插件写设置,而不是让插件去修改IDE设置。幸好,还有万能的AutoHotKey!
; 需要在Android Studio设置“Configure Eidtor Tabs”快捷键为 Ctrl+K
; 一键切换多行标签页
toggle_多行标签(){
send ^k ; 调用的快捷键,直达设置界面
sleep, 750
send {Tab}
sleep, 20
send {Tab}
sleep, 20
send {Space}
sleep, 20
send {Enter}
}
复制代码
绑定:
#IfWinActive ahk_exe studio64.exe
F1::
toggle_多行标签()
return
复制代码
AutoHotKey 脚本有个神奇的功能,那就是可以自己重载自己!
; 当打开 vscode,且标题为“脚本名称.ahk”时,按F1重载当前脚本!
#IfWinActive ahk_exe Code.exe
F1::
WinGetTitle,Title
TStart := SubStr(Title, 1, 10)
IfEqual TStart, vscode.ahk
{
Reload ; 重载脚本……
}
return
复制代码
AutoHotKey 可以暂时关闭对于按键的拦截,稍后再恢复,其间可以调用按键原来的功能:
; 如果是 ~F1:: 则不会拦截,但是两种功能会同时发生
F1::
IfEqual TStart, vscode.ahk
{
Reload; 重载脚本……
}
else {
; 如果没有打开“脚本名称.ahk”,则调用原来的功能。
; p.s. 此处F1的原功能,是vscode显示所有命令面板
Hotkey F1, Off
Send {F1}
Hotkey F1, On
}
return
复制代码
使用浏览器时,模拟右击+T,实现用加号键一键翻译。
#IfWinActive ahk_exe chrome.exe
NumpadAdd:: ; 小键盘加号打开谷歌翻译,回车切换
CoordMode, Mouse, Screen
global lastXW
MouseGetPos, xpos, ypos
WinGetPos,x,y,w,h
xw := lastXW
WinGetTitle, title
IfInString, title, Chrome
{
xw := x + w
lastXW := xw
}
pY := ypos
if pY<200
pY := 200
MouseClick, Right, xw - 10, pY
MouseMove, xpos, ypos
sleep, 20
Send {T}
sleep, 20
Send {T}
;MouseMove, lastX, ypos
; DllCall("SetCursorPos", "int", lastX, "int", ypos)
var=取消置顶 %lastX% - %ypos%
;弹出顺时消息("Title",var, "-500", "w120")
return
复制代码
“书签管理器”的字体也可以用css代码改,但是由于浏览器限制,不能像普通页面那样自动注入。所以可以用 AutoHotKey 模拟手动注入! 这才是机器人该干的事,减少重复负担!
; 调大edge“书签管理器”的字体
#IfWinActive ahk_exe msedge.exe
F1::
Send {F12}
WinGetTitle,WndTitle
TStart := SubStr(WndTitle, 1, 9)
IfEqual TStart, Favorites
{
clipboard := ""
clipboard := "var d=document, sty=d.createElement('style'); if(d.title!='Favorite') { d.title='Favorite'; sty.innerText='.card_clickable_title{font-size:15px!important;font-weight:unset!important;white-space:unset!important;max-height: 32px;position:absolute; background:#3b3b3b!important;width:80%!important;}'; d.head.append(sty); }"
ClipWait
S := clipboard
Sleep 750 ; 等待dev侧栏弹出
Send ^v
Sleep 150 ; 等待粘贴
Send {Enter}
Sleep 150 ; 等待执行
Send {F12}
}
return
复制代码
执行复制()
{
IfWinActive, ahk_exe PotPlayerMini64.exe
{
S :=
WinGetTitle,S
clipboard := ""
clipboard := S
ClipWait
弹出顺时消息("",Clipboard,"-500", "w450")
} else {
clipboard := ""
Send, ^c ; ctrl+c得全路径
ClipWait
IfWinActive, ahk_exe explorer.exe
{
S := clipboard
SplitPath,S,,,,S
clipboard := ""
clipboard := S
ClipWait
弹出顺时消息("",clipboard,"-500", "w550")
;MsgBox % "取得无后缀文件名 : " . S
return
}
}
}
复制代码
#IfWinActive ahk_exe explorer.exe
F1
执行复制()
return
#IfWinActive ahk_exe PotPlayerMini64.exe
F1::
执行复制()
return
复制代码
弹出顺时消息(Title,Message,Timeout,Width := "w120") {
Progress, %Width% b1 zh0 fs18, %Message%,,%Title%,
settimer, killAlert,%Timeout%
}
复制代码
弹出顺时消息("","脚本已加载···","-500", "w150")
复制代码
Fn键坏了,可以用win代替一部分功能!从官方论坛搜来的方法,但是去掉了“Start screensaver”。实测可以连带关闭副屏。
Win+shift+F2 锁定工作站,似乎不会暂停后台音乐。
#F2::
弹出顺时消息("","即将关闭屏幕…","-500", "w340")
Sleep 500
;SendMessage 0x112, 0xF140, 0, , Program Manager ; Start screensaver
SendMessage 0x112, 0xF170, 2, , Program Manager ; Monitor off
Return
#+F2::
Run rundll32.exe user32.dll`,LockWorkStation ; Lock PC
Sleep 1000
SendMessage 0x112, 0xF170, 2, , Program Manager ; Monitor off
Return
复制代码
PowerToys Run 是微软 PowerToys 的一个子功能,可以用alt+空格搜索窗口名称,界面优美,类似于在各种IDE或编辑器中用 Ctrl+E 搜索代码文件。
但是,PowerToy Run 没有对于搜索词的记忆。于是我们可以用 AutoHotKey 封装,比如任意界面用 alt+s 搜索 Android Studio,用 alt+g 搜索 Github,用 alt+d 搜索 Vscode 等等……
ListWindow(name) {
S := clipboard
clipboard := ""
clipboard := name
ClipWait
WinGetTitle, title, A
IfNotEqual, title, PowerToys.PowerLauncher
{
Send !{Space}
sleep 150
}
else{
Send ^a
sleep 50
}
WinGetTitle, title, A
IfEqual, title, PowerToys.PowerLauncher
{
Send ^v
sleep 50
}
clipboard := S
sleep 50
}
复制代码
!D::
ListWindow("Code.exe") ; Visual Studio Code
Return
!C::
ListWindow("Code.exe") ; Visual Studio Code
Return
!S::
ListWindow("Studio64") ; Android Studio
Return
!G::
ListWindow("Github")
Return
!Q::
ListWindow("Chrome")
Return
!E::
ListWindow("Edge")
Return
!W::
ListWindow("explorer.exe")
Return
复制代码
Potplayer 虽然设置复杂,但许多设定值得借鉴的。比如左右方向键跳跃时间,可以用ctrl或shift修改跳跃的幅度。利用AutoHotKey,更可以是实现自动连续跳跃(相当于一致按着)!
设备管理器中,自带键盘的驱动无法被禁用,该按钮是灰色的。试试强行点击会不会成功?先用windows官方的spy++获得控件id,假设为0x000107D6:
~F2::
; ^ 代表 切换 0x8000000 样式,也就是 WS_DISABLED
WinSet, Style, ^0x8000000, ahk_id 0x000107D6
Return
复制代码
按F2后,就可以点击灰色的按钮了,不过实测在这个例子中没啥用…
源码附件已经打包好上传到百度云了,大家自行下载即可~
链接: https://pan.baidu.com/s/14G-bpVthImHD4eosZUNSFA?pwd=yu27
提取码: yu27
百度云链接不稳定,随时可能会失效,大家抓紧保存哈。
如果百度云链接失效了的话,请留言告诉我,我看到后会及时更新~
开源地址
码云地址:
http://github.crmeb.net/u/defu
Github 地址:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。