LoginSignup
3
1

More than 5 years have passed since last update.

ターミナルでCtrl+Shift+Vとかしたかった

Posted at

CUI環境を整備してて、neovimとかfish-shellでCtrl+Shift+VとかCtrl+3使いたかった話です。

結論

ファンクションキーの代用とすることにして、iTerm2の設定で^3で"^[[1;2R"(F15)を送るようにした。

経緯

不勉強ながらただそれぞれの設定にそう書けばいいんだろうと思ってたんだけど。そうじゃないんだね。
そもそもCtrl+なんとかっていうはASCIIに含まれてて、ターミナルからコントロールキーとアルファベットキーが別々に送られるわけじゃない。ただ1バイトでぽんって送られる。

なんでASCIIにある範囲はいいけど、ない奴、Ctrl+3とかは何を送るかっていうのが自明じゃない。

んで1バイトに収まらない情報はエスケープコード(\e, ^[, \x1b, \033などで表される)に連ねて送るっていうルールがある。エスケープシーケンス。

それでもCtrl+3をエスケープシーケンスでどう送るかっていうルールはないんだけど、ファンクションキーはエスケープシーケンスでどう送るっていうコンセンサスがある。

infocmp xterm-256colorなんかでも見れる。

なのでCtrl+3とかはF15キーとして振る舞うようにiTerm2に設定することにした。

設定

iTerm2の設定>Profiles>どれか>KeysのKey Mappingsで^3(Ctrl+3)の設定でActionを”Send Escape Sequence"に、Esc+を"[1;2R"

これでiTerm2から"^[[1;2R"が送られるようになった。

あとはこのシーケンスがF15であるとして共通に理解できるように各環境を設定する。

iTerm2のTerminal typeをxterm-256color
config.fishでset -x TERM xterm-256color
.tmux.confでsetw -g xterm-keys on

あたり。

これでneovimとかfishでCtrl+3(F15)が使えるようになった。ただ、fishはF21以上は使えないっぽい(ソース見たらわざわざコメントアウトしてあった)

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1