在Mac OS X中改善终端--反转控制和命令键映射

13

我试图在Mac OS X中获得与 KDE Konsole 相同的体验。

这是我的(过于复杂?)设置:

  • 我在“系统偏好设置”中交换了Control和Command。(不能没有这个)
  • Parallels允许您在Parallels应用程序级别上翻转Control和Command。因此,我可以撤消“系统偏好设置”(并在虚拟Linux中获得我想要的设置)

我希望 Mac OS X 终端应用程序也可以有这种针对每个应用程序的退出选项。这可能吗?


3
系统级别交换控制键和命令键会同时在终端中进行交换。您想选择不参与系统级别的键位交换吗? - Ben Stiglitz
6个回答

12
您需要的解决方案是KeyRemap4MacBook。它有Tiger、Leopard、Snow Leopard和Lion版本。
安装完成后,进入系统偏好设置 -> KeyRemap4MacBook 然后选择以下选项:
  • 更改Command_L键(左Command)
  • ---> Command_L更改为Control_L(除了终端、虚拟机、RDC)
  • 更改Control_L键(左Control)
  • ---> Control_L更改为Command_L(除了终端、虚拟机、RDC)
如果需要,您也可以重复以上步骤来更改Command_R(右Command)和Control_R(右Control)。在我的Macbook上测试并且可行。

3

这里有一个非常好用且键盘映射灵活的终端工具:iTerm2

我最喜欢使用的设置:iTerm + zsh + oh-my-zsh


3
您可以通过简单地ssh到Linux/Unix系统并直接在Mac屏幕上运行X11程序:ssh -X user@host_or_ipaddress,登录后,只需运行您想要的X11程序(例如: emacs& ),X11应用程序将出现在Mac显示器上。
优点:
  • X11窗口的工作方式与任何其他窗口一样,包括Exposé等特性...
  • 不需要仅在Parallels控制台窗口内工作
  • 相同的解决方案适用于任何Linux/Unix系统,远程或虚拟
  • 即使经过互联网,ssh连接也是安全的
技术信息:
  • "ssh -X"为ssh连接打开了X11转发,即X11显示连接通过ssh进行了安全的隧道传输
  • "ssh -X"还处理X11身份验证通道
  • X11.app在需要时会由launchd自动启动在OSX上
  • X11可以通过网络连接到显示器,这是它极少数的很酷的功能之一;-)

2
2016年的解决方案是使用开源程序Karabiner,它允许您重新映射修饰键和其他键,非常精细地,例如:
  • 仅重新映射左侧⌘ CmdOption键。
  • 仅为特定应用程序重新映射键,例如仅在Terminal、Emacs或虚拟机中。
例如,以下是如何将左侧⌘ Cmd键重新映射为Ctrl 仅在Terminal内部(并保持右侧不受影响,以便您仍然可以使用例如⌘ Cmd + Tab在应用程序之间切换):

karabiner-screenshot


我无法在Karabiner中看到执行此操作的选项。 - Avinash
Karabiner 可以像这样仅针对特定用户选择的应用程序使用吗?或者只能在 Karabiner 应用程序中列出的应用程序中使用?我想仅在使用 REAPER 时交换命令和控制键,但我不确定如何操作。 - Max Well

0

我跟你有完全一样的问题。我已经将 Command 键映射到 CAPS Lock,Control 键映射到 Command 键,但作为一位经常使用 Linux 的用户,我希望这两种设置尽可能相似。这是我的解决方法:

  • 安装 Keyboard Maestro(收费,但非常值得),并设置在登录时运行。
  • 在 KM 中定义宏,在终端中发送 CMD+{key}CTRL+{key}

如果你想重新映射很多键,那么这是很多工作量。但我已经自己完成了,你可以下载这个文件 kmmacros,双击即可安装。需要注意的是:

  • 您需要设置终端将选项设置为元键(终端 > 首选项 > 键盘)。
  • 这些绑定仅适用于emacs模式。备忘单应该很有帮助。
  • 大多数默认快捷键不再起作用(CMD-NCMD-C,...),而终端中的菜单也没有反映出来。对于一些冲突(新建窗口,关闭窗口),我采用了Gnome的快捷键。

0

您可以在“系统偏好设置”>“键盘和鼠标”>“键盘快捷键”中自定义单个应用程序使用的命令键。如果我正确理解您想要做的事情,这可能会帮助您实现目标。您可以将所有终端的命令键重新映射为使用控制键而不是命令键,以使它们不妨碍您...但是然后您可能需要对您ssh到的机器进行大量定制,以便它们使用命令键而不是控制键。

看起来您将不得不做大量的工作,只是为了让您使用小指而不是拇指作为修改键。

另一个可能性:用户首选项可以通过“defaults”命令进行操作。我还没有找到一种方法来使用它来控制修改键映射,但从逻辑上讲应该是可能的(如果您愿意进行大量挖掘)。如果是这样,那么您可以编写短脚本在Mac默认模式和交换模式之间切换。使用Quicksilver触发脚本,每当您使用终端时,您可以调用一个脚本,每当您离开时,您可以调用另一个脚本。再次强调,为了实现您想要的效果而达到这个目的是一个很大的痛苦,但它可能是可能的。

我认为没有干净简单的解决方案。

我见过第三方程序,可以更好地控制修改键,如果您愿意安装它们(可能是内核扩展)。他们也许能够达到您想要的效果,但我不记得它们的名字。如果您搜索可用于修复emacs和vi键的程序,您可能会找到它们。祝你好运。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接