smallnewer / bugs

18 stars 4 forks source link

设置windows的类MAC快捷键 #123

Open smallnewer opened 7 years ago

smallnewer commented 7 years ago

windows的快捷键对程序员来说简直是无法忍受,尤其是用过mac以后。

发现autohotkey这个神器,可以对快捷键进行编程。非常好用。把自己用的代码共享出来。基本上已经还原了我日常使用中的90%的mac快捷键功能


; 禁用win功能
; ~LWin Up:: return
; ~RWin Up:: return

; 基本编辑功能-复制粘贴剪切撤销全选保存查找新建打开
$!c::
IfWinActive ahk_class CabinetWClass
    Send, ^{c}
else
    Send, ^{Insert}
Return

$!v::
IfWinActive ahk_class CabinetWClass
    Send, ^{v}
else
    Send, +{Insert}
Return

;$!c::Send, ^{Insert}
;Return
;$!v::Send, +{Insert}
;Return

$!x::Send, ^{x}
Return

$!z::Send, ^{z}
Return

$!a::Send, ^{a}
Return

$!s::Send, ^{s}
Return

$!f::Send, ^{f}
Return

$!n::Send, ^{n}
Return

$!o::Send, ^{o}
Return

; 浏览器快速导航到地址栏
$!l::Send, ^{l}
Return

; 隐藏当前窗口
$!h::WinMinimize, A
Return

; 有部分会用
$!j::Send, ^{j}
Return

; 打印
$!p::Send, ^{p}
Return

; 没啥用
$!y::Send, ^{y}
Return

; 刷新
$!r::Send, ^{r}
Return

; 新标签页
$!t::Send, ^{t}
Return

; 关闭当前窗口
$!w::Send, ^{w}
Return

; 退出程序
$!q::Send, !{F4}
Return

; sublime里的多选
$!d::Send, ^{d}
Return

; dock栏快速切窗口。
; 1-exporler 2-chrome 3-sublime是写死的。
; 这么写可以解决多窗口要多按次回车的问题。各位自己配置下即可
; $!1::Send, #{1}
; Return
$!1::
IfWinExist, ahk_class CabinetWClass
    WinActivate
else
    Run %comspec% /c ""C:\Windows\explorer.exe""
Return
; $!2::Send, #{2}
; Return
$!2::
IfWinExist, ahk_exe chrome.exe
    WinActivate
else
    Run %comspec% /c ""C:\Program Files (x86)\Google\Chrome\Application\chrome.exe""
Return
$!3::
IfWinExist, ahk_exe sublime_text.exe
    WinActivate
else
    Run %comspec% /c ""D:\Program Files\Sublime Text 3\sublime_text.exe""
Return
$!4::Send, #{4}
Return
$!5::Send, #{5}
Return

; 撤销上次关闭的窗口
$!+t::Send, ^+{t}
Return

; 新建2
$!+n::Send, ^+{n}
Return

; 打开2
$!+o::Send, ^+{o}
Return

; sublime用
$!+p::Send, ^+{p}
Return

; 回退撤销
$!+z::Send, ^{y}
Return

; 注释
$!/::Send, ^{/}
Return

; sublime选整行
$!+l::Send, ^+{l}
Return

; 光标到行首行尾页尾,兼容shift选择
$!Left::Send, {Home}
Return

$!Right::Send, {End}
Return

$!+Left::Send, +{Home}
Return

$!+Right::Send, +{End}
Return

$!Up::Send, ^{Home}
Return

$!Down::Send, ^{End}
Return

$!+Up::Send, ^+{Home}
Return

$!+Down::Send, ^+{End}
Return

$#Left::Send, ^{Left}
Return

$#Right::Send, ^{Right}
Return

$+#Left::Send, ^+{Left}
Return

$+#Right::Send, ^+{Right}
Return

; 回桌面
$F11::Send, #{d}
Return

; 标签页的上一个下一个,兼容大部分
$!+[::Send, ^{PgUp}
Return

$!+]::Send, ^{PgDn}
Return

; ctrl配合鼠标多选
$!LButton::Send, ^{LButton}
Return

; 在同应用的多窗口间进行切换
$!`::
WinGetClass, NowFocusClass , A
IfWinActive, ahk_class %NowFocusClass%
    WinActivateBottom, ahk_class %NowFocusClass%  ;
    IfWinNotActive  ; The original "last found" window is no longer active.
    IfWinActive, ahk_class %NowFocusClass%  ; But a new one is.
    {
        WinActivate
    }

else

Return

; 在explorer里进行回车重命名
;$Enter::
;SetTitleMatchMode,RegEx
#IfWinActive ahk_class CabinetWClass
    Return::
      WinGet,l,ControlList,A
      ToolTip %ControlList%
      SendInput % InStr(l,"Edit1")?"{Enter}":"{F2}"
    Return
    $!Backspace::
      Send, ^{d}
    Return
#IfWinActive

; 禁用alt的菜单功能
~LAlt Up:: return

保存为脚本,运行即可。

当然毕竟是模仿,还有很多细节没有mac下舒服。比如平时喜欢用alt+123切换程序窗口,但是win下若chrome有多个大窗口,就不能顺利切过去(会出一个缩略图列表让你选,干),chrome不会开多个,但是sublime通常会开很多个,一个窗口关联一个项目。现在就不能这么做了,只能使用switch projec功能,但是操作还是不那么自如。 多窗口问题已修复,但要求1~3对应绑定的explorer,chrome,sublime。如果你不希望这样,可以找到对应代码改为4和5的写法;或者自己配置,挺简单的

还有sublime的一些快捷键,不方便用autohotkey的,我直接就改了sublime里的映射

[
    { "keys": ["ctrl+t"], "command": "show_overlay", "args": {"overlay": "goto", "show_files": true} },
    { "keys": ["alt+]"], "command": "indent" },
    { "keys": ["alt+["], "command": "unindent" },
]

sublime也改了一些高亮、代码片段,回头再提交吧

smallnewer commented 7 years ago