V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
louchenabc
V2EX  ›  程序员

做了这几步, Mac 和 Windows 都能更好地满足我的需求了。

  •  
  •   louchenabc ·
    lcomplete · 2022-10-17 17:39:33 +08:00 · 3134 次点击
    这是一个创建于 772 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天在 V2EX 看到下面两个帖子:

    这两个帖子中提到的使用困扰主要是在快捷键方面,刚好我前阵子写了一篇文章:我如何流畅地切换使用 Mac 和 Windows ,也跟快捷键有关,所以在这里分享一下。

    原文中的设置有些变动,所以在这里重新发一遍,下面是最新的设置方法。

    一套快捷键兼容 Mac 和 Windows

    有一些方案是修改系统的键位,比如在 Windows 下将 Win 键与 Ctrl 键调换,这种方案对系统侵入性较强,所以个人不是很喜欢,我采用的方案是增加新的快捷键使其匹配另一个系统的功能,令一套快捷键兼容多个系统

    Mac 上的设置

    为方便对照,先回顾下 Mac 键盘与 Windows 键盘中两个修饰键位置的对应关系:Opt -> WinCmd -> Alt

    Mac 上使用 RaycastKarabiner-Elements系统设置来配置快捷键,以下设置在 Windows 上都有对应的功能。

    Raycast

    快捷键 功能
    Opt + E 打开 Finder
    Opt + Tab 打开 Mission Control
    Ctrl + Shift + Left Previous Display
    Ctrl + Shift + Right Next Display
    Ctrl + Cmd + Z 打开 /关闭 Telegram 窗口
    Ctrl + Cmd + C 打开 /关闭 Chrome 窗口
    Ctrl + Cmd + X 打开 /关闭 VS Code 窗口

    设置原因:

    • Windows 上常用 Win + E 打开资源管理器、Win + Tab 切换窗口。
    • Ctrl + Shift + Left/Right 与 Win 下将窗口移动至显示器快捷键类似 (Opt+Shift+Left),多显示器用户建议设置。
    • Ctrl + Cmd/Alt + Z 是早期使用 QQ 留下的习惯。
    • 另外两个设置沿用了 Ctrl + Cmd + 字母 打开窗口的设置,方便打开高频使用的应用。
    • Raycast 上还有许多好用的功能,于是作为一个必装工具,快捷键设置的任务也就交给它了。

    Karabiner-Elements

    快捷键 功能
    Ctrl/RCmd + H Move Left
    Ctrl/RCmd + J Move Down
    Ctrl/RCmd + K Move Up
    Ctrl/RCmd + L Move Right

    设置原因:

    • 方便 Vim 党操作。
    • 使用 Ctrl 和 RCmd (右 Cmd ) 作为触发键不与现有快捷键冲突。

    设置建议:

    • 若不使用 Cmd + H 隐藏窗口,Move 操作设置的 Ctrl 触发改为 LCmd 触发更为合适,具体哪种合适也取决于使用的是什么键盘,比如使用 Magic Keyboard 时使用 Cmd 或 fn 更加方便,使用键程较长的键盘时用 Ctrl 也很方便。

    系统设置

    Mac 中可使用系统设置来配置应用内快捷键,这部分设置其实可有可无。

    在 Keyboard -> App Shortcuts 中配置 Chrome 快捷键,配置时注意功能名称需与菜单名称(不同版本的名称可能不一样)保持完全一致;

    快捷键 功能名称
    Cmd + D Open Location…
    Cmd + L Bookmark This Page…

    设置原因:

    • 将 Chrome 常用的「回到 Url 输入框」功能设置为与 Win 上的 Alt + D 一致,方便单手操作的同时也避免和 Cmd + H/J/K/L 快捷键冲突。

    Windows 上的设置

    Win 上使用 AutoHotKey 来进行快捷键设置,对应的功能与上面提到的 Mac 设置一致,另外将常用的 Mac 快捷键操作设置到 Win 中。

    AutoHotKey

    快捷键 功能
    Alt + C 复制
    Alt + X 剪切
    Alt + V 粘贴
    Alt + A 全选
    Alt + W 关闭窗口
    Alt + Z 撤销
    Alt + F 搜索
    Alt + Q 退出
    Alt + Left Home
    Alt + Right End
    Alt + Shift + [
    Alt + Shift + ]
    Alt + [ (资源管理器、chrome ) 返回
    Alt + ] (资源管理器、chrome ) 前进

    除了 Mac 的常用快捷键外,还增加了一个鼠标的组合按键用于切换桌面。

    快捷键 功能
    按住鼠标左键 + 鼠标前进键 向左移动桌面
    按住鼠标左键 + 鼠标后退键 向右移动桌面

    设置原因:

    • Mac 的一大优势是多桌面,将多桌面的使用习惯应用到 Windows 上。
    • 使用鼠标切换桌面本可以用罗技的 Anywhere 或 Master 系列鼠标来实现,但个人认为其过于臃肿导致软硬件不稳定,在使用体验上并不怎么样,所以才使用 AutoHotKey 来实现。

    部分配置:

    ; ------- mac -------
    
    $!c::
     Send {Ctrl Down}{c}{Ctrl Up}
    Return
    $!x::
     Send {Ctrl Down}{x}{Ctrl Up}
    Return
    $!v::
     Send {Ctrl Down}{v}{Ctrl Up}
    Return
    $!a::
     Send {Ctrl Down}{a}{Ctrl Up}
    Return
    $!s::
     Send {Ctrl Down}{s}{Ctrl Up}
    Return
    $!w::
     Send {Ctrl Down}{w}{Ctrl Up}
    Return
    $!z::
     Send {Ctrl Down}{z}{Ctrl Up}
    Return
    $!f::
     Send {Ctrl Down}{f}{Ctrl Up}
    Return
    $!q::
     Send {Alt Down}{F4}{Alt Up}
    Return
    
    $!Left::
     Send {Home}
    Return
    
    $!Right::
     Send {End}
    Return
    
    $!+Left::
     Send +{Home}
    Return
    
    $!+Right::
     Send +{End}
    Return
    
    
    ; ----- display ------
    
    ~LButton & XButton1::send #^{Right}
    return
    
    ~LButton & XButton2::send #^{left}
    return
    
    ;~MButton & RButton::send #^{Right}
    ;return
    
    ;~MButton & LButton::send #^{left}
    ;return
    
    ; ------ vim -----
    
    !k::   ;; !->alt   k->字母键 k
    Send {Up}   ;;输入 上 键
    return
    !j::
    Send {Down}
    return
    !h::
    Send {Left}
    return
    !l::
    Send {Right}
    return
    
    ; // 中文直角引号
    
    !+[::send,{U+300C}            ;// alt + shift + [  转换为「
    !+]::send,{U+300D}            ;// alt + shift + ]  转换为 」
    
    ; // 音量调节
    !-::send,{Volume_Down}
    !=::send,{Volume_Up}
    
    ; ----- explorer ---------
    
    #IfWinActive ahk_class CabinetWClass
    {
    ![::Send !{Left}
    Return
    
    !]::Send !{Right}
    Return
    }
    
    
    ; ----- chrome ---------
    
    #IfWinActive ahk_exe chrome.exe
    {
    ![::Send !{Left}
    Return
    
    !]::Send !{Right}
    Return
    
    !y::Send ^{h}
    Return
    
    !t::Send ^{t}
    Return
    
    !+t::Send ^+{t}
    Return
    
    !r::Send ^{r}
    Return
    }
    
    #IfWinActive ahk_exe Code.exe
    {
    ![::Send !{Left}
    Return
    
    !]::Send !{Right}
    Return
    
    !p::Send ^{p}
    Return
    
    !+p::Send ^+{p}
    return
    }
    
    #IfWinActive ahk_exe Obsidian.exe
    {
    ![::Send !{Left}
    Return
    
    !]::Send !{Right}
    Return
    
    !p::Send ^{p}
    Return
    
    !e::Send ^{e}
    Return
    
    !#e::Send ^!{e}
    Return
    
    !+d::Send ^+{d}
    Return
    
    !o::Send ^{o}
    Return
    }
    
    #IfWinActive ahk_exe idea64.exe
    {
    ![::Send ^!{Left}
    Return
    
    !]::Send ^!{Right}
    Return
    
    !e::Send ^{e}
    Return
    
    !o::Send ^{n}
    Return
    
    !+o::Send ^+{n}
    Return
    }
    
    ; ----- telegram ---------
    
    #IfWinActive ahk_exe Telegram.exe
    {
    ^!z::Send {Ctrl Down}{w}{Ctrl Up}
    Return
    }
    
    #IfWinActive ahk_exe WeChat.exe
    {
    !w::Send {Alt Down}{F4}{Alt Up}
    Return
    }
    
    #IfWinActive
    
    ^!z::Run "C:\Users\who\AppData\Roaming\Telegram Desktop\Telegram.exe"
    Return
    

    推荐阅读 & 参考

    写在最后

    Mac 、Windows 、Linux 各有优劣,比如:Mac 美观、有不少独占优秀软件,Windows 多面手,Linux 原生 docker 等等,都用一用,把他们的优点结合起来未尝不可。

    9 条回复    2022-10-18 18:27:24 +08:00
    todorov
        1
    todorov  
       2022-10-17 18:03:22 +08:00   ❤️ 1
    V 站程序员太多,不少人的思考方式必须要用 if/else ,或者 0 和 1 才能表达。
    其实大可不必,双开,三开,多开,哪个方便用哪个呗。此路不通绕着走。
    archean
        2
    archean  
       2022-10-17 19:01:08 +08:00
    楼主有心了,感谢你。
    Harry
        3
    Harry  
       2022-10-17 22:27:20 +08:00   ❤️ 6
    "Mac 、Windows 、Linux 各有优劣,比如:Mac 美观、有不少独占优秀软件,Windows 多面手,Linux 原生 docker 等等,都用一用,把他们的优点结合起来未尝不可。"

    这一句是值得称赞的。说到底我们都是用计算机系统进行创造和解决问题,是我们的工具。我们应该是不同工具的不同特性,去解决不同场景下的问题。好的地方多用,蹩脚的地方少用(还其他工具)这个才是我们应该有的态度。
    felixcode
        4
    felixcode  
       2022-10-17 22:42:15 +08:00
    说的对,用个系统真没必要有什么优越感。
    KJR5OR04CnCiWf02
        5
    KJR5OR04CnCiWf02  
       2022-10-17 22:45:31 +08:00
    想起来,这个世界技术上的进步往往是偏执狂推动的
    Veneris
        6
    Veneris  
       2022-10-17 22:49:42 +08:00 via iPhone
    想知道 mac 好用的窗口切换有什么 app ,实在受不了一切换一堆已经关了很久只留了个后台的图标混在里面
    kylix
        7
    kylix  
       2022-10-17 22:53:18 +08:00
    感谢 OP 这么详细的分享
    sunrisewestern
        8
    sunrisewestern  
       2022-10-17 22:57:06 +08:00
    zhuweiyou
        9
    zhuweiyou  
       2022-10-18 18:27:24 +08:00
    我是 powertoys 键映射
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5476 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 07:04 · PVG 15:04 · LAX 23:04 · JFK 02:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.