LoginSignup
5
5

More than 5 years have passed since last update.

zsh カスタマイズ履歴 vol.1

Last updated at Posted at 2014-08-05

はじめに

最近、変更したり追加した.zshrcを紹介します。

.zshrc

設定のまとめです。以下より詳細な説明になります。

~/.zshrc
# help {{{
alias run-help >/dev/null 2>&1 && unalias run-help
autoload -Uz run-help
autoload -Uz run-help-git
autoload -Uz run-help-svn
autoload -Uz run-help-svk
autoload -Uz run-help-openssl
autoload -Uz run-help-p4
autoload -Uz run-help-sudo
bindkey '^h^h' run-help
# help }}}

# z {{{
# brew install z
# ...or,source /path/to/z/z.sh
. `brew --prefix`/etc/profile.d/z.sh
compctl -U -K _z_zsh_tab_completion ${_Z_CMD:-z}
# }}}


# cdr {{{
autoload -Uz chpwd_recent_dirs cdr add-zsh-hook
zstyle ':completion:*:*:cdr:*:*' menu selection
zstyle ':completion:*' recent-dirs-insert both
zstyle ':chpwd:*' recent-dirs-max 500
zstyle ':chpwd:*' recent-dirs-default true
zstyle ':chpwd:*' recent-dirs-pushd true
# }}}

# zaw-cdr
# https://github.com/zsh-users/zaw
# source /path/to/zaw.zsh
bindkey '^j^j' zaw-cdr

# mac-clipmenu {{{
# curl -O https://gist.githubusercontent.com/richmikan/3251311/raw/290c70b9a45b5eb66036b83de79bfe6bb0b3b054/parsrx.sh
function searchClipBoard() {
cclip=`plutil -convert xml1 ~/Library/Application\ Support/ClipMenu/clips.data -o - | parsrx.sh | grep '/plist/dict/array/string ' | sed '1,2d' | sed 's/\/plist\/dict\/array\/string//g' | peco`
echo $cclip | pbcopy
}
zle -N searchClipBoard
bindkey '^x^p' searchClipBoard
# mac-clipmenu }}}

# gitinit {{{
function gitinit(){
    echo -n username:
    read user
    repo=`echo $PWD:t`
    repo_j={\"name\":\"$repo\"}
    url="https://github.com/"$user/$repo.git
    curl -u $user https://api.github.com/user/repos -d $repo_j
    case $? in
        0)
            rm -rf .git
            git init
            echo $url
            git remote add origin $url
            git commit --allow-empty -m "noun"
            git push -u origin master
            ;;
    esac
    #case $1 in
    #  a)
    #            rm -rf .git
    #            git init
    #            git add *
    #            echo $url
    #            git remote add origin $url
    #            git commit -m "first commit"
    #            git push -u origin master
    #            ;;
    #  *)
    #            rm -rf .git
    #            git init
    #            echo $url
    #            git remote add origin $url
    #            git commit --allow-empty -m "noun"
    #            git push -u origin master
    #            ;;
    #esac
}
# gitinit }}}

zaw

zaw-cdr

新しくzshに追加されたcdrを使った移動をC-j,C-jキーで実現します。

ちなみに、zawは所定の位置でsourceしておいてください。具体的には、自分が本体ファイルをおいているパスを記述します。

# source /path/to/zaw.zsh

~/.zshrc
# cdr {{{
autoload -Uz chpwd_recent_dirs cdr add-zsh-hook
zstyle ':completion:*:*:cdr:*:*' menu selection
zstyle ':completion:*' recent-dirs-insert both
zstyle ':chpwd:*' recent-dirs-max 500
zstyle ':chpwd:*' recent-dirs-default true
zstyle ':chpwd:*' recent-dirs-pushd true
# }}}

# zaw-cdr
# https://github.com/zsh-users/zaw
# source /path/to/zaw.zsh
bindkey '^j^j' zaw-cdr

zaw-z

zaw/sourceにプラグインを置き、キーC-f,C-fを設定しています。これは、zの履歴を使う方法です。

$ cd /path/to/zaw/source

$ curl -O https://raw.githubusercontent.com/lovingly/dotfiles/master/zsh.d/zaw/zaw-z.zsh

$ echo "bindkey '^f^f' zaw-z" >> ~/.zshrc

ちなみに、zを設定するには、以下を先に記述しておきます。

# z {{{
# brew install z
# ...or,source /path/to/z/z.sh
. `brew --prefix`/etc/profile.d/z.sh
compctl -U -K _z_zsh_tab_completion ${_Z_CMD:-z}
# }}}

homebrewで入れた場合とrepoを持ってきた場合では記述が異なります。上は前者ですが、repoを持ってきた場合は、source /path/to/z/z.shを記述します。

mac-clipmenu

MacのClipMenuというアプリにて、クリップボード履歴をコマンドラインから参照します。必要な物は、 pecoとかxmlをパースするスクリプトとか。

まずは、スクリプトのダウンロードです。スクリプトはパスの通った場所echo $PATHに置きます。

$ curl -O https://gist.githubusercontent.com/richmikan/3251311/raw/290c70b9a45b5eb66036b83de79bfe6bb0b3b054/parsrx.sh

$ chmod +x !$:t
~/.zshrc
# curl -O https://gist.githubusercontent.com/richmikan/3251311/raw/290c70b9a45b5eb66036b83de79bfe6bb0b3b054/parsrx.sh
function searchClipBoard() {
cclip=`plutil -convert xml1 ~/Library/Application\ Support/ClipMenu/clips.data -o - | parsrx.sh | grep '/plist/dict/array/string ' | sed '1,2d' | sed 's/\/plist\/dict\/array\/string//g' | peco`
echo $cclip | pbcopy
}
zle -N searchClipBoard
bindkey '^x^p' searchClipBoard

git-init

ディレクトリ名でGitHubにリポジトリを作成し、空commitします。

git commit --allow-empty -m "noun"

コメントを外すと、引数aでディレクトリ内をaddします。ただし、上記case文はコメントアウトしてください。

gitinit a

~/.zshrc
function gitinit(){
    echo -n username:
    read user
    repo=`echo $PWD:t`
    repo_j={\"name\":\"$repo\"}
    url="https://github.com/"$user/$repo.git
    curl -u $user https://api.github.com/user/repos -d $repo_j
    case $? in
        0)
            rm -rf .git
            git init
            echo $url
            git remote add origin $url
            git commit --allow-empty -m "noun"
            git push -u origin master
            ;;
    esac
    #case $1 in
    #  a)
    #            rm -rf .git
    #            git init
    #            git add *
    #            echo $url
    #            git remote add origin $url
    #            git commit -m "first commit"
    #            git push -u origin master
    #            ;;
    #  *)
    #            rm -rf .git
    #            git init
    #            echo $url
    #            git remote add origin $url
    #            git commit --allow-empty -m "noun"
    #            git push -u origin master
    #            ;;
    #esac
}

help

C-h,C-hでヘルプを引けるようにしました。

~/.zshrc
alias run-help >/dev/null 2>&1 && unalias run-help
autoload -Uz run-help
autoload -Uz run-help-git
autoload -Uz run-help-svn
autoload -Uz run-help-svk
autoload -Uz run-help-openssl
autoload -Uz run-help-p4
autoload -Uz run-help-sudo
bindkey '^h^h' run-help

エラーへの対処法

zshでは、記述の順番などがエラーの原因となっている場合が考えられます。したがって、基本的な記述については、その仕組のある程度の理解が必要となります。

zaw-src-cdr:2: closing brace expected

zaw-src-cdr:2: closing brace expected

antigenを使っている場合、もしくは、setopt sh_word_splitを使っている場合に発生するようです。

ちなみに、デフォルトでは、有効になっていませんので、通常エラーが出ることはありません。エラーが出る場合は、~/.zshrcの末尾に、以下を記述して対応します。

~/.zshrc
unsetopt sh_word_split

ちなみに、本件エラーについては、+KenSenoo氏が検証に尽力してくださいました。ありがとうございます。

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