Hatena::Groupsubtech

冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。

 | 

Jun 17, 2008 (Tue)

zsh の exntended_glob と HEAD^^^ を共存させる。 00:12 はてなブックマーク - zsh の exntended_glob と HEAD^^^ を共存させる。 - 冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。

extended_glob すると ^ が特殊文字になって HEAD^^^ とかできなくなって UZEEE のでやってみた。

typeset -A abbreviations
abbreviations=(
	"L"    "| $PAGER"
	"G"    "| grep"

	"HEAD^"     "HEAD\\^"
	"HEAD^^"    "HEAD\\^\\^"
	"HEAD^^^"   "HEAD\\^\\^\\^"
	"HEAD^^^^"  "HEAD\\^\\^\\^\\^\\^"
	"HEAD^^^^^" "HEAD\\^\\^\\^\\^\\^"
)

magic-abbrev-expand () {
	local MATCH
	LBUFFER=${LBUFFER%%(#m)[-_a-zA-Z0-9^]#}
	LBUFFER+=${abbreviations[$MATCH]:-$MATCH}
}

magic-abbrev-expand-and-insert () {
	magic-abbrev-expand
	zle self-insert
}

magic-abbrev-expand-and-accept () {
	magic-abbrev-expand
	zle accept-line
}

no-magic-abbrev-expand () {
	LBUFFER+=' '
}

zle -N magic-abbrev-expand
zle -N magic-abbrev-expand-and-insert
zle -N magic-abbrev-expand-and-accept
zle -N no-magic-abbrev-expand
bindkey "\r"  magic-abbrev-expand-and-accept # M-x RET はできなくなる
bindkey "^J"  accept-line # no magic
bindkey " "   magic-abbrev-expand-and-insert
bindkey "."   magic-abbrev-expand-and-insert
bindkey "^x " no-magic-abbrev-expand

こうすると

git reset HEAD^ # までうって RET をおすと
git reset HEAD\^ # に展開されて実行される

git di HEAD^^^..HEAD^ # とうつと、
git di HEAD\^\^\^.
git di HEAD\^\^\^..HEAD\^ # と展開されていく

git引数に割とファイルとったりするので glob の機能自体は残しておきたいわけです!

 | 

スポンサード リンク

書いてる人

cho45 (佐藤広央) (www.lowreal.net)

Perl, JavaScript, Ruby, HTML, CSS, Web etc


スポンサード リンク