5
5

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 3 years have passed since last update.

ターミナル環境(構築)まとめ(M1 Mac)

Last updated at Posted at 2021-02-26

こんにちは。自分のターミナル環境構築が落ち着いた感じがあるのでまとめます。環境構築の手助けになれば幸いです。

ここからですます調じゃなくなります。

どんな記事?

自分のターミナル(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を使用。

インストール方法

zsh
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"

をやってから

zsh
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が自動でできていると思うので、使っているテキストエディタとかで開く。

そしたらひたすら文章がずらーっと並んでいる。
ほとんどコメントの状態になっていて、必要なものだけコメントアウトして使ってということかなと思っている。
自分のコメントアウトしている部分を抜粋。

~/.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

~/.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

が必要。

これの用途としては初見の言葉をさらっと意味を確認するのに使ったり。

下記はコード

wiki.py
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 termdownpip install termdownでインストール。

あとはtermdown 5で5秒、 termdown 30で30秒のカウントダウン。アスキーアートで文字が表示される。
timer.png

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のキーバインドが使えると思うけど、使いこなせていない。

#まとめ
自分の備忘録用に書いたけど、誰かのためになればと思って詳しめに書いた。

プログラミングしていたらターミナルを使うことは避けられないと思うので、色々こだわった。

何か質問あれば、コメントしてください。

ここまで読んでくれてありがとうございました。

  1. 【.zshrc解説】コピペで簡単zshカスタマイズ【設定方法】主なのはこのサイトかな

  2. MacでターミナルからGoogle検索

  3. 【Python】PythonのWikipedia APIを使ってみよう!前編

  4. Pythonで簡単CLIツール作成。Python Fireを試してみた

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?