.zshrcの設定

zsh の設定ファイルです。 現在のオプション(setoptで有効になる項目)を確認する場合は、"set -o"を実行してください。

一通り、zshを理解するには以下の連載が役に立つと思います。
漢のzsh | コラム | エンタープライズ | マイコミジャーナル

書籍ではこちらが参考になります。

zsh最強シェル入門

zsh最強シェル入門

  • 確認しているzshのバージョン
    • 5.0.4 (2013.12.21 リリース)
  • 確認しているOS
# 文字コードの設定
export LANG=ja_JP.UTF-8

# パスの設定
PATH=/usr/local/bin:$PATH
export MANPATH=/usr/local/share/man:/usr/local/man:/usr/share/man

# 関数
find-grep () { find . -type f -print | xargs grep -n --binary-files=without-match $@ }

# エイリアスの設定
alias ls='ls --color=auto'
alias ll='ls -ltr'
alias gd='dirs -v; echo -n "select number: "; read newdir; cd +"$newdir"'

# プロンプトの設定 
PROMPT='%~# '

# ヒストリの設定
HISTFILE=~/.histfile
HISTSIZE=10000
SAVEHIST=10000

# 履歴ファイルに時刻を記録
setopt extended_history

# 補完するかの質問は画面を超える時にのみに行う。
LISTMAX=0

autoload -Uz compinit; compinit

# sudo でも補完の対象
zstyle ':completion:*:sudo:*' command-path /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin

# cdのタイミングで自動的にpushd
setopt auto_pushd 

# 複数の zsh を同時に使う時など history ファイルに上書きせず追加
setopt append_history

# 補完候補が複数ある時に、一覧表示
setopt auto_list

# 保管結果をできるだけ詰める
setopt list_packed

# 補完キー(Tab, Ctrl+I) を連打するだけで順に補完候補を自動で補完
setopt auto_menu

# カッコの対応などを自動的に補完
setopt auto_param_keys

# ディレクトリ名の補完で末尾の / を自動的に付加し、次の補完に備える
setopt auto_param_slash

# ビープ音を鳴らさないようにする
setopt no_beep

# 直前と同じコマンドラインはヒストリに追加しない
setopt hist_ignore_dups

# ヒストリにhistoryコマンドを記録しない
setopt hist_no_store

# 余分なスペースを削除してヒストリに記録する
setopt hist_reduce_blanks

# 行頭がスペースで始まるコマンドラインはヒストリに記録しない
# setopt hist_ignore_spece

# 重複したヒストリは追加しない
# setopt hist_ignore_all_dups

# ヒストリを呼び出してから実行する間に一旦編集できる状態になる
setopt hist_verify

# auto_list の補完候補一覧で、ls -F のようにファイルの種別をマーク表示しない
setopt no_list_types

# コマンドラインの引数で --prefix=/usr などの = 以降でも補完できる
setopt magic_equal_subst

# ファイル名の展開でディレクトリにマッチした場合末尾に / を付加する
setopt mark_dirs

# 8 ビット目を通すようになり、日本語のファイル名を表示可能
setopt print_eight_bit

# シェルのプロセスごとに履歴を共有
setopt share_history

# Ctrl+wで、直前の/までを削除する。
WORDCHARS='*?_-.[]~=&;!#$%^(){}<>'

# ディレクトリを水色にする。
export LS_COLORS='di=01;36'

# ファイルリスト補完でもlsと同様に色をつける。
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}

# cd をしたときにlsを実行する
function chpwd() { ls }

# ディレクトリ名だけで、ディレクトリの移動をする。
setopt auto_cd

# C-s, C-qを無効にする。
setopt no_flow_control


2006/09/25 一部修正
2006/09/29 一部修正
2006/11/05 一部修正とブログ上の表示を色つけ
2006/11/29 オプション名の統一とブログ上の表示色つけ解除(文字化けするため)
2006/12/15 スーパーpre記法 シンタックス・ハイライト
2007/05/20 確認バージョンを、4.3.4に変更
2008/02/15 確認バージョンを、4.3.5に変更
2008/05/10 確認バージョンを、4.3.6に変更
2008/10/30 確認バージョンを、4.3.8に変更
2008/12/31 書籍の紹介と微修正
2009/01/12 確認バージョンを、4.3.9に変更
2009/06/06 確認バージョンを、4.3.10に変更
2010/04/04 設定項目一部追加。
2011/01/04 確認バージョンを、4.3.11に変更
2011/06/11 確認バージョンを、4.3.12に変更
2011/12/16 確認バージョンを、4.3.14に変更
2012/02/25 確認バージョンを、4.3.17に変更
2012/07/21 確認バージョンを、5.0.0に変更
2013/01/02 確認バージョンを、5.0.2に変更
2013/12/21 確認バージョンを、5.0.4に変更

zsh のインストールメモ

# wget http://jaist.dl.sourceforge.net/sourceforge/zsh/zsh-4.3.11.tar.bz2
# wget http://jaist.dl.sourceforge.net/sourceforge/zsh/zsh-4.3.11-doc.tar.bz2
# tar jxf zsh-4.3.11.tar.bz2
# tar jxf zsh-4.3.11-doc.tar.bz2 
# cd zsh-4.3.11
# ./configure --enable-multibyte
# make
# sudo make install

CentOS 5やFedora 7では、リンク時に以下のエラーが出るので、ncursesを事前にインストールしておく。

init.o: In function `init_term':
init.c:(.text+0x1295): undefined reference to `tgetent'
init.c:(.text+0x1357): undefined reference to `tgetstr'
init.c:(.text+0x1382): undefined reference to `tgetflag'
init.c:(.text+0x1393): undefined reference to `tgetflag'
init.c:(.text+0x13a4): undefined reference to `tgetnum'
init.c:(.text+0x13b5): undefined reference to `tgetnum'
prompt.o: In function `tsetcap':
prompt.c:(.text+0x4e7): undefined reference to `tputs'
prompt.c:(.text+0x548): undefined reference to `tputs'
prompt.c:(.text+0x5b5): undefined reference to `tputs'
prompt.c:(.text+0x5e5): undefined reference to `tgetnum'
prompt.c:(.text+0x62b): undefined reference to `tgetnum'
collect2: ld はステータス 1 で終了しました
make[1]: *** [zsh] エラー 1
# yum -y install ncurses-static

Ubuntu 8.10でも同様にエラーが出るので、ncurses-devをインストールする必要があります。

sudo apt-get install ncurses-dev

Fedora 9ではyumから4.3.4がインストールできます。

Name        : zsh                          Relocations: (not relocatable)
Version     : 4.3.4                             Vendor: Fedora Project
Release     : 7.fc9                         Build Date: 2008年01月31日 23時47分15秒
Install Date: 2008年02月09日 22時02分18秒      Build Host: xenbuilder2.fedora.redhat.com
Group       : System Environment/Shells     Source RPM: zsh-4.3.4-7.fc9.src.rpm
Size        : 4122854                          License: BSD
Signature   : (none)
Packager    : Fedora Project
URL         : http://zsh.sunsite.dk/
Summary     : A powerful interactive shell
Description :
The zsh shell is a command interpreter usable as an interactive login
shell and as a shell script command processor.  Zsh resembles the ksh
shell (the Korn shell), but includes many enhancements.  Zsh supports
command line editing, built-in spelling correction, programmable
command completion, shell functions (with autoloading), a history
mechanism, and more.

.vimrcの設定

20061015 一部修正
20061106 色つけ
20061215 スーパーpre記法 シンタックス・ハイライト

" 日本語の設定
set encoding=utf-8
"set fenc=utf-8
"set fencs=ucs-bom,utf-8,iso-2022-jp,euc-jp,cp932
set fencs=ucs-bom,utf-8,iso-2022-jp,euc-jp,cp932

" 非互換モード
set nocompatible

" カラーテーマを変更
colorscheme mycolor

" シンタックスカラー表示を有効にする
syntax on

" 行番号を表示する
set number

" 入力したコマンドをステータスラインに表示
set showcmd

" 位置情報を表示
set ruler

" ステータスラインを表示
set laststatus=2
set statusline=%<%f\ %m%r%h%w%{'['.&fenc.']['.&ff.']'}%=%l,%c%V%8P

" ファイルタイプごとのプラグインを有効にする
filetype plugin on
filetype indent on

" 自動インデント
set smartindent

" 対応する括弧を強調表示
set showmatch

" 長い行を折り返さない
set nowrap

" バックスペースの挙動
set backspace=indent,eol,start

" タブが対応する空白の数
set tabstop=4
set shiftwidth=4
set softtabstop=0

" タブではなく適切な数の空白を使う
set expandtab

" インクリメンタルサーチ
set incsearch

" 前回開いた編集個所を表示する
au BufWritePost * mkview
autocmd BufReadPost * loadview

" 上下から、指定した行数に達したら自動スクロール
set scrolloff=5

" 強化されたコマンドライン補完を使用
set wildmenu

" バッファを保存しないで他のファイルを開けるようにする
set hidden

" コマンドモードで Emacs キーバインド
cmap <C-A> <Home>
cmap <C-F> <Right>
cmap <C-B> <Left>
cmap <C-D> <Delete>
cmap <Esc>b <S-Left>
cmap <Esc>f <S-Right>

" rubycomplete.vim
autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete
autocmd FileType ruby,eruby let g:rubycomplete_buffer_loading = 1
"autocmd FileType ruby,eruby let g:rubycomplete_rails = 1
autocmd FileType ruby,eruby let g:rubycomplete_classes_in_global = 1

" タブで、補完
imap <TAB> <C-X><C-O>

" ペースト時にオートインデントを無効に 
"set paste

autocmd BufNewFile *.h call IncludeGuard()
function! IncludeGuard()
  let gatename = substitute(toupper(expand("%:t")), "\\.", "_", "g")
  normal! gg
  execute "normal! i#ifndef " . gatename . "_INCLUDED"
  execute "normal! o#define " . gatename .  "_INCLUDED\<CR>\<CR>\<CR>\<CR>\<CR>"
  execute "normal! Go#endif   /* " . gatename . "_INCLUDED */"
  4
endfunction 

" vim -b : edit binary using xxd-format!
augroup Binary
  au!
  au BufReadPre  *.bin let &bin=1
  au BufReadPost *.bin if &bin | silent %!xxd -g 1
  au BufReadPost *.bin set ft=xxd | endif
  au BufWritePre *.bin if &bin | %!xxd -r
  au BufWritePre *.bin endif
  au BufWritePost *.bin if &bin | silent %!xxd -g 1
  au BufWritePost *.bin set nomod | endif
augroup END

" #!で始まるファイルを保存時に実行権限を付与する
autocmd BufWritePost * :call AddExecmod()
function AddExecmod()
  let line = getline(1)
  if strpart(line, 0, 2) == "#!"
    call system("chmod +x ". expand("%"))
  endif
endfunction

ctagのインストールメモ

以下のサイトからソースをダウンロードする。
Exuberant Ctags

# tar zxf ctags-5.6.tar.gz
# cd ctags-5.6
# ./configure
# make 
# sudo make install

利用方法は、タグを作成したいディレクトリ配下に移動して、

# ctags -R

調べたい対象の上にカーソルを置いて、"CTRL + ]"で定義位置に移動して、"CTRL + T"で元に戻る。

via Redirect