[iTerm2入門]開発効率アップの基本機能/おすすめ設定をチートシートLikeにまとめたよ

# iTerm2の基本機能をざっと学ぶ + チートシート
<img width="771" alt="iterm2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/403039/d3b3661d-a7c7-56e1-3612-1ced3343f80d.png">

本記事は[Zenn](https://zenn.dev/kumamoto/articles/bb3f416e34349e9ae13f)に転載済み。追記ある場合はしばらくは両方とも更新するようにします。

## はじめに

iTerm2はMac標準のTerminalと同じコマンドラインツールです。

iTerm2は、
(1)無料で(2)便利機能がたくさんあり(3)美しいデザイン！
と優れた点が多々あります。標準のTerminalからの乗り換えも容易です！
[ここのページからダウンロード](https://www.iterm2.com/index.html)してみてください。

この記事ではiTerm2の基本機能とキーボードショートカットをまとめています。
さらに随時筆者の方で追記していく予定です！
※これもぜひ載せろや！！(ﾟДﾟ)ってのがあったらコメントしてくださると有難し

## ポインター系


- ***クリック選択***

iTerm2ではマウスでテキストをドラックで選択するだけでクリップボード[^1]にコピーされます。

| アクション | 説明 |
|:-:|:-:|
|ダブルクリック   |単語選択   |
|トリプルクリック   |行選択   |
|クオデュラプル(4重)クリック   |スマート選択(URLやemailアドレスだけ選択)   |


もっと極めたい方はカスタムポインタをPreferences(cmd + ,で開けるぞい)→pointerから設定できます。
![スクリーンショット 2020-07-30 0.58.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/403039/4eae8f7d-ca05-51fd-a05a-be0dfc44196e.png)

私はドキュメントで勧められている通り、Bindingsで”トラックパッドで3本指タップ”した時 =”smart selection” 、にしました。(元に戻したければLoad Defaultsを押しましょう。)


- ***shiftやcmdを用いた選択***

| アクション | 説明 |
|:-:|:-:|
|任意の場所クリック + 別の任意の場所shift + クリック   |範囲選択   |
|任意の場所cmd + ドラックの繰り返し   |非連続の範囲選択   |
|URL/ファイル名をcmd + クリック   |URL/ファイルを開く   |
※ファイル名の後にコロン+数字があればその行が開く、ファイルはそのプロンプトがいたディレクトリにある物のみが探される。


- ***数値変換***

| アクション | 説明 |
|:-:|:-:|
|10進数を右クリック   |16進数へ変換された数値の表示   |
|16進数を右クリック   |10進数へ変換された数値の表示   |
|Unixタイムスタンプを右クリック   |ローカルタイムへ変換された数値の表示   |




## 画面/カーソル操作系


iTerm2のタブはブラウザ(SafariとかChrome)のように扱えるんです！例えば(ドラッグ&ドロップを使った)タブの並び替え、別のウィンドウにタブを出したり入れたり、、、等々。


- ***タブの操作***

| アクション | 説明 |
|:-:|:-:|
|cmd + t   |新規タブ作成   |
|cmd + 右矢印 / 左矢印   |タブ移動   |
|cmd + 数字   |ダイレクトにその番号のタブに移動   |
|cmd + w   |タブを閉じる   |
|タブをミドルボタンでクリック   |タブを閉じる   |


- ***ウィンドウの操作***

| アクション | 説明 |
|:-:|:-:|
|cmd + n   |新規ウィンドウ作成   |
|cmd + enter   |ウィンドウ最大化 / 元に戻す(最大化時は背景の透過はオフに)   |
|cmd + u   |ウィンドウの透過オフ / 元に戻す   |
|cmd + opt + 数字   |ダイレクトにその番号のウィンドウに移動   |


- ***分割(スプリット)の操作***

| アクション | 説明 |
|:-:|:-:|
|cmd + d   |縦にスプリット[^2]したペイン[^3]を出す   |
|cmd + shift + d   |横にスプリットしたペインを出す   |
|cmd + shift + enter   |ペインを最大化/元に戻す   |
|cmd + w   |スプリットしたペインを閉じる   |
|cmd + opt + 右矢印 / 左矢印   |スプリットされたペインを移動   |
|cmd+ ] / [    |スプリットされたペインを移動   |



- ***ロケーションのマーク/ジャンプ***

| アクション | 説明 |
|:-:|:-:|
|cmd + shift  + m   |場所をマーク   |
|cmd + shift + k   |マークをキル(削除)   |
|cmd + shift + j  |マークした場所へジャンプ   |
|cmd + shift + 下矢印   |マークした場所へジャンプ(複数マークしているときはこちらで)   |

treeする前にマークしたりするとジャンプで帰ってこれてべんり！
![mark (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/403039/9170197a-c0a3-8558-3e85-5dbfdac5d114.gif)


私は.bash_profileでset -o viとしてviライクなキーバインドにする方が好きなので下記の「カーソル移動系」と「文字編集系」は使ってませんが一応載せます。(コピーモードは使います。)

- ***カーソル移動/編集***

| アクション | 説明 |
|:-:|:-:|
|ctrl + f   |1文字進める   |
|ctrl + b   |1文字戻る   |
|ctrl + a   |先頭に   |
|ctrl + e   |末尾に   |
|ctrl + d   |カーソル上の一文字消す(esc + dでも)   |
|cmd + shift + c   |コピーモード(viライクにカーソル移動/コピー等も)   |

ちなみにコピーモードはEdit → copyモードでもいけます。
カーソルを移動させたり文字をコピーできます。

## 履歴/状態保存系


- ***検索/履歴/コマンド***

| アクション | 説明 |
|:-:|:-:|
|cmd + f   |検索(tabやshift + tabで移動)   |
|cmd + shift + h   |ペースト履歴の確認   |
|tabを2回   |オートコンプリート(補完)   |
|ctrl + r   |clearと同じ(プロンプトがきれいに)   |


- ***アレンジメントの保存、復活、削除***

| アクション | 説明 |
|:-:|:-:|
|cmd + shift + s   |アレンジメント保存   |
|cmd + shift + r   |ショートカット が設定されているアレンジメントをリストア   |
|Window > Restore Window Arrangement   |保存されているアレンジメント一覧/クリックでリストア)   |
|Preferences > Arrangements   |マイナス-ボタンで指定のアレンジメントを削除   |
|Preferences > Arrangements   |Set Defaultでcmd + shift + rで開くアレンジメントになる   |

ちなみにアレンジメントとはその時のウィンドウの状態のことです。
Iterm2ではそのアレンジメントのスナップショットを保存したり、リストア(復活)させたりすることが出来ます。

キーの操作をさらに極めたいなら、
Preferences > Keysでグローバルなキーショートカットを設定できます。
また、Preferences > Profiles > Keysで特定のプロファイルにのみ影響するキーショートカットを設定できます。
他にもoptとcmdの機能を交換するためにリマップすることも出来ますし特定の時だけリマップを適用しない、といったことも出来ます。

とりあえず最初はHotkeyの設定だけしておけば良いと思います。
(設定方法は下記の「おすすめな設定編」を参照してください。)

## おすすめな設定編

- ***Hotkey***

Preferences > Keys > Hotkey

| アクション | 説明 |
|:-:|:-:|
|cmd + i   |iTerm2のウィンドウを瞬時に出したり閉じたり|
※cmd + iはあくまで私のオススメなだけで他のキーバインドの設定でももちろんおk。
これでキーボードのみでターミナルの画面を出したり引っ込めたりが簡単に出来るように！

- ***ヴィジュアルベル***

Preferences > Profiles > Terminal > Flash visual bellにチェック

これでbellの警告が画面いっぱいに一瞬映るようになる。
(音楽とか流してるとビープ音聞こえないのでこの機能は有り難い)

- ***フォントを見やすくする(ricty diminishedの導入も！)***

Preferences > Profiles > Text > Font

上記でフォントやサイズを好きなようにカスタマイズできます。

私はフォントをRicty Diminished、サイズを16に設定できます。

こうすることで誤って全角入力をした時に下の画像のように分かりやすく表示してくれるのでオススメです。
![スクリーンショット 2020-08-09 22.19.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/403039/6bb5b388-290e-24de-3cf3-3836c0ff5f97.png)

ちなみにRicty Diminishedはおそらく最初からMacに用意されているフォントではなく新規にインストールが必要かと思います。Ricty Diminishedをhomebrewで簡単に導入するには@ponsuke0531さんの『[HomebrewでRicty Diminishedをインストールする方法](https://qiita.com/ponsuke0531/items/0709f1e73a9cb1df55de)』のQiita記事がわかりやすくてオススメです！参照してみてください。

- ***tmux使ってるときもクリップボードを利用出来るようにする***

Preferences > Selection

上記の中の『Applications in terminal may access clipboard』にチェックを入れる。

## ここも抑えておきたい注目の機能たち

筆者が開発の際には正直使いこなせていない機能たち。でもたぶんべんり！！(｀・ω・´)


- ***インスタントリプレイ機能***

| アクション | 説明 |
|:-:|:-:|
|cmd + opt + b   |過去にウィンドウに何が映されたかをステップバックで確認出来る   |


- ***Undoクローズ***

| アクション | 説明 |
|:-:|:-:|
|cmd + z   |一定時間内であれば閉じたタブを再度開く   |

※Preferences > Profiles > SessionでUndo出来るまでのタイムリミットを設定できる。


- ***パスワードマネージャー***

iTerm2はキーチェインの中にパスワードを保存する機能もある。
Window > Password Mangerメニューからパスワードマネージャーを開いてパスワードを打ち込めば良い。

| アクション | 説明 |
|:-:|:-:|
|cmd + shift + f   |パスワードマネージャーを開く   |

- ***タイムスタンプ***

それぞれのラインごとのタイムスタンプを表示してくれるので、メッセージを表示するのにどれだけ時間がかかったか知ることが出来る。

| アクション | 説明 |
|:-:|:-:|
|cmd + shift + e   |タイムスタンプを表示(View > Show Timestamps)   |

- ***Expose Tabs機能***

全てのタブを同時に検索する機能、タブを開きすぎている時にはべんりそう！

| アクション | 説明 |
|:-:|:-:|
|cmd + opt + e   |全てのタブを同時に検索   |

他にもユーザーが設定した正規表現をハイライトする***「トリガー」機能***や、色盲の方向けの***「コントラストのミニマム化」機能***、それに***シェルインテグレーション***等々私が把握できていない機能/設定が多々あるので、ドキュメント読解みなさんもチャレンジしてみてください！

※***シェルインテグレーションに関してはいつかここに追加するか分量によっては別のQiita記事にてまとめます。***

## 参考にしたサイト/記事


- [General Usage/ iTerm2公式ドキュメント](https://www.iterm2.com/documentation-general-usage.html)
- [Highlights for New Users / iTerm2公式ドキュメント](https://www.iterm2.com/documentation-highlights.html)

安心と信頼の公式ドキュメント


- [iTerm2: Useful Tips and Tricks / Youtube](https://www.youtube.com/watch?v=-VSY2nCKLGc)

英語のYoutubeビデオだが聞き取れなくても横にキーボードを置きながらterminalでの操作を見せてくれるので問題なし！続編も良さげ(まだ見れてない)


- [俺よりiTerm使いこなしてるやつおる？/ハイパーマッスルエンジニアになりたい(個人ブログ)](https://www.rasukarusan.com/entry/2019/04/13/180443)

これがきっかけでiTerm2に切り替えた。iTerm2の便利機能に感動した様をわかりやすく書いてくれていてモチベーションアップにも繋がる


- [独学エンジニア](https://dokugaku-engineer.com/)

最近おすすめのプログラミング学習サイト、説明が明瞭でわかりやすい。
現在無料期間中。VScodeやiTerm2、Dockerといったツールに関する説明もある。


[^1]: クリップボード(clip board)：PC上で、一時的にデータを保存できる共有のメモリ領域のこと
[^2]: スプリット(split)：分割すること
[^3]: ペイン(pane)：ウィンドウ内部を機能別に区画した場所のこと