AutoHotkey 快捷键使用心得分享
AutoHotkey 官网地址 https://www.autohotkey.com/,从官网可看到 ahk 可以干非常多的事情,可以让事情变得非常高效,官网给出的 quickstart 也非常简单,非常容易上手,我要分享的有两点:充分利用 Alt 键、常用 APP 一键切换,一键直达指定应用。
充分地利用 Alt 键
在 Windows 下的默认配置中,Alt 键的作用并不是那么大,在使用 AutoHotkey 之前,我用 Alt 键的地方主要有:
Ctrl + Alt + Delete
调出任务管理器。Alt + F4
关闭窗口,也不是很好用,因为 F4 键太远了。Alt + Tab
最近的两个窗口来回切换,这个可能是用的最多的了。
所以,Alt
并没有充分利用起来,然而Alt
又占据了非常优秀键盘位置,离大拇指最近。所以你可以使用 AutoHotkey 把Alt
键充分利用起来。
常用应用一键切换
- 我们在办公的时候会在不同的应用之间来回的切换,比如我是搞开发的,我常用的APP有:
Chrome、 intellij idea、 vscode、 SecureCRT、 Leanote、 微信、 企业微信、 资源管理器、 DataGrip
。
- 在使用
ahk
之前,我可能就是使用Alt+Tab
在两个窗口之间切换,如果打开的应用超过了3个,我可能就会使用鼠标去点击对应应用图标了,有人会问,多个应用我多按几次Alt+Tab
就行了,其实这也不是不可以,只不过应用多了的话,这样是不行的,想我这样的话可能就要按 7 8 次Alt+ Tab了。
- 我们就可以把键盘上的离手指进的按键映射到每一个APP上。前面说要充分利用
Alt
键,所以 Alt 键可以被利用起来了,比如Alt+w
切换到微信,Alt+e
切好到编辑器等等,其实Alt
加数字也是非常不错的,在按键不够的时候可以加上。
- 如果应用太多,不必要为每一个应用都添加快捷键,只需要添加常用的即可,不常用的应用可以直接用鼠标点击即可。
- 刚开始有点不习惯,时间一长,慢慢的你会发现,你离不开这些快捷键了。快速切换应用的这中方式启发自i3wm(https://i3wm.org/),github地址(https://github.com/i3/i3),i3wm是一个Linux的窗口管理器,在使用了一段时间的i3wm以后,回到Windows发现不习惯了。
个人使用脚本示例
下面是使用 Alt+...
的应用切换的Ahk脚本,可以根据自己的情况酌情修改。
/*
;;;; 鼠标慢速移动:Alt+ hjkl
!j:: MouseMove, 0, 5, 0, R
!k:: MouseMove, 0, -5, 0, R
!h:: MouseMove, -5, 0, 0, R
!l:: MouseMove, 5, 0, 0, R
*/
/*
;;;; 鼠标快速移动:Alt+Shift hjkl
!+j:: MouseMove, 0, 100, 0, R
!+k:: MouseMove, 0, -100, 0, R
!+h:: MouseMove, -100, 0, 0, R
!+l:: MouseMove, 100, 0, 0, R
*/
/*
;;;; 鼠标向上、下滚动
!Up:: Click, WheelUp
!Down:: Click, WheelDown
*/
/*
;;;; 鼠标点击:Alt+,左键 Alt+.右键
!,:: MouseClick left
!.:: MouseClick right
*/
;;;; 禁用 Alt 键激活securecrt菜单栏
LAlt::
sendinput, {LAlt down}
sendinput, {SC0E8 down}
KeyWait, LAlt
return
LAlt up::
sendinput, {LAlt up}
sendinput, {SC0E8 up}
KeyWait, LAlt
return
;;;; Alt + Shift + Q : 关闭当前窗口
^+q:: WinClose, A
;;;; Alt + Shift + t : 当前窗口最前展示
!+t:: Winset, Alwaysontop, , A
;;;; 音量控制:Ctrl+Up Ctrl+Down Ctrl+Esc
^Up:: Send {Volume_Up}
^Down:: Send {Volume_Down}
^Esc:: Send {Volume_Mute}
;;;; 方向键上下左右
>#w:: Send {Up}
>#s:: Send {Down}
>#a:: Send {Left}
>#d:: Send {Right}
;;;; Alt + Shift + F : 当前窗口最大化和还原
!+f::
WinGet,S,MinMax,A
if S=0
WinMaximize,A
else if S=1
WinRestore,A
return
;;;; Alt + Shift + b : 展示/隐藏任务栏
!+b::
HideShowTaskbar(hide := !hide)
HideShowTaskbar(action) {
static ABM_SETSTATE := 0xA, ABS_AUTOHIDE := 0x1, ABS_ALWAYSONTOP := 0x2
VarSetCapacity(APPBARDATA, size := 2*A_PtrSize + 2*4 + 16 + A_PtrSize, 0)
NumPut(size, APPBARDATA), NumPut(WinExist("ahk_class Shell_TrayWnd"), APPBARDATA, A_PtrSize)
NumPut(action ? ABS_AUTOHIDE : ABS_ALWAYSONTOP, APPBARDATA, size - A_PtrSize)
DllCall("Shell32\SHAppBarMessage", UInt, ABM_SETSTATE, Ptr, &APPBARDATA)
}
return
;;;; 程序或窗口一键直达
!q::
WinGet, active_id, ID, A
if WinActive("ahk_exe JdReader.exe")
WinMinimize, A
else if WinExist("ahk_exe JdReader.exe")
WinActivate
else
return
return
!w::
WinGet, active_id, ID, A
if WinActive("ahk_exe Leanote.exe")
WinMinimize, A
else if WinExist("ahk_exe Leanote.exe")
WinActivate
else
Run "C:\applications\leanote-desktop-windows-x64-v2.6.2\Leanote.exe"
return
!e::
WinGet, active_id, ID, A
if WinActive("ahk_exe Code.exe")
WinMinimize, A
else if WinExist("ahk_exe Code.exe")
WinActivate
else
;Run "C:\Program Files\Notepad++\notepad++.exe"
Run "C:\Users\flownet\AppData\Local\Programs\Microsoft VS Code\code.exe"
return
!r::
WinGet, active_id, ID, A
if WinActive("ahk_exe idea64.exe")
WinMinimize, A
else if WinExist("ahk_exe idea64.exe")
WinActivate
else
Run "C:\Program Files\JetBrains\IntelliJ IDEA 2020.1\bin\idea64.exe"
return
!t::
WinGet, active_id, ID, A
if WinActive("ahk_exe Taskmgr.exe")
WinMinimize, A
else if WinExist("ahk_exe Taskmgr.exe")
WinActivate
else
Run Taskmgr.exe
return
!a::
WinGet, active_id, ID, A
if WinActive("ahk_exe chrome.exe")
WinMinimize, A
else if WinExist("ahk_exe chrome.exe")
WinActivate
else
Run chrome.exe
return
!s::
WinGet, active_id, ID, A
;if WinActive("ahk_exe Xshell.exe")
if WinActive("ahk_exe SecureCRT.exe")
WinMinimize, A
;else if WinExist("ahk_exe Xshell.exe")
else if WinExist("ahk_exe SecureCRT.exe")
{
WinActivate
}
else
;Run Xshell.exe
Run "C:\Program Files\VanDyke Software\SecureCRT\SecureCRT.exe"
return
!d::
WinGet, active_id, ID, A
if WinActive("ahk_exeWindowsTerminal.exe")
WinMinimize, A
else if WinExist("ahk_exe WindowsTerminal.exe")
WinActivate
else
Run "C:\applications\Windows Terminal (Preview)"
return
!f::
WinGet, active_id, ID, A
if WinActive("ahk_exe explorer.exe")
WinMinimize, A
else if WinExist("ahk_class CabinetWClass")
WinActivate
else
Run explorer.exe
return
!g::
WinGet, active_id, ID, A
if WinActive("ahk_exe Panda.exe")
WinMinimize, A
else if WinExist("ahk_exe Panda.exe")
WinActivate
else
Run "C:\Users\flownet\AppData\Roaming\Panda\Panda.exe"
return
!z::
WinGet, active_id, ID, A
if WinActive("ahk_exe WeChat.exe")
WinMinimize, A
else if WinExist("ahk_class WeChatMainWndForPC")
WinActivate
else
Run "C:\Program Files (x86)\Tencent\WeChat\WeChat.exe"
return
!x::
WinGet, active_id, ID, A
if WinActive("ahk_exe WXWork.exe")
WinMinimize, A
else if WinExist("ahk_exe WXWork.exe")
WinActivate
else
Run "C:\Program Files (x86)\WXWork\WXWork.exe"
return
!c::
WinGet, active_id, ID, A
if WinActive("ahk_exe YoudaoDict.exe")
WinMinimize, A
else if WinExist("ahk_exe YoudaoDict.exe")
WinActivate
else
Run "C:\Users\flownet\AppData\Local\youdao\dict\Application\YoudaoDict.exe"
return
!v::
WinGet, active_id, ID, A
if WinActive("ahk_exe vmware.exe")
WinMinimize, A
else if WinExist("ahk_exe vmware.exe")
{
WinActivate
;WinSet, Style, -0xC00000, A
}
else
return
return
!m::
WinGet, active_id, ID, A
if WinActive("ahk_exe cloudmusic.exe")
WinMinimize, A
else if WinExist("ahk_class cloudmusic.exe")
WinActivate
else
Run "C:\Program Files (x86)\Netease\CloudMusic\cloudmusic.exe"
return