🛠

TabbyのHotkeysを良い感じにカスタマイズする

2022/01/16に公開

はじめに

普段の業務では、主に Vue.js や Rails を書いている @kt15 です。先日、GitHub のトレンドを漁っていたところ、Tabby という良さげなターミナルを見つけました。本記事では、Tabby へ乗り換えるために変更した Hotkeys をまとめていきます。

Tabbyとは

Windows、macOS、Linux などマルチプラットフォームで動作するモダンなターミナルです。
下記の公式ドキュメントを見ていただけると、大体何ができるか把握できると思います。

https://tabby.sh/

Hotkeys を設定していく

Hotkeys の設定方法

Tabby の設定ファイルは YAML 形式で管理されています。Hotkeys は下記のいずれかの方法で設定していくことになると思います。

  • Preferences → Hotkeys(GUI 上で直感的に設定できる)
    Hotkeys
  • Preferences → Config file(直接 YAML を編集する)
    Config file

特に前者の体験が良くて、このように設定したい Hotkey を選び、割り当てたいキーを入力するだけで設定できます。
Hotkeysで設定

変更する Hotkeys

ここからは筆者が変更した Hotkeys を列挙していきます。
また、最後に後述する変更が反映された設定ファイル(YAML 形式)も載せているので、もし同じ設定にしたい方がいれば、そちらを使用してください。

Split to the right(ウィンドウを左右に分割する)

Command + shit + D → Command + D
Split to the right

Split to the bottom(ウィンドウを上下に分割する)

Command + D + Command + shit + D
Split to the bottom

Clear terminal(画面の表示をクリアする)

Command + K → Command + R
Clear terminal

Focus the pane on the right(右側のパネルにフォーカスする)

Command + ]
Focus the pane on the right

Focus the pane on the left(左側のパネルにフォーカスする)

Focus the pane on the right と対になるように、こちらも Command + [ と設定したいところですが、上手く設定できませんでした。
試したのは下記です。

  • 他と同様に Hotkeys で設定
    • Command + [ と入力しても認識してくれない
  • yaml を直接編集
    • 設定はできるが、上手く機能しない

Tabby の issue を眺めていたところ、似たような issue がありました。
https://github.com/Eugeny/tabby/issues/5246

上記が修正されるか分かりませんが、急ぎでもないので一旦 Focus the pane on the left には何も設定せず、上記の issue を追ってみようと思います。

New window(新規ウィンドウを立ち上げる)

Command + N
New window

Copy current path(カレントパスをクリップボードにコピーする)

Command + P
Copy current path

Toggle terminal window(ターミナルの表示/非表示を切り替える)

Ctrl + Space → 何も設定しない
筆者の環境では、Ctrl + Space英字↔かな を切り替えているためバッティングした & あまり使う機会がなさそうだと判断したので、キーの割り当てを解除しました。
Toggle terminal window

Show pane labels(パネルに設定しているラベルを表示する)

Command + Shift → 何も設定しない
筆者の環境では、Command + Shift + 4 で選択範囲のスクショを撮る設定になっており、それとバッティングしたためキーの割り当てを解除しました。
Show pane labels

Scroll terminal to buttom(1番下までスクロールする)

Command + Down
Scroll terminal to buttom

最終的な設定ファイル

こちらがこれまでの変更を反映した設定ファイルになります。
同じ構成にする場合は下記の hotkeys の部分を設定ファイルに反映してください。
Preferences → Config file で複数行のペーストができなかった場合は Preferences → Config file → Show config file で、直接 config.yaml を開いて編集してください)

config.yaml
version: 3
profiles: []
hotkeys:
  copy-current-path:
    - --P
  ctrl-c:
    - Ctrl-C
  copy:
    --C
  paste:
    --V
  clear:
    - --R
  select-all:
    --A
  zoom-in:
    --=
    --Shift-=
  zoom-out:
    ---
    --Shift--
  reset-zoom:
    --0
  home:
    --Left
    - Home
  end:
    --Right
    - End
  previous-word:
    --Left
  next-word:
    --Right
  delete-previous-word:
    --Backspace
  delete-next-word:
    --Delete
  search:
    --F
  pane-focus-all:
    --Shift-I
  restart-telnet-session: []
  restart-ssh-session: []
  launch-winscp: []
  settings:
    --,
  serial:
    - Alt-K
  restart-serial-session: []
  toggle-window: []
  new-window:
    --N
  new-tab:
    --T
  profile: {}
  profile-selectors: {}
  toggle-fullscreen:
    - Ctrl+⌘+F
  close-tab:
    - --W
  reopen-tab:
    --Shift-T
  toggle-last-tab: []
  rename-tab:
    --R
  next-tab:
    - Ctrl-Tab
  previous-tab:
    - Ctrl-Shift-Tab
  move-tab-left:
    --Shift-Left
  move-tab-right:
    --Shift-Right
  rearrange-panes: []
  tab-1:
    --1
  tab-2:
    --2
  tab-3:
    --3
  tab-4:
    --4
  tab-5:
    --5
  tab-6:
    --6
  tab-7:
    --7
  tab-8:
    --8
  tab-9:
    --9
  tab-10:
    --0
  tab-11: []
  tab-12: []
  tab-13: []
  tab-14: []
  tab-15: []
  tab-16: []
  tab-17: []
  tab-18: []
  tab-19: []
  tab-20: []
  split-right:
    - --D
  split-bottom:
    - --Shift-D
  split-left: []
  split-top: []
  pane-nav-right:
    - --]
  pane-nav-down:
    ---Down
  pane-nav-up:
    ---Up
  pane-nav-left: []
  pane-nav-previous: []
  pane-nav-next:
    ---]
  pane-maximize:
    ---Enter
  close-pane:
    --Shift-W
  profile-selector:
    --E
  switch-profile:
    --Shift-E
  duplicate-tab: []
  scroll-to-bottom:
    - --Down
terminal:
  frontend: xterm
  fontSize: 14
  fallbackFont: null
  linePadding: 0
  bell: 'off'
  bracketedPaste: true
  background: theme
  ligatures: false
  cursor: block
  cursorBlink: true
  hideTabIndex: false
  hideCloseButton: false
  rightClick: menu
  pasteOnMiddleClick: true
  copyOnSelect: false
  scrollOnInput: true
  altIsMeta: false
  wordSeparator: ' ()[]{}''"'
  colorScheme:
    name: Material
    foreground: '#eceff1'
    background: rgba(38, 50, 56, 1)
    selection: null
    cursor: '#FFCC00'
    cursorAccent: null
    colors:
      - '#000000'
      - '#D62341'
      - '#9ECE58'
      - '#FAED70'
      - '#396FE2'
      - '#BB80B3'
      - '#2DDAFD'
      - '#d0d0d0'
      - rgba(255, 255, 255, 0.2)
      - '#FF5370'
      - '#C3E88D'
      - '#FFCB6B'
      - '#82AAFF'
      - '#C792EA'
      - '#89DDFF'
      - '#ffffff'
  customColorSchemes: []
  warnOnMultilinePaste: true
  searchRegexAlwaysEnabled: false
  searchOptions:
    regex: false
    wholeWord: false
    caseSensitive: false
  detectProgress: true
  scrollbackLines: 25000
  font: Menlo
  autoOpen: false
  useConPTY: true
  environment: {}
  setComSpec: false
  profile: local:default
  showBuiltinProfiles: true
  showRecentProfiles: 3
ssh:
  warnOnClose: false
  winSCPPath: null
  agentType: auto
  agentPath: null
  x11Display: null
configSync:
  host: https://api.tabby.sh
  token: ''
  configID: null
  auto: false
  parts:
    hotkeys: true
    appearance: true
    vault: true
clickableLinks:
  modifier: null
appearance:
  dock: 'off'
  dockScreen: current
  dockFill: 0.5
  dockSpace: 1
  dockHideOnBlur: false
  dockAlwaysOnTop: true
  flexTabs: false
  tabsLocation: top
  cycleTabs: true
  theme: Standard
  frame: thin
  css: '/* * { color: blue !important; } */'
  opacity: 1
  vibrancy: false
  vibrancyType: blur
profiles: []
profileDefaults: {}
recoverTabs: true
enableAnalytics: true
enableWelcomeTab: true
electronFlags:
  - - force_discrete_gpu
    - '0'
enableAutomaticUpdates: true
version: 1
vault: null
encrypted: false
enableExperimentalFeatures: false
pluginBlacklist: []
hacks:
  disableGPU: false

おわりに

今回は Tabby の Hotkeys をカスタマイズしていきました。筆者としてはなかなか満足のいく形に落ち着いたので、しばらくはこの構成で使ってみようと思います。

参考

Discussion