zsh

anything.elを使ってzshの履歴検索をする

zshは快適なシェルではあるが、anything脳の俺にとっては履歴検索で絞り込めないと不便でしょうがない。 zshでanythingのようなものを作る方法があるものの、やはり本物のanything.elを使いたい。 ということでzshのコマンドラインからanythingで履歴検索す…

「履歴を絞りこみながら正規表現で検索する。」を使ってみた

deruiの日記id:deruiによるzshの履歴をインクリメンタルに正規表現検索するzshスクリプト。インクリメンタル検索だの絞り込み検索だのと聞いてすぐに飛び付くのがanything脳のサガというもの。 ナイスアイデア!!キーをおすたびに勝手に絞り込まれていくのがa…

Vimのモードと拡張性を突っ込んでみる

Vimのモードと拡張性 - think and errorVi vs Emacsは空手とムエタイでどっちが強いかを議論するようなものなのでとりあえず置いとこう。 LinuxのCUIはまた極端すぎ.ディレクトリ変更にcdコマンドで延々と打つのは本当に面倒だ. えーっとzshなら楽だよ。「…

EmacsのM-x shellでzshを使う設定

.zshrcの設定内容によっては、EmacsのM-x shellでは動作しなくなる。それは、zleをいじっているから。だけど、zshでもEmacsの中で動かす方法はある。以下の行を.zshrcに入れるだけでよい。 [[ $EMACS = t ]] && unsetopt zle この設定は環境変数 EMACS が t …

extended_globが覚えられないよ

zsh

**/*.[ch]などは使うけど、/**/*~^*/path(|/*)とか**/*.c(D.OL[1,10]:h)とか*(ND.L0m+0m-2)とかわけわかんねえ。d:id:rubikitch:20070925#zshcheatsheet のチートシートに書き加えようにもうまく整理できなくて。しかも使用頻度が低いからいざ複雑な条件を指…

zargs - 「argument list too long」を撃退せよ

zsh

zshのglob機能(ワイルドカード)はとてつもなく強力だ。zshユーザならほぼ間違いなくsetopt extended_globの設定を入れていると思う。extended_globしておかないと強力なglobの恩恵を受けられないからだ。たとえば**/*.hは*.hをカレントディレクトリとその…

vimのiabのよう略語展開

zsh

http://zshwiki.org/home/examples/zleiabZshWikiを漁っていたら、おもしろい設定を見付けた。 vimではiabで略語展開ができる(らしい)が、同様のことをzshでもやろうという設定だ。 ソースはこんなの。 setopt extended_glob typeset -A abbreviations abb…

zshのコマンドラインをエディタで編集・日本語入力

コマンドラインをエディタで編集 zshのコマンドラインはエディタで編集できる。環境変数VISUALかEDITORに使いたいエディタを指定しておこう。Emacsな人は M-x server-start してから EDITOR=emacsclient M-x gnuserv-start してから EDITOR=gnuclient のいず…

fake-accept - 履歴に登録するだけ

zsh

http://journal.mycom.co.jp/column/zsh/003/index.htmlの もはや漢のスクリプトはコマンド履歴の中にあるものだ。 に触発されて編集中のコマンドの内容(Emacs同様バッファと言う)を履歴に登録するだけのZLE widgetを作ってみた。ソフトウェアのコンパイル…

マニュアルがわけわからん

zsh

英辞郎があれば楽に英語は読めるけど 何回やっても何回やっても マニュアルがわからないよ! 読んでてほんとに意味不明なのが多い。もっと使用例が欲しい。でないと読む気失せる。

noglob - ファイル名展開をしない

zsh

~% noglob echo * * ~% noglob echo http://www.example.com/?hoge http://www.example.com/?hoge わざわざquoteする必要がない。とくにqueryつきのURLを引数に指定するときに便利かも。

ヘルプ機能を強化

zsh

zshにおいてM-hを押すとコマンドをmanする機能がある。実際はrun-helpコマンドが実行され、デフォルトではmanにaliasされている。しかし、zsh組み込みコマンドでは使えなかったりして不便だ。しかし、以下の作業をしてあげれば組み込み関数やmanのないコマン…

optparse.rbを使ったスクリプトのオプション補完を自動生成する

zshのオプション補完 zshの補完が恐しいまでに高機能なのはユーザーみんな知っているだろう。なんと、オプションまでも補完してくれる。たとえば、lsだって以下の状態でタブを打つと、 $ ls -[Tab] option --all -a -- list entries starting with . --almos…

ずぃーしぇる?

俺は「ぜっとしぇる」と読んでるけど、みんなはずぃーしぇる派なんだろうか?ちなみにウルトラマンを倒した最強最後の怪獣(だった?*1)「ゼットン」は「Z」と「ん」の日英最後の文字をくっつけたのが名前の由来だとさ。つまりzshとゼットンは同類。 *1:詳…

zshいじりは楽し

zsh

長年zshを使っているものの、シェルスクリプトが苦手なこともあってあまりカスタマイズしていなかった。Emacsのshell-modeばかり使っていたのでzsh本来の力を発揮させられなかった。GNU Screenを使っていればログが取れるんで、shell-modeでやらなくてもよく…

拡張子への関連付け

zsh

zsh 4.2以降ならばwindozeでいう「拡張子への関連付け」が行える。大昔から欲しかった機能だったが4.2以降ってかなり遅いのね…たとえば.jpgファイルにおいて alias -s jpg=xzgv と設定しておけば foo.jpg を見るためには ./foo.jpg と打つだけでよくなる。 …

正規表現履歴検索

zsh

d:id:rubikitch:20070925#zshicicles で考えていた正規表現による履歴検索。isearchになっていない代わりに id:rubikitch:20070927#1190850678 同様20個の選択肢から選ぶ形を取った。 # ここからはhistory-menuと共通 HISTORY_MENU_LENGTH=20 typeset -A HIS…

シェルスクリプトの内容を丸ごと履歴に登録する

zsh

zshは複数行のコマンドを編集・実行できる。そして履歴は強力。だったら小さいスクリプトを丸ごと履歴に入れてしまえないかと考えてみたら、やはりその機能は存在した。print -s -f "%s" "`cat /path/to/shell-script`"

history-menu - 最近入力したコマンドを現在位置に挿入

zsh

最近実行したコマンドをつなげて再実行したい場合みんなならどうする?直前のコマンドならば!!で実行できるね。zshならば!!のあとにTabを押すと実際のコマンドに展開されるし、!!などを使ってコマンドを実行しても展開された形で履歴に登録される。さすがzsh…

zshでアプリケーション関連付け

zsh

http://jndb.pc.mycom.co.jp/column/zsh/016/index.htmlwindozeでお馴染の拡張子とアプリケーション関連付け。これはzshでも実現可能だ。「alias -s」を使えば実行できないファイルを「実行」することで指定したアプリケーションで「開く」ことができる。 al…

OptionParserで書かれたRubyスクリプトのzshの補完設定を自動生成できないものか

% tar [tab] A -- append to an archive c -- create a new archive f -- specify archive file or device t -- list archive contents u -- update archive v -- verbose output x -- extract files from an archive たとえばtarの後でTabを押すとオプショ…

zsh tips

zsh

メモ。http://wiki.fdiary.net/zsh/?MatchAgainstNumbers http://www.ayu.ics.keio.ac.jp/members/mukai/translate/write_zsh_functions.html

zshで正規表現による履歴探索

zsh

Emacsのiciclesみたいに履歴を正規表現で探索したいんだよね。たとえばコマンド名と対象ファイルがわかっていてオプションを忘れた場合に「C-r command.+/hogehoge.txt」とできたら…zshは歴史長いと思うのだが、いまだにその機能が加わっていないのが不思議…

zshのチートシート

zsh

extended_globは **/* とか以外にほとんど使わないので、いざ欲しいときに忘れてしまう。プロセス置換もしかり。ここでワンキーでチートシートの表示ができたら嬉しい。普段Rubyばかりでシェルスクリプトを書かないので、苦労すると思うけど、シェル関数で書…