0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

iTerm2でタイムスタンプ付きのログの出力とpreztoのインストールを行う。

Last updated at Posted at 2023-02-25

はじめに

普段使っているiTerm2の設定を改めて行おうと思った際、以前設定したときのやり方を完全に忘れていたので、次にクリーンインストールなどを行う際に備えて手順を残しておこうと思います。

※2023/03/12 EC2・Linux向けの記事も書きました。

iTerm2でタイムスタンプ付きのログを出力

iTerm2のログ出力設定はiTerm2のメニューから「Settings」→「Profiles」の「Session」タブから行えます。

職場の同僚に聞くとタイムスタンプ付きのログが出力されていないと言っていた人もいたので以前はデフォルト値が違っていたのかもしれませんが、最新版であれば「Automatically log session input to files in:」をチェックしてログの出力ディレクトリを指定し、「Log plain text」をチェックしてログの表示を見やすくすることで以下のログ出力例のようにタイムスタンプ付きで表示されるかと思います。

Monosnap_20230223_183912.png

タイムスタンプ付きのログ出力の例
[2023/02/05 10:48:24.675 AM] Last login: Sun Feb  5 10:47:35 on ttys001
[2023/02/05 10:48:24.763 AM]    ~  ssh -l ec2-user -i ~/keypair/test.pem xx.xx.xx.xx
[2023/02/05 10:48:27.521 AM] Last login: Sun Feb  5 01:47:39 2023 from xxxx.xxxx.xx.xx.jp

[2023/02/05 10:48:27.521 AM]        __|  __|_  )
[2023/02/05 10:48:27.521 AM]        _|  (     /   Amazon Linux 2 AMI
[2023/02/05 10:48:27.521 AM]       ___|\___|___|

[2023/02/05 10:48:27.521 AM] https://aws.amazon.com/amazon-linux-2/
[2023/02/05 10:48:27.521 AM] 14 package(s) needed for security, out of 14 available
[2023/02/05 10:48:27.521 AM] Run "sudo yum update" to apply all updates.
[2023/02/05 10:48:27.545 AM] [ec2-user@ip-10-1-0-29 ~]$ exit
[2023/02/05 10:48:28.784 AM] ログアウト

もし、上記の設定を行ってもタイムスタンプが表示されない場合は、「Advanced」の検索ボックスに「timestamp」と入力することで以下「Session」の項目が表示されるので、「When logging plain text, include timestamps for each line?」を「Yes」にします。

Monosnap_20230223_184628.png

もちろん、「No」にすることでタイムスタンプ表示を行わないようにすることもできるので、タイムスタンプを表示させたくない場合は「No」としてください。

ウィンドウの右側にタイムスタンプを表示

上記の「Profiles」→「Session」タブから「Show timestamps」の設定を変更することで、ウィンドウの右側にタイムスタンプを表示させることができます。

Monosnap_20230223_185800.png

ずっと表示させておくこともできますが、タイムスタンプ分画面が狭くなるので、私は「When mouse hovers over scroll bar」に設定してマウスオーバーしたときだけ表示させるようにしています。

preztoとは

現在のMacOSの標準シェルとなっているzshのフレームワークとなり、テーマを変えることで、見栄えを変えたり操作感を変えたりすることができます。

prezto以外にもzshのフレームワークは色々とありますが、preztoは他のフレームワークと比べて比較的軽量に動作するのと、Gitの状態がひと目で分かること、また見栄えが良いテーマがあった(重要)ので常用しています。

Monosnap_20230223_191455.png

以下preztoインストールとセットアップ手順です。

preztoのインストール

GitHubにpreztoのページがあるため、以下のGitHubページに沿ってインストールしていきます。

インストール手順通り、リポジトリをクローンします。

リポジトリのクローン
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"

以下コマンドを実行し、preztoのディレクトリに既存のzsh各種構成ファイルのコピーとシンボリックリンクの設定を行います。

setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
  ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done

現在のMacOSのデフォルトはzshなので以下は実行しなくても良いですが、以下でデフォルトのシェル設定を変更します。

デフォルトシェルの設定
chsh -s /bin/zsh

ウィンドウを開き直すことでpreztoのデフォルトのテーマとなるsorinが適用され、以下の表示がされるかと思います。

Monosnap_20230223_194226.png

テーマの確認

以下コマンドを実行することで、選択できるテーマの確認とそれぞれのテーマを選択した際の表示例が一覧で確認できます。

表示形式は後から変更することができるので、自分の好みに近いテーマを見つけます。

選択可能なテーマの確認
prompt -l
テーマ表示例の確認
prompt -p

以下、コマンド実行例。

Monosnap_20230223_194924.png

preztoのテーマとモジュールについて

ユーザのホームディレクトリに存在する.zpreztorc(実際には/Users/[ユーザディレクトリ]/.zprezto/runcoms/zpreztorcへのリンク)に適用するpreztoのテーマと追加したいモジュールを設定します。

モジュールは設定することで短縮文字でコマンドが実行できたり、コマンド履歴から入力したいコマンドを補完してくれるオートサジェストが有効になったりするので自分の使い方に応じて使うモジュールを選択しましょう。

デフォルトで設定できるモジュールは以下preztoのモジュールディレクトリにあり、ここにあるものであれば.zpreztorcの所定の場所に名前を記載するだけで使用できます。

また、各モジュールディレクトリのREADMEを見ると、どのような動きをするモジュールなのかがわかります。

ここからは個人によって好みや有効にしたいモジュールが異なるため、私の例となりますが、私はpreztoのテーマをsorinからagnosterに変更し、syntax-highlightingautosuggestionsgitモジュールを追加で設定しています。

モジュールはデフォルトで有効となっているモジュール以外にもたくさんありますが、あまり多くモジュールを読み込ませても動作が重くなるので、使うものだけ最低限にしたほうが良いです。

以下で私が追加したモジュールについて簡単に紹介します。

syntax-highlighting

syntax-highlightingはコマンドの構文を強調表示してくれるモジュールでコマンドとオプション、引数など色分けして表示してくれるので可読性が増します。

プロンプトの画面を日頃多く眺めている人に便利です。

autosuggestions

オートサジェストを行ってくれるautosuggestionsモジュールは、イメージとしてはCisco等のネットワーク機器で実装されているタブキーによるコマンド補完と同じような動きをするモジュールで、途中までコマンドを入力すれば、コマンド履歴から薄い文字でサジェストしてもらえ、右キーを押すとサジェストされたコマンドが実行できる状態になります。

元々Cisco機器などをコマンドで触っていた人は離れられなくなるかもしれません(笑)

git

Gitのリポジトリのステータス情報等を表示することができるモジュールです。

また、Git関連のエイリアスも提供されているため、Gitの各種情報をエイリアスから表示させたりもできます。

モジュールとテーマの変更

以下設定箇所の抜粋となりますが、以下の箇所の設定を修正&追記しています。

~/.zpreztorcの設定箇所の抜粋
(略)
# Set the Prezto modules to load (browse modules).
# The order matters.
zstyle ':prezto:load' pmodule \
  'environment' \
  'terminal' \
  'editor' \
  'history' \
  'directory' \
  'spectrum' \
  'utility' \
  'git' \                        # 左記git追加
  'completion' \
  'syntax-highlighting' \        # 左記syntax-highlighting追加
  'history-substring-search' \
  'autosuggestions' \            # 左記autosuggestions追加
  'prompt'
(略)
#
# Prompt
#

# Set the prompt theme to load.
# Setting it to 'random' loads a random theme.
# Auto set to 'off' on dumb terminals.
#zstyle ':prezto:module:prompt' theme 'sorin'            # デフォルトのsorin行をコメントアウト
zstyle ':prezto:module:prompt' theme 'agnoster'    # テーマをagnosterに変更

(略)

注意点として、追加するモジュールには指定の順序で適用しないといけないモジュールがあります。

指定の順序で適用しないといけないモジュールについては、各モジュールのREADMEに書かれており、今回追加したsyntax-highlightingautosuggestionsにもそれぞれのモジュールのREADMEに以下のように記載されております。

以下はsyntax-highlightingREADMEに記載されている内容抜粋。

If this module is used in conjunction with the history-substring-search module, this module must be loaded before the history-substring-search module.

Additionally, if this module is used in conjunction with the autosuggestions module, this module must be loaded before the autosuggestions module as well.

To elaborate, the relative order of loading the modules would be syntax-highlighting, history-substring-search, autosuggestions and prompt.

READMEに記載の通り、以下の順で.zpreztorcに記載しています。

  1. syntax-highlighting
  2. history-substring-search
  3. autosuggestions
  4. prompt

またgitモジュールにもcompletionモジュールより前の指定があるので、README通りに指定しました。

テーマの修正

agnosterのデフォルトでは[ユーザ名]@[ホスト名] [ディレクトリパス]の形式で表示されるので、階層が深いディレクトリを表示すると見づらいという点と、個人用途でリモートアクセスするようなことも無い中でユーザ名とホスト名の表示があっても邪魔なだけなので、agnosterのテーマが書かれているファイルを直接編集し、プロンプト表示に関わる箇所を書き換えました。

agnosterのテーマのプロンプト表示に関わる設定は~/.zprezto/modules/prompt/functions/prompt_agnoster_setupに書かれているため、以下のように修正します。

~/.zprezto/modules/prompt/functions/prompt_agnoster_setupの設定箇所抜粋
(略)
# Context: user@hostname (who am I and where am I)
prompt_context() {
  local user=`whoami`

  if [[ "$user" != "$DEFAULT_USER" || -n "$SSH_CONNECTION" ]]; then
#    prompt_segment $PRIMARY_FG default " %(!.%{%F{yellow}%}.)$user@%m    # デフォルト定義のコメントアウト
    prompt_segment $PRIMARY_FG default " %(!.%{%F{yellow}%}.) "           # 左記の設定を追加
  fi
}
(略)

修正後はiTerm2を起動し直すことでテーマが反映されます。

修正前後のプロンプトを比較すると以下のようになります。

Monosnap_20230223_212533.png

また、Git管理されているリポジトリのディレクトリに移動すると、上述した「preztoとは」の図のようにブランチ名やGitの状態がわかるようになります。

デフォルトエディタの変更

ユーザのホームディレクトリにある.zprofileに設定されているデフォルトエディタの設定がnanoとなっているため、vimに書き換えます。

~/.zprofileの設定箇所抜粋
(略)
#
# Editors
#

if [[ -z "$EDITOR" ]]; then
  export EDITOR='vim'    # 'nano'を'vim'に変更
fi
if [[ -z "$VISUAL" ]]; then
  export VISUAL='vim'    # 'nano'を'vim'に変更
fi
(略)

おわりに

iTerm2のログ出力設定についてはともかく、preztoの設定は初期設定時に色々と悩みながら設定したあと、どこを設定したのか完全に忘れていたため、今回改めて設定を確認しながら設定箇所を整理できました。

やはりメモを残しておかないと後々苦労すると感じた次第でした。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?