はじめに
自分のmacのターミナルにzsh + preztoを入れ直しました。
その際、キーボード(HHKB)のHomeキー/Endキーで
ターミナルの行頭/行末に戻れなくなってしまい、2時間程潰してしまいました。
同じような悩みを抱えている人に向けて、
ターミナルでHomeキー/Endキーを押した際に行頭/行末に戻れるようにするための
設定方法を紹介いたします。
筆者の実体験を元に紹介しております
想定する読者
- macのターミナル環境を構築している人(zsh + prezo)
- ターミナルのHomeキー/Endキーに行頭/行末に飛ぶ動作を割り当てたい人
筆者の動作環境は以下の通りです。
- MacBook Air(2018)
- macOS Big Sur(ver 11.5.2)
本記事を読むことで得られるもの
- Macのターミナルの見栄えや操作感が良い感じになる
(本題ではなく、本記事の副産物的なものです) - ターミナルのHomeキー/Endキーに行頭/行末に飛ぶ動作を割り当てられる
(本題はこっち)
設定方法を紹介
背景
ターミナルを触っていて、ふと「何だか今のターミナルの設定使いにくいな…」
となることはありませんか。
筆者は.zshrcへ都度都度設定を追記してたこともあり、
設定が入り乱れていました。
特に、シンタックスハイライトが上手く動作していなかったのもあり、
この機会にターミナルの環境を見直そうと思ったわけです。
ターミナルの環境を見直すに当たって、
まっさらな状態から設定し直すつもりでしたが、一から自分で設定するのは辛いので
先人が築き上げてくれた便利パックであるPreztoを導入することにしました。
Preztoについては本題から逸れてしまうので、
気になる方は以下をご覧ください。
Preztoリポジトリ
https://github.com/sorin-ionescu/prezto
Zsh + Preztoの環境構築方法の参考ページ
https://dev.classmethod.jp/articles/zsh-prezto/
事象
デフォルトの状態だと、Homeキーを押した際に
ターミナルのトップまで戻ってしまいます。
この状態でHomeキーを押すと
ターミナルのトップまで戻ってしまいます。
期待している「行頭まで戻る」という動作にはなっていません。
原因
以下の2つが原因でした。
- OS側のターミナル設定で、Homeキーに対応するアクションが設定されていない
- ターミナルで使っているZsh(.zshrc)の設定で、上記項番1で設定したアクションに対する操作が「行頭もしくは行末に戻る」となっていない
ネットで日本語記事をググっていると、
項番2の設定のみ紹介されているケースが多かったのもハマる要因の1つでした。
使っているmacの環境によっては、項番2の設定だけでも良いのかもしれません。
最終的には以下の記事が参考になりました。
https://apple.stackexchange.com/questions/372386/i-switched-to-catalina-and-enabled-zsh-now-my-home-end-key-do-not-work-in-termin
解決方法
1と2の手順を紹介します。
まずは1から。
ターミナルを開いて、ターミナル > 環境設定 を選び、プロファイルを表示します。
キーボードタブを選択します。
「+」を押して、キーに対応したアクションを設定します。
HomeキーとEndキーのアクションをそれぞれ設定しましょう。
Homeキーはこちら
- キー:↖ Home
- 装飾キー:なし
- アクション:テキストを送信(\033[1~)
Endキーはこちら
- キー:↘ End
- 装飾キー:なし
- アクション:テキストを送信(\033[4~)
これで1の設定は完了です。
あとは、2を設定することで、ターミナル側でこのテキストを
「行頭/行末へ飛ぶ」と認識させます。
2の設定は簡単です。
~/.zshrcファイルへ以下の2行を追加します。
bindkey "\033[1~" beginning-of-line
bindkey "\033[4~" end-of-line
これで入力されたテキストが「行頭/行末へ飛ぶ」であると認識されます。
あとは、ターミナルを再起動しましょう。
Homeキーが行頭、Endキーが行末へ飛ぶようになっていることかと思います。
おわりに
ググって日本語記事が全然ヒットしなかったので記事にしました。
筆者が2時間悩んだ作業を、
この記事を見た人が10分で解決できるようになることを祈っております。
ここまで読んでいただき、ありがとうございました。
ご意見、コメントがありましたら、教えていただけると幸いです。