「インストール - Zsh」の版間の差分
ナビゲーションに移動
検索に移動
| 75行目: | 75行目: | ||
colors | colors | ||
# | # 自動補完を有効にする | ||
# コマンドの引数やパス名を途中まで入力して <Tab> を押すといい感じに補完してくれる | |||
# 例: `cd path/to/<Tab>`, `ls -<Tab>` | |||
autoload -Uz compinit | autoload -Uz compinit | ||
compinit | compinit | ||
# | # Emacs ライクな操作を有効にする(文字入力中に Ctrl-F,B でカーソル移動など) | ||
# Vi ライクな操作が好みであれば `bindkey -v` とする | |||
bindkey -e | bindkey -e | ||
| 95行目: | 98行目: | ||
SAVEHIST=100 | SAVEHIST=100 | ||
# | # 入力したコマンドが存在せず、かつディレクトリ名と一致するなら、ディレクトリに cd する | ||
# 例: /usr/bin と入力すると /usr/bin ディレクトリに移動 | |||
setopt auto_cd | setopt auto_cd | ||
# | # cd した先のディレクトリをディレクトリスタックに追加する | ||
# ディレクトリスタックとは今までに行ったディレクトリの履歴のこと | |||
# `cd +<Tab>` でディレクトリの履歴が表示され、そこに移動できる | |||
setopt auto_pushd | setopt auto_pushd | ||
| 127行目: | 133行目: | ||
alias nano='nano -lmS' | alias nano='nano -lmS' | ||
alias skate='kdesu /usr/bin/kate' | alias skate='kdesu /usr/bin/kate' | ||
alias scode='code --user-data-dir= | alias scode='code --user-data-dir=~/Program/VScode_root_project' | ||
alias suse='cat /etc/SUSE-brand' | alias suse='cat /etc/SUSE-brand' | ||
alias sshpi='ssh | alias sshpi='ssh <ユーザ名>@<ホスト名またはIPアドレス> -p <ポート番号> -i <暗号鍵ファイルのフルパス>' | ||
alias sshxrea='ssh | alias sshxrea='ssh <ユーザ名>@<ホスト名またはIPアドレス> -p <ポート番号>' | ||
# コマンド履歴に残さないコマンド群 | # コマンド履歴に残さないコマンド群 | ||
# LinuxがホストOSの場合 | # LinuxがホストOSの場合 | ||
export HISTIGNORE="fg*:bg*:history*:cd*:ls*:cat*:less*:more*:grep*:lgrep*:igrep*:suse:which* | export HISTIGNORE="fg*:bg*:history*:cd*:ls*:cat*:less*:more*:grep*:clear*:lgrep*:igrep*:suse:which*:man*:startx*" | ||
# LinuxがゲストOSの場合 | # LinuxがゲストOSの場合 | ||
export HISTIGNORE="fg*:bg*:history*:cd*:ls*:grep*:clear:lgrep*:igrep*:suse:which*:mhgfs:uhgfs" | export HISTIGNORE="fg*:bg*:history*:cd*:ls*:cat*:less*:more*:grep*:clear*:lgrep*:igrep*:suse:which*:man*:startx*:mhgfs:uhgfs" | ||
# backspace,deleteキーを使えるように | # backspace,deleteキーを使えるように | ||
| 159行目: | 165行目: | ||
# プロンプトを2行で表示、時刻を表示 | # プロンプトを2行で表示、時刻を表示 | ||
PROMPT="%(?.%{${fg[green]}%}.%{${fg[red]}%})%n${reset_color}@${fg[blue]}%m${reset_color}(%*%) %~%# " | PROMPT="%(?.%{${fg[green]}%}.%{${fg[red]}%})%n${reset_color}@${fg[blue]}%m${reset_color}(%*%) %~%# " | ||
# または | |||
PROMPT="%(?.%{${fg[red]}%}.%{${fg[red]}%})%n${reset_color}@${fg[green]}%m${reset_color}(%*%) | |||
command > " | |||
# <Tab> でパス名の補完候補を表示した後、続けて<Tab>を押すと候補からパス名を選択できるようになる | |||
# 補完後、メニュー選択モードになり左右キーで移動が出来る | # 補完後、メニュー選択モードになり左右キーで移動が出来る | ||
zstyle ':completion:*:default' menu select=2 | zstyle ':completion:*:default' menu select=2 | ||
| 190行目: | 200行目: | ||
autoload -Uz zmv | autoload -Uz zmv | ||
alias zmv='noglob zmv -W' | alias zmv='noglob zmv -W' | ||
# 改行のない出力をプロンプトで上書きするのを防ぐ | |||
unsetopt promptcr | |||
# mkdirとcdを同時実行 | # mkdirとcdを同時実行 | ||
2020年6月22日 (月) 06:12時点における版
概要
Zshはシェルの一種で、Linux等の標準シェルであるbashよりも便利な機能を持ったシェルである。
Linuxにてターミナルでコマンドを実行することが多々あるが、zshに切り替えることで、作業効率を上げることができる。
ここでは、Zshの最新版をインストールする方法を記載する。
なお、CentOSのパッケージ管理システムでは、最新のZshをインストール出来ないため、yumは使用しない。
最新のZshはこちらのWebサイトで確認できる。
Zshのインストール
CentOS
まず、CentOSでは、Zshのインストールするにはncurses-develが必要となるので、以下のコマンドを実行してインストールする。
sudo yum install ncurses-devel
次に、Zshの公式WebサイトまたはGitリポジトリから、Zshのソースコードをダウンロードする。
wget https://sourceforge.net/projects/zsh/files/zsh/<バージョン名>/zsh-<バージョン名>.tar.xz/download -O zsh-<バージョン名>.tar.xz tar xvf zsh-<バージョン名>.tar.xz -C zsh-src cd zsh-src または git clone --depth 1 git://git.code.sf.net/p/zsh/code zsh-src cd zsh-src
続いて、Zshをインストールする。(ここでは、ホームディレクトリにインストールしている)
--enable-multibyteオプションは、マルチバイトを有効にするオプションである。
./configure --enable-multibyte --prefix=$HOME/zsh/zsh-<バージョン名> make make install
SUSE
CentOSと同様である。
Zshを利用可能にする
Zshを利用可能なシェル一覧に追加する。
ここに追加することで、chshコマンドでシェルの変更が可能となる。
sudo echo /<zshのインストールディレクトリ>/bin/zsh >> sudo /etc/shells
次に、ユーザのシェルを変更する。(コマンドを実行するとパスワードの入力が必要となる)
chsh -s /<zshのインストールディレクトリ>/bin/zsh
再度ログインするか再起動を行う。
すると、以下の文言が表示される。これは、Zshに設定ファイルが存在しないために表示される。
ここでは、 0を入力して空の設定ファイルを作成する。
This is the Z Shell configuration function for new users, zsh-newuser-install.
You are seeing this message because you have no zsh startup files(the files .zshenv, .zprofile, .zshrc, .zlogin in the directory~).
This function can help you with a few settings that should make your use of the shell easier.
You can:
(q) Quit and do nothing. The function will be run again next time.
(0) Exit, creating the file ~/.zshrc containing just a comment.
That will prevent this function being run again.
(1) Continue to the main menu.
--- Type one of the keys in parentheses ---
Zshの設定例(/home/ユーザ名/.zshrcファイル)
# Ctrl + Dでログアウトしてしまうことを防ぐ
setopt IGNOREEOF
# 日本語を使用
# export LANG=ja_JP.UTF-8
# パスを追加したい場合
# export PATH="$HOME/bin:$PATH"
# 色を使用
autoload -Uz colors
colors
# 自動補完を有効にする
# コマンドの引数やパス名を途中まで入力して <Tab> を押すといい感じに補完してくれる
# 例: `cd path/to/<Tab>`, `ls -<Tab>`
autoload -Uz compinit
compinit
# Emacs ライクな操作を有効にする(文字入力中に Ctrl-F,B でカーソル移動など)
# Vi ライクな操作が好みであれば `bindkey -v` とする
bindkey -e
# 他のターミナルとヒストリーを共有
setopt share_history
# ヒストリーに重複を表示しない
setopt histignorealldups
# 空白から始めたコマンドを無視
setopt hist_ignore_space
HISTFILE=~/.zsh_history
HISTSIZE=100
SAVEHIST=100
# 入力したコマンドが存在せず、かつディレクトリ名と一致するなら、ディレクトリに cd する
# 例: /usr/bin と入力すると /usr/bin ディレクトリに移動
setopt auto_cd
# cd した先のディレクトリをディレクトリスタックに追加する
# ディレクトリスタックとは今までに行ったディレクトリの履歴のこと
# `cd +<Tab>` でディレクトリの履歴が表示され、そこに移動できる
setopt auto_pushd
# pushdから重複を削除
setopt pushd_ignore_dups
# コマンドミスを修正
setopt correct
# グローバルエイリアス
alias -g L='| less'
alias -g H='| head'
alias -g G='| grep'
alias -g GI='| grep -ri'
# エイリアス
alias cd='cd -P'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias ls='ls -hlF'
alias cat='cat -n'
alias less='less -n'
alias en='LANG=C LANGUAGE=C LC_ALL=C'
alias lgrep='ls -ahlF | grep'
alias igrep='sudo zypper search -i --detail'
alias repoclean='sudo zypper clean -a'
alias nano='nano -lmS'
alias skate='kdesu /usr/bin/kate'
alias scode='code --user-data-dir=~/Program/VScode_root_project'
alias suse='cat /etc/SUSE-brand'
alias sshpi='ssh <ユーザ名>@<ホスト名またはIPアドレス> -p <ポート番号> -i <暗号鍵ファイルのフルパス>'
alias sshxrea='ssh <ユーザ名>@<ホスト名またはIPアドレス> -p <ポート番号>'
# コマンド履歴に残さないコマンド群
# LinuxがホストOSの場合
export HISTIGNORE="fg*:bg*:history*:cd*:ls*:cat*:less*:more*:grep*:clear*:lgrep*:igrep*:suse:which*:man*:startx*"
# LinuxがゲストOSの場合
export HISTIGNORE="fg*:bg*:history*:cd*:ls*:cat*:less*:more*:grep*:clear*:lgrep*:igrep*:suse:which*:man*:startx*:mhgfs:uhgfs"
# backspace,deleteキーを使えるように
stty erase ^H
bindkey "^[[3~" delete-char
# cdの後にlsを実行
chpwd() { ls -ltr --color=auto }
# どこからでも参照できるディレクトリパス
cdpath=(~)
# 区切り文字の設定
autoload -Uz select-word-style
select-word-style default
zstyle ':zle:*' word-chars "_-./;@"
zstyle ':zle:*' word-style unspecified
# Ctrl + sのロック, Ctrl + qのロック解除を無効にする
setopt no_flow_control
# プロンプトを2行で表示、時刻を表示
PROMPT="%(?.%{${fg[green]}%}.%{${fg[red]}%})%n${reset_color}@${fg[blue]}%m${reset_color}(%*%) %~%# "
# または
PROMPT="%(?.%{${fg[red]}%}.%{${fg[red]}%})%n${reset_color}@${fg[green]}%m${reset_color}(%*%)
command > "
# <Tab> でパス名の補完候補を表示した後、続けて<Tab>を押すと候補からパス名を選択できるようになる
# 補完後、メニュー選択モードになり左右キーで移動が出来る
zstyle ':completion:*:default' menu select=2
# 補完で大文字にもマッチ
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
# Ctrl+rでヒストリーのインクリメンタルサーチ、Ctrl+sで逆順
bindkey '^r' history-incremental-pattern-search-backward
bindkey '^s' history-incremental-pattern-search-forward
# コマンドを途中まで入力後、historyから絞り込み
# 例 ls まで打ってCtrl+pでlsコマンドをさかのぼる、Ctrl+bで逆順
autoload -Uz history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^p" history-beginning-search-backward-end
bindkey "^b" history-beginning-search-forward-end
# cdrコマンドを有効 ログアウトしても有効なディレクトリ履歴
# cdr タブでリストを表示
autoload -Uz add-zsh-hook
autoload -Uz chpwd_recent_dirs cdr
add-zsh-hook chpwd chpwd_recent_dirs
# cdrコマンドで履歴にないディレクトリにも移動可能に
zstyle ":chpwd:*" recent-dirs-default true
# 複数ファイルのmv 例 zmv *.txt *.txt.bk
autoload -Uz zmv
alias zmv='noglob zmv -W'
# 改行のない出力をプロンプトで上書きするのを防ぐ
unsetopt promptcr
# mkdirとcdを同時実行
function mkcd() {
if -d $1 ; then
echo "$1 already exists!"
cd $1
else
mkdir -p $1 && cd $1
fi
}
# git設定
RPROMPT="%{${fg[blue]}%}[%~]%{${reset_color}%}"
autoload -Uz vcs_info
setopt prompt_subst
zstyle ':vcs_info:git:*' check-for-changes true
zstyle ':vcs_info:git:*' stagedstr "%F{yellow}!"
zstyle ':vcs_info:git:*' unstagedstr "%F{red}+"
zstyle ':vcs_info:*' formats "%F{green}%c%u[%b]%f"
zstyle ':vcs_info:*' actionformats '[%b|%a]'
precmd () { vcs_info }
RPROMPT=$RPROMPT'${vcs_info_msg_0_}'