我使用 Mac OS X 和 Arch Linux,偶尔通过 ssh 登录 FreeBSD 和 Debian 服务器。我最喜欢的工具是 zsh、ssh、tmux、git、vim 和 irssi。我在 Mac OS X 上使用 iTerm2,在 Arch Linux 上使用 unicode-rxvt,我还使用 Xmonad 作为窗口管理器。
现在Ctrl+a+n切换到 tmux 中的下一个窗口,Alt+右键转到 irssi 中的下一个,Cmd+右键转到 iTerm2 中的下一个选项卡,Ctrl+w+w切换到 vim 中的下一个缓冲区,依此类推。基本上,这只是一团糟,尽管其中一些存在于肌肉记忆中,但大多数却不存在。我正在寻找一种一致的键绑定方案。
在我看来,Cmd/Super/Win 应该由 OS 桌面环境和/或窗口管理器使用,Alt 将是 tmux,Ctrl 将是 vim 和 irssi。从键盘上的右到左依次是:Cmd、Alt、Ctrl,以及 OS/DE/WM、多路复用器、编辑器/irc 客户端(以某种层次结构的方式)。
因此,会出现这样的情况:
Cmd+左/+右- 切换工作区(Xmonad)
Alt+左键+/右键- 切换 tmux 窗口
Ctrl+向左/+向右- 切换 irssi 窗口/vim 缓冲区
Cmd+1- 切换到工作区 1 (Xmonad)
Alt+1- 切换到 tmux 窗口 1
Ctrl+1- 切换到 irssi 窗口 1/vim 缓冲区 1
这可行吗?如果不行,可以使用哪些统一的键绑定?
更新
我画了一张图(我知道颜色很糟糕)来说明我的想法。我使用 Dvorak 并将 vim hjkl 移动替换为 dhtn - 我会写左/下/上/右,以便让那些不使用 vim 的人也能理解。让我们将其保留在 iTerm2 而不是整个 OS X 桌面环境(以及 Gnome 和 KDE)。基本上可以归结为:
cmd+左/右/数字用于 Xmonad 中的工作区(或任何你喜欢的窗口管理器)
alt+左/右/数字适用于 tmux 中的 Windows
ctrl+alt+左/下/上/右/数字用于 vim 中的缓冲区
ctrl+alt+左/右/数字适用于 irssi 中的 windows
Ctrl+左/下/上/右对于 vim、irssi 和 zsh 中的 home/pg down/pg up/end,
在 OS X 中,ctrl+left/down/up/right 已经像上面一样工作,并且 alt+left/right 会按单词移动光标,而不是仅按字符移动光标的 left/right。
这难道不是相当合乎逻辑和直观吗?我是否遗漏了某些内容(冲突的键绑定)或者这是否可行?
答案1
我尝试整理一份备忘单或参考卡。在探索了各种可能性之后,我最终做了以下事情:
- 从瑞典语键盘切换到英语(国际)键盘,因为后者(在我看来)在编写代码时更胜一筹,并且仍然能够通过 alt+a/+w/+u+a/+o 输入åäö。
- 从 QWERTY 切换到 Dvorak,因为我喜欢按键的定位方式(这里没有科学主张)以便于编程(看过“程序员 Dvorak”,但太多了)。
- 将 vim hjkl 移动替换为 dhtn,将 dD 替换为 jJ(助记符:“junk”),将 K 替换为 H,然后ctrl+w 前缀为 ctrl+o。
- 一些小的添加(以及解除绑定的高级功能以轻松开始)...
TL;DR - 坚持使用可用的前缀,例如 tmux 中的 ctrl+a、vim 和 irssi 中的 ctrl+o (Dvorak)/ctrl+s (QWERTY)。这似乎影响最小,并且在某种程度上跨平台友好。