iTerm2 – Shell Integration Utilities

iTerm2でShell IntegrationをするときにUtilitiesも一緒にInstallする?と聞かれますが、

ユーティリティって何よ。と思ったので、そのことについて。

ここにドキュメントがあります。

今日現在でUtilitiyをインストールするとこんな感じ。

user@mac:~$ curl -L https://iterm2.com/shell_integration/install_shell_integration_and_utilities.sh | bash
 % Total % Received % Xferd Average Speed Time Time Time Current
 Dload Upload Total Spent Left Speed
100 3638 100 3638 0 0 2703 0 0:00:01 0:00:01 --:--:-- 2704
Downloading script from https://iterm2.com/shell_integration/bash and saving it to /Users/yasuoo/.iterm2_shell_integration.bash...
Checking if /Users/yasuoo/.profile contains iterm2_shell_integration...
Appending source command to /Users/yasuoo/.profile...
Downloading imgcat...
Downloading imgls...
Downloading it2attention...
Downloading it2check...
Downloading it2copy...
Downloading it2dl...
Downloading it2getvar...
Downloading it2setcolor...
Downloading it2setkeylabel...
Downloading it2ul...
Downloading it2universion...
Adding aliases...
Done.
--------------------------------------------------------------------------------

The next time you log in, shell integration will be enabled.

You will also have these commands:
imgcat filename
 Displays the image inline.
imgls
 Shows a directory listing with image thumbnails
it2attention start|stop|fireworks
 Gets your attention
it2check
 Checks if the terminal is iTerm2
it2copy [filename]
 Copies to the pasteboard
it2dl filename
 Downloads the specified file, saving it in your Downloads folder.
it2setcolor ...
 Changes individual color settings or loads a color preset
it2setkeylabel ...
 Changes Touch Bar function key labels
it2ul
 Uploads a file
it2universion
 Sets the current unicode version
user@mac:~$

インストールされるコマンドの一覧が表示されてますね。

どこにInstall?

.profileの最後に以下の一行が追加されていました。

test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash"

homeにおいて欲しくないので.iterm2以下に移動しちゃおう、、、

コマンドは.iterm2以下に配置されます。

PATHは設定されないので先程の.iterm2iterm2_shell_integration.bashで aliasが貼られています。

alias imgcat='/Users/user/.iterm2/imgcat'
alias imgls='/Users/user/.iterm2/imgls'
alias it2attention='/user/yasuoo/.iterm2/it2attention'
alias it2check='/user/yasuoo/.iterm2/it2check'
alias it2copy='/Users/yasuoo/.iterm2/it2copy'
alias it2dl='/Users/yasuoo/.iterm2/it2dl'
alias it2getvar='/Users/yasuoo/.iterm2/it2getvar'
alias it2setcolor='/Users/yasuoo/.iterm2/it2setcolor'
alias it2setkeylabel='/Users/yasuoo/.iterm2/it2setkeylabel'
alias it2ul='/Users/yasuoo/.iterm2/it2ul'
alias it2universion='/Users/yasuoo/.iterm2/it2universion'

一つずつ試してみます。

imgcat

imgcatはiTerm2上で.jpeg/.pngなどを表示できるユーティリティ。

catと書いてありますが、stdinや指定されたファイルをescシーケンスを使ってコンソールに出力するユーティリティです。

オプションで–helpとかつけると、~/Downloadフォルダにファイルが作られてしまうので注意です。

lessなんかでパイプで受けるとescシーケンスを確認できます。意味ないけど。

imgls

小さなthumbnail付きでイメージの一覧を表示できます。

こちらも–helpとかつけるとDownloadされますので注意。

it2attention

これは長い時間がかかるスクリプトなんかに仕込む用。

$ sleep 10 ; it2attention start

を実行して他のwindowをactiveにすると10秒後にiTerm2のdock iconがピョンピョンはねて通知してきます。

$ ./configure && make && make install ; it2attention start

こんな感じで他の作業すると楽しい。かも。

it2check

iTerm2で実行しているか確認するコマンド

試しにターミナルで実行してみると。

user@mac:~$ it2check && echo 'this terminal is a iTerm2'
user@mac:~$ it2check || echo 'this terminal is not a iTerm2.'
this terminal is not a iTerm2.

これをiTerm2で実行すると以下。

user@mac:~$ it2check && echo 'this terminal is a iTerm2'
this terminal is a iTerm2
user@mac:~$ it2check || echo 'this terminal is not a iTerm2.'
user@mac:~$

it2copy

標準入力/指定ファイルをclipboardにコピーします。

コマンドの実行結果のコピペって何気に面倒くさいのでこれは便利!

$ ls -l | it2copy

これだけでclipboardに入るのであとはペーストするだけ!

Security上設定で iTerm2に Clipboardへのアクセス権を明示的に与える必要があります。

内部的にはエスケープシーケンスになおして iTerm2側に送ってるだけなので、ssh先だろうとなんだろうと動きます!

.iterm2/it2copyをリモート先にコピーしておくと便利に使えるかと思います。

it2dl

こちらはiTerm2側でファイルとして受け取る機能です。ローカルだと何もうれしくない機能です。

sshで入ってる先で it2dlが使えれば iTerm2を実行しているmac側のDownloadフォルダに自動的にダウンロードされます。

他の機能と同様、ファイルをbase64でencodeしてエスケープシーケンスとしてiTerm2側に送る事で実現しています。

base64を使うだけの簡単なshellスクリプトなのでこちらも リモートにコピーしておくと便利に利用可能です。

$ it2dl *.log

it2getvar

iTerm2のセッションが持っている変数を取得します。

$ it2getvar session.name
Default

って感じです。

it2setcolor

iTerm2が持っているカラーセットを変更するための機能、といえばいいでしょうか。

⌘+IでPreferencesを開いてColorタブを選択して、、、といった手間を省いて

CLIから さっとセッションの色を変更したい場合に使えます。

使い方は3つ。

$ it2setcolor 変えたい対象 色
$ it2setcolor preset プリセット名
$ it2setcolor tab default

presetはプリセット名を使って色を変更できる。

tab defaultはもとに戻したいとき。

個別に色を変えるときの指定は以下。

変えたい対象は Preference→ColorsタブのBasic ColorsとCursor Colorsのあたりを英語名で入れると思ってもらえば良いと思います。

  • fg: Foreground 文字色
  • bg: Background 背景色
  • bold: Bold 太字指定の色
  • link: Links リンクされた文字列
  • selbg: Selection 選択された背景色
  • selfg: Selected Text 選択された文字色
  • curbg: Cursor カーソル色
  • curfg: Cursor Text カーソルの下の文字色
  • underline: Underline Color 下線の色
  • tab: Tab Color タブの色

以下はColorの0〜15に対応した色

  • black
  • red
  • green
  • yellow
  • blue
  • magenta
  • cyan
  • white
  • br_black
  • br_red
  • br_green
  • br_yellow
  • br_blue
  • br_magenta
  • br_cyan
  • br_white

色の指定は以下

  • RGB: 三原色を16進数一桁:0〜Fで指定して4096色から選択
  • RRGGBB: 三原色を16進数二桁:0〜Fで指定して24bit色から選択
  • cs:RGB, cs:RRGGBB: カラースペース付の色指定 カラースペースは srgb/rgb/p3から選択

it2setkeylabel

Touch bar function keyがあるモデルでラベルを切り替えたい場合に使えるコマンド。

私のmacはtouch barモデルじゃないので、割愛

it2ul

it2dlの逆にファイルのアップロードができる。

文字列のやり取りでファイルを送受信するのでssh中でも利用可能

コマンドを叩くとファイル選択画面が開くのでそこで選択したファイルがアップロードされる。

自動的に.tar.gzにしてbase64 encodeして送信して、受信側で自動展開される。

download場所の指定と、tarに与えるオプションの指定が可能

$ it2ul            ← これだとカレントフォルダにダウンロードされる
$ it2ul Downloads/ ← これだとDownloadsフォルダにダウンロードされる

it2universion

現在のターミナルセッションのunicodeバージョンを指定する。

絵文字の幅テーブル情報が違う(一部の絵文字がHalf Width認識なのかな?)とのことでその場合に設定できる。

push popで現在の状態をスタック上に待避/復帰させる事が可能

$ it2universion set 8 ← これだとVersion 8になる
$ it2universion set 9 ← これだとVersion 9になる