こんにちは。自分のターミナル環境構築が落ち着いた感じがあるのでまとめます。環境構築の手助けになれば幸いです。
ここからですます調じゃなくなります。
どんな記事?
自分のターミナル(zsh)について紹介していく。構築の方法などもできるかぎり書く。
ターミナル自体のカスタマイズや、別途追加したコマンドなどについて。
参考文献は記事の最後に、注釈にもなっている。
#PCスペック
MacBook Air(M1チップ)
macOS BigSur
#どのターミナル使っているの?
Zsh。macOSのデフォルト。
前のPCでBash使っていたがzsh(Z shell)のほうがいろいろ使いやすいと思う。他にもいろいろあるけど自分は知らない。ごめんなさい。
#テーマとか見た目
Nordというテーマを使っている。あまり有名ではないかもしれない。
公式サイトはこちら。
他の環境向け(Vim とかiTerm2 とか)にもある。一覧はこちら。
この一覧からTerminal.app
を選んでもうまくいかないので注意。GitHubから直接ダウンロードする。(ファイルごと)
多分zipファイルなので解凍しておく。
ターミナル->環境設定->プロファイル
に移動する。
左にプロファイルのリストがあって、◯
と...
を組み合わせたようなマークがあるのでそれをクリックして読み込む
を選ぶ。
ダウンロードしたファイルを選んで、デフォルトに選べばOK。
テーマはデフォルトでもいっぱいあるけれど、自分は色がしっくりこなかった。
テーマはBasic(デフォルト)->Pro(デフォルト)->Iceberg(有名)->Nord(今)
と変化してきている。
フォントはMenlo Regular 14
。これ以上小さくすると読みにくい。大きさは好みで。
フレームワーク
フレームワークとしてPrezto
を使用。
インストール方法
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
をやってから
setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done
自分の場合、setopt EXTENDED_GLOB
からのところをやるときにエラーが出たので、何回か繰り返した。
~/.zpreztorc
の設定
上記の設定が成功したら、~/.zpreztorc
が自動でできていると思うので、使っているテキストエディタとかで開く。
そしたらひたすら文章がずらーっと並んでいる。
ほとんどコメントの状態になっていて、必要なものだけコメントアウトして使ってということかなと思っている。
自分のコメントアウトしている部分を抜粋。
zstyle ':prezto:*:*' color 'yes'
zstyle ':prezto:load' pmodule \
'environment' \
'terminal' \
'editor' \
'history' \
'directory' \
'spectrum' \
'utility' \
'completion' \
'syntax-highlighting' \
'python' \
'autosuggestions' \
'prompt' \
#vimキーバインド、でもよくわからない
zstyle ':prezto:module:editor' key-bindings 'vi'
#プロンプトの設定、ここではpure
zstyle ':prezto:module:prompt' theme 'pure'
#Pythonの仮想環境の何か?よくわからない
zstyle ':prezto:module:python:virtualenv' auto-switch 'yes'
zstyle ':prezto:module:python:virtualenv' initialize 'yes'
# コマンドのシンタックスハイライト
#Set syntax highlighters.
# By default, only the main highlighter is enabled.
zstyle ':prezto:module:syntax-highlighting' highlighters \
'main' \
'brackets' \
'pattern' \
'line' \
'cursor' \
'root'
# Set syntax highlighting styles.
zstyle ':prezto:module:syntax-highlighting' styles \
'builtin' 'bg=blue' \
'command' 'bg=blue' \
'function' 'bg=blue'
他にもいろいろあるけどわからない。興味ある人は調べてみてください。
その他
プロンプトもいろいろある。prompt -p
をたたくと一覧が出てくるので気にいるものを見つけて、
~/.zpreztorc
を書き換える。
フレークワークを調べていると、Oh My Zshもよく紹介されていた。
なぜPrezto
にしたかというと、いくつかのサイトで「Oh My Zshを使うのをやめた」などという意味のことが書いてあったり、Prezto
のほうがサクサク動くという記事を見たから。
#~/.zshrc
#
# Executes commands at the start of an interactive session.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Source Prezto.
if [[ -s "${ZDOTDIR:-$HOME}/.zprezto/init.zsh" ]]; then
source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"
fi
# Customize to your needs...
# export NVM_DIR="$HOME/.nvm"
export PATH="/opt/homebrew/bin:$PATH"
export PATH="/usr/bin/python3:$PATH"
export PATH=$HOME/command:$PATH
setopt promptsubst
PROMPT='$'
#zsh-completions コマンド補完
autoload -U compinit && compinit -u
#エイリアス(ショートカット)
alias v='vim'
alias so='source'
alias py='python3'
alias tmux="TERM=xterm-256color tmux"
alias wiki='python3 wiki.py wikipediaSearch'
alias en='trans -b {en=ja}'
alias entrans='trans {en=ja}'
alias ja='trans -b {ja=en}'
alias jatrans='trans {ja=en}'
alias timer60='termdown 3600'
alias timer30='termdown 1800'
autoload -Uz colors # 色
colors
setopt auto_cd #cdなしのディレクトリ移動
setopt correct
setopt no_beep
bindkey -v
if [ $SHLVL = 1 ]; then #起動時tmux
tmux -2
fi
ecosia() {
local str opt
if [ $# != 0 ]; then
for i in $*; do
str="$str${str:++}$i"
done
opt='search?num=100'
opt="${opt}&q=${str}"
fi
open -a "Safari" https://www.ecosia.org/$opt
}
##解説
いろんなサイト1 を参考にさせてもらいました。
###エイリアス
#エイリアス(ショートカット)
alias v='vim'
alias so='source'
alias py='python3'
alias tmux="TERM=xterm-256color tmux"
alias wiki='python3 wiki.py wikipediaSearch'
alias en='trans -b {en=ja}'
alias entrans='trans {en=ja}'
alias ja='trans -b {ja=en}'
alias jatrans='trans {ja=en}'
alias timer60='termdown 3600'
alias timer30='termdown 1800'
上から、
- vim
-
source
コマンドの略 -
python3
コマンドの略
他にも自分がよく使うのをエイリアスにしておけばいいと思う。
#####Web検索
ecosia() {
local str opt
if [ $# != 0 ]; then
for i in $*; do
str="$str${str:++}$i"
done
opt='search?num=100'
opt="${opt}&q=${str}"
fi
open -a "Safari" https://www.ecosia.org/$opt
}
のエイリアス。ターミナルからWeb検索するもの。あまり使わないけど。
ちなみにEcosia
というのは検索エンジンの一つ。
検索エンジンは、ユーザーが検索すると、Ecosiaは広告収入を得ることができる。
Ecosiaはその収入の約80%を植樹のために使っているという環境にやさしい検索エンジン!
Googleと使い心地変わらないから是非使って欲しい。
参考2にさせてもらったのはGoogleChromeで開く設定だったので、Safariにした。一緒に検索ワードを入力できるのが便利。
#####Wikipedia検索
alias wiki='python3 wiki.py wikipediaSearch'
は、ターミナルからWikipedia検索ができる。
wiki 〇〇
とターミナルで入力すると、該当するWikiの概要を返す。
Pythonで作った。WikipediaAPIを使用。3
あとターミナルから使えるようにするためにFire
を使った。4
ちなみに上記の二つはどちらも使用するには
pip3 install wikipedia
pip3 install fire
が必要。
これの用途としては初見の言葉をさらっと意味を確認するのに使ったり。
下記はコード
import wikipedia
import fire
class Cli(object):
def wikipediaSearch(self,search_text):
response_string = ""
wikipedia.set_lang("ja")
search_response = wikipedia.search(search_text)
if not search_response:
response_string = "その単語は登録されていません。"
return response_string
try:
#ヒットした検索結果10件(リスト)の一つ目を取得
wiki_page = wikipedia.page(search_response[0])
except Exception as e:
response_string = "エラー発生\n{}\n{}".format(e.message, str(e))
return response_string
wiki_content = wiki_page.content
#wikiでは見出しが「==概要==」と表示されるので、そこまでの文章(最初の概要)を取得
response_string += wiki_content[0:wiki_page.content.find("==")] + "\n"
return response_string
if __name__ == "__main__":
fire.Fire(Cli)
#####翻訳
下記のこれらは翻訳用。DeepLもCLIから使いたい
alias en='trans -b {en=ja}'
alias entrans='trans {en=ja}'
alias ja='trans -b {ja=en}'
alias jatrans='trans {ja=en}'
は、ターミナルからGoogle翻訳を。ググったら見つかったもの。Googleすごいな。
ちなみに翻訳するときは、翻訳したい文章を""
や''
でくくらないといけない。自分はここで少しハマったので注意。
#####タイマー
alias timer60='termdown 3600'
alias timer30='termdown 1800'
タイマー。探し回って見つけた。ターミナルで完結できた方が便利だと思ったのでCLIにこだわる。デフォルトでsleep
があるけどどれぐらい経ったかわからないからあまり好きじゃない。
これは日本語情報少なかったと思うので詳しめに書いておく。
Pythonに依存しているのか、
pip3 install termdown
かpip install termdown
でインストール。
あとはtermdown 5
で5秒、 termdown 30
で30秒のカウントダウン。アスキーアートで文字が表示される。
1分の場合はtermdown 60
。秒での計算なので例えば5分なら300とする。
これでtermdown 300;say "5分経ちました"
とターミナルでたたけば、5分のカウントダウンをして、「5分経ちました」と教えてくれる。
自分のエイリアスは1時間(3600秒)と30分(1800秒)で設定。目の休憩用。
###その他
if [[ -s "${ZDOTDIR:-$HOME}/.zprezto/init.zsh" ]]; then
source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"
fi
は[上記](# フレームワーク)の設定。意味は知らない。
export PATH="/opt/homebrew/bin:$PATH"
export PATH="/usr/bin/python3:$PATH"
export PATH=$HOME/command:$PATH
PATHを通している。
一番上がHomebrew。真ん中がPython。
一番最後のは、自作した(ネットからコピペした)コマンドを置いてあるディレクトリにパスを通している。
setopt promptsubst
PROMPT='$'
#zsh-completions コマンド補完
autoload -U compinit && compinit -u
いろいろ。
PROMPT='$'
はプロンプトの設定。
prezto
の設定でなんかファイルパスが見れるようになっているので、これはシンプルに。
上と下のは何やったか忘れた。
autoload -Uz colors # 色
colors
setopt auto_cd #cdなしのディレクトリ移動
setopt correct
setopt no_beep
bindkey -v
コメント書いてあるのはその通り。
setopt correct
はなんか訂正してくれると思う。
setopt no_beep
は消音。
bindkey -v
は、Vimのキーバインドが使えると思うけど、使いこなせていない。
#まとめ
自分の備忘録用に書いたけど、誰かのためになればと思って詳しめに書いた。
プログラミングしていたらターミナルを使うことは避けられないと思うので、色々こだわった。
何か質問あれば、コメントしてください。
ここまで読んでくれてありがとうございました。