已复制
全屏展示
复制代码

AutoHotkey 快捷键使用心得分享


· 5 min read

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
    
🔗

文章推荐