無気力生活 (ノ ´ω`)ノ ~゜

脱力系エンジニア。てきとーに生きてます。

tmuxセッション中でHomeキー、Endキーを有効にする

ここ数日ブロクへのアクセス数が妙に増える現象が発生しておりまして、不思議に感じてました私です_(:3 」∠)_

WSLで「普通」にDockerが動くようになっていた話(しかしdocker-composeは動かない) - 無気力生活 (ノ ´ω`)ノ ~゜

まあ契機としてはおそらくこの記事ですかね。やはりみんな興味ある話題なんですね、WSLでDocker使う方法。



さて、先々月くらいから本格的にtmuxを使い始めたのですが、結構困っていたことがあり。 まあタイトルに書いてあるとおり、tmuxのセッション中だと、Homeキー、Endキーが思ったとおりに動いてくれなかったんですよね(´・ω・`)

そのうち解決しようと思って放っておいたのですが、さすがにキャレットの移動が辛くなってきたため、今のうちに対応してしまおうかと思い立ったわけです。 自分の環境はこんな感じ

  • Terminal: Hyper
  • Tmux: 2.7
  • $TERM: xterm-256color

すごく簡単に原因だけ書くのですが、tmuxのセッション中だと、Home,Endのエスケープコードが変わってきます。 (Hyperを使っている場合、Ctrl+vしてからキーをタイプするとわかります)

macOS(bash, zsh)

home:    \e[OH~
end:    \e[OF~

tmux

home:  \e[1~
end:   \e[4~

mac側のコードの場合は別途.zshrcにbindしてましたが、tmux側のコードは未指定でした。 結論、こうすればtmuxでもHome, Endが動くようになります。

bindkey '\e[1~' beginning-of-line
bindkey '\e[4~' end-of-line

結構ピンポイントな情報がなく、探すのに苦労したのでメモ。

参考

https://wiki.archlinux.jp/index.php/Home%E3%82%84_End%E3%82%AD%E3%83%BC%E3%81%8C%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%AA%E3%81%84#Readline