#contents

* $'〜'

http://dengaku.org/~naoki/zsh/FAQ-J/zshfaq03-j.html#l41 参照~

\e をエスケープシーケンスとして扱うためのクォート。~
3.1.4以降。~
(実は bash にもあった

 `print '〜'`
 "$(print '〜')"

辺りで代用可能。~

PS1に \e を中に含む変数を代入する場合は以下のコマンド展開の方が望ましい結果が得られる。~
(シングルクォートで括っていないだけ~
 PS1=`print 〜`

* キーバインド一覧

 bindkey -L

* グローバルエイリアス

 alias -g G="| grep"

 $ ps aux G me
 # ↑ が ↓ のように解釈される
 $ ps aux | grep me

G から始まる何かを補完したいときには失敗したり、~
G そのものを入れたつもりでハマるので略語補完を使う方が幸せ。~

* 略語展開な補完 (abbreviation)

http://homepage1.nifty.com/blankspace/zsh/zsh.html この辺参照。~

やることとしては、以下な感じ。~
上記サイトと違って通常の補完と略語展開をセットでやってたり、~
空白区切りの補完とパイプな補完(|g みたいな)を分けてたり。~

- 略語連想配列の作成
 typeset -A abbrev
- 略語展開関数の作成~
$LBUFFER の変更をする
- 略語展開 || 通常の補完 な関数の作成
- zle -N
- キーバインド割り当て

	# 単語(空白文字で区切られているもの)に対する補完
	typeset -A word_abbrev
	word_abbrev=(
		"tar"	"czvf"
	)
	
	# パイプに対する補完
	typeset -A pipe_abbrev
	pipe_abbrev=(
		"l"	"$PAGER"
		"g"	"grep"
		"s"	"sort"
		"w"	"wc"
		"h"	"head"
		"t"	"tail"
	)
	
	# 単語略語展開
	expand-word-abbrev()
	{
		local left right abbrev
		# 最後の単語
		right=$(echo -nE "$LBUFFER" | sed -e 's/.*[[:space:]]\([^[:space:]]*\)$/\1/')
		abbrev=$word_abbrev[$right]
		
		if [ -z "$abbrev" ] ; then
			return 1
		fi
	
		# 残り
		left=$(echo -nE "$LBUFFER" | sed -e 's/[^[:space:]]*$//')
		LBUFFER=$left$abbrev" "
		return 0
	}
	
	# パイプ略語展開
	expand-pipe-abbrev()
	{
		local left right abbrev
		# 最後の | 以降を取得
		right=$(echo -nE "$LBUFFER" | sed -e 's/.*|\([^|]*\)$/\1/')
		abbrev=$pipe_abbrev[$right]
		
		if [ -z "$abbrev" ] ; then
			return 1
		fi
	
		# 残り
		left=$(echo -nE "$LBUFFER" | sed -e 's/[^|]*$//')
		LBUFFER=$left" "$abbrev" "
		return 0
	}
	
	# 略語展開 || complete-word
	expand-my-abbrev-or-complete()
	{
		expand-pipe-abbrev || expand-word-abbrev || zle complete-word
	}
	
	zle -N expand-my-abbrev-or-complete
	bindkey "^I" expand-my-abbrev-or-complete

* 特定のファイルを補完対象にする

 zstyle ':completion:*:g++:*' file-patterns '*.(cpp|h):c++\ files *(-/):directories'
.cpp, .h とディレクトリも補完対象にしている例。~

* 特定のファイルを補完対象から外す

 # サフィックスが該当するファイルを外す
 fignore=(CVS .class)

 # ignored-patterns を使うと細かい制御が可能
 zstyle ':completion:*:(all-|)files' ignored-patterns '(|*/)CVS' '*.class'
 zstyle ':completion:*:cd:*' ignored-patterns '(|*/)CVS'

- http://www.zsh.org/mla/users/2002/msg00496.html

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS