37

我目前在 OS X 上使用 iTerm2 和 byobu,我不知道如何在 OS X 上垂直分割屏幕。在 Linux 上,我可以使用 Ctrl+F2 垂直分割我的屏幕,但在 OSX 上,没有t 工作,这要归功于 Apple 的不同键盘。

我到处搜索解决方案,但我无法弄清楚。我可以使用 Shift+F2 水平分割屏幕,但我需要能够垂直分割。有没有人想出如何让 byobu 的键盘绑定与 Apple 电脑一起工作?

提前致谢。

4

1 回答 1

73

看起来这个问题上有一个开放的错误

我能够将 iTerm2 配置为在 OS X 上本地使用 byobu,以及在 Ubuntu 14.04 服务器上通过 ssh 远程使用。

使用:

  • OS X 版本:10.9.5 Build 13F34
  • iTerm2 版本:Build 1.0.0.20140629

首先,在您的 OS X 系统偏好设置中,编辑您的键盘设置并删除或更改任何可能与 byobu 冲突的快捷方式设置(即Ctrl+ F1- F12)。

选项 1:使用转义序列的解决方法

这是一种解决方法,无需向FN键添加完整功能即可使用。这将允许您使用 byobu 转义键垂直拆分窗口:

  1. 开始byobu

  2. 通过运行设置您想要CtrlA行为:byobu-ctrl-a. 我选择使用 Emacs 模式。

  3. 运行byobu-config并选择或更改您的转义序列。我使用了新的默认值Ctrl+ SF12关键也是一个转义序列

  4. 现在您可以使用转义序列发出命令。尝试F12then%Ctrl+ sthen%垂直分割窗口。有关命令的完整列表,请尝试Ctrl+ sthen?F12then ?

选项 2:设置 iTerm2 键映射以充分使用所有FN键。

您可以将一些键映射添加到您的 iTerm2 配置文件以获取CTRLALTSHIFTFN键来使用 byobu。这很乏味,但我完成了练习,它似乎奏效了。我认为没有使用 iTerm2 自动保存这些键映射的方法。

  1. 打开 iTerm2 首选项并选择配置文件。
  2. 选择您要使用的配置文件。
  3. 打开终端窗格并在“报告终端类型”下选择“linux”。
  4. 打开 Keys 窗格并手动添加以下键绑定。这是一个如何添加一个键绑定的示例:

    • 单击“+”图标。
    • 在第一个字段中输入要映射的键盘快捷键。例子:CTRL + F2
    • 在操作字段中选择“发送转义序列”。
    • 在第三个字段中输入字符。例子:[1;5Q

您可以通过参考tmux 源代码来确定此处未列出的任何键序列的控制字符。

对所有这些映射重复此操作,以使相应的 byobu 命令起作用:

  • CTRL+ F2:[1;5Q
  • CTRL+ SHIFT+ F2:[1;6Q
  • ALT+ LEFT:[1;3D
  • ALT+ RIGHT:[1;3C
  • ALT+ UP:[1;3A
  • ALT+ DOWN:[1;3B
  • CTRL+ F3:[1;5R
  • CTRL+ F4:[1;5S
  • CTRL+ SHIFT+ F3:[1;6R
  • CTRL+ SHIFT+ F4:[1;6S
  • SHIFT+ ALT+ LEFT:[1;4D
  • SHIFT+ ALT+ RIGHT:[1;4C
  • SHIFT+ ALT+ UP:[1;4A
  • SHIFT+ ALT+ DOWN:[1;4B
  • CTRL+ F5:[15;5~
  • CTRL+ SHIFT+ F5:[15;6~
  • ALT+ F6:[17;3~
  • CTRL+ F6:[17;5~
  • ALT+ PPAGE:[5;3~
  • ALT+ NPAGE:[6;3~
  • CTRL+ F8:[19;5~
  • ALT+ SHIFT+ F8:[19;4~
  • CTRL+ SHIFT+ F8:[19;6~
  • CTRL+ F9:[20;5~
  • ALT+ F11:[23;3~
  • CTRL+ F11:[23;5~
  • ALT+ F12:[24;3~
  • CTRL+ F12:[24;5~
  • ALT+ INS:[2;3~

概括

为了让事情发挥作用,我们需要:

  • 消除与 OS X 键盘快捷键的冲突。
  • 编辑终端键映射以在使用功能键时发送正确的转义序列。
  • 将 iTerm2 终端类型设置为“Linux”,这会将 TERM 环境变量设置为“linux”。Byobu 和/或 Tmux 似乎对此很敏感。

关于转义序列的其他一些参考:SO 链接xterm-keys.c


新窗口和窗格的默认目录

tmux 1.8 和 tmux 1.9 ( SrcSrcSrc)之间的 tmux 窗口默认目录看起来有些不同。如果您将 byobu 与 tmux 1.9 一起使用,您可以尝试将其添加到您的~/.byobu/keybindings.tmux文件中,这样当您创建新窗口或垂直/水平拆分时,它们会在与当前窗格相同的目录中打开:

unbind-key -n F2
bind-key -n F2 display-panes \; new-window -c "#{pane_current_path}" -n -
unbind-key -n C-F2
bind-key -n C-F2 display-panes \; split-window -hc "#{pane_current_path}"
unbind-key -n  S-F2
bind-key -n S-F2 display-panes \; split-window -vc "#{pane_current_path}"
unbind-key %
bind-key % display-panes \; split-window -hc "#{pane_current_path}"
unbind-key |
bind-key | display-panes \; split-window -vc "#{pane_current_path}"

按下F5以重新加载设置。

于 2014-10-20T16:10:33.270 回答