Skip to content

Warpでbindkeyが使えない問題のWorkaround

2023年10月9日

昨日発見してしまったWarpの不便な点についてだ。

前回の記事

最近Warpというターミナルエミュレーターを使ってみている。 デザインがモダンな感じでなんかAI機能も搭載されていて面白いなと思っている。 しかし1つだけ不便に感じている部分がある。それは.zshrcの設定のbindkeyが使えないというものだ。

Warpのリポジトリのissueとしても上がっている。

とは言っても私がbindkeyを使用しているのは以下の部分のみだ。

# ghq with peco
function peco-src () {
  local selected_dir=$(ghq list -p | peco --query "$LBUFFER")
  if [ -n "$selected_dir" ]; then
    BUFFER="cd ${selected_dir}"
    zle accept-line
  fi
  zle clear-screen
}
zle -N peco-src
bindkey '^T' peco-src

# history with peco
function peco-history-selection() {
    BUFFER=`history -n 1 | tail -r  | awk '!a[$0]++' | peco`
    CURSOR=$#BUFFER
    zle reset-prompt
}

zle -N peco-history-selection
bindkey '^R' peco-history-selection

peco-srcghqで管理しているリポジトリをpecoで検索してcdする。peco-history-selectionはコマンド履歴をpecoで検索して実行する。

peco-history-selectionに関してはWarpがデフォルトで同等の機能を提供しているのでそっちに乗り換えれば問題ない。 しかし、peco-srcのような機能はWarpにない。bindkeyを使用せずに同じようなことはできるか。

解決方法

ごめんなさい。Workaroundってほどのものでもない。結構ダサい。

# ghq with peco (no bindkey)
function g () {
  local selected_dir=$(ghq list -p | peco --query "$LBUFFER")
  if [ -n "$selected_dir" ]; then
    cd ${selected_dir}
  fi
}

g関数を作成した。実行するときはgコマンドを打つ。 実行する時に打つキーはgとEnterの2つだけなので「実質キーバインド」みたいな感じ。 意外と不便ではない。まあいいんじゃないかな。

これでiTermの時とほぼ同じように使えるようになった。 そもそもの話、ターミナルソフト使わずにVSCodeで全部頑張るのが良いかもしれないがそれはそのうち。 おそらくVSCodeにはリポジトリを検索できる拡張機能あるんじゃなかろうか。 この辺とか。