zshはシェルである。シェルはもちろんキーボード入力されたコマンド行を解釈し、必要なコマンドを必要な引数とともに起動することを主な仕事とするソフトウェアである。単なるシェルなのだが、zshには他を圧到する比類なき機能がある。その一端を印象づける一つの例に、zshで実装されたテトリスがある(図1)。 もちろんこれは、お遊び機能の例で実際の日常作業をこれで進めるわけではないが、潜在的に備えている機能がどれほどのものかが分かる好例である。 zshは、sh(Bourne Shell)をベースとし、ksh、csh(tcsh)、bashの優れた機能をアイデアとして取り込み、なおかつ作業効率を高める独自の機能を登載したまさに至高のシェルである。しかしながら超高機能・多機能であるがゆえに全容を掴むのが難しい。付属の英文マニュアルはしっかりしているものの、簡潔な仕様記述がされているのみなので具体的な
来年も作りたい!ふきのとう料理を満喫した 2024年春の記録 春は自炊が楽しい季節 1年の中で最も自炊が楽しい季節は春だと思う。スーパーの棚にやわらかな色合いの野菜が並ぶと自然とこころが弾む。 中でもときめくのは山菜だ。早いと2月下旬ごろから並び始めるそれは、タラの芽、ふきのとうと続き、桜の頃にはうるい、ウド、こ…
山葵です。 長らく間が空きがしましたが、id:cubicdaiyaに 「今月から本気出す」って言っちゃったので今月中に更新でございます。 さて、zshの設定ファイルのは、 .zshenv .zprofile .zshrc .zlogin .zlogout などがあります。 ログイン時やログアウト時などで読み込まれるファイルが異なりますが。 初心者の方は、取りあえず、 .zshrcにzshの設定を書き、 .zshenvでパスを通す ようにしておけばよいかと。 以下、.zshrcの設定例です。 1つ1つ説明するのも面倒なので、貼り付けるのみで。(だめだめじゃん ベースはzshrc.txtを参考にしました。 あと、.zshrcがめちゃくちゃ長くなってきたら、zcompileしておくと読み込みが早くなってよいかもです:-) 面白い設定とか間違いとかあったら教えていただけると嬉しいですです。 [更新
Webteko(ウェブテコ)っていう勉強会に参加してzshについて発表した(発表資料)。発表したんだけど、時間の都合とかで(zshにとっては)基本的なところしか紹介できなかった。 「うおー! 俺のzsh好きっぷりはこんなもんじゃないぜ!」というわけで、ここでその続きを書くことにした。主にコマンドライン編集の機能について説明するよ。 smart-insert-last-word について まず、zshには insert-last-word と言う機能がある。これを使うと、一つ前のコマンドの最後の単語を挿入できる。 これをもっとスマートにしたのが smart-insert-last-word。設定の仕方はこんな感じ。 autoload smart-insert-last-word zle -N insert-last-word smart-insert-last-word bindkey '^
今日は神戸のWebteko(ウェブテコ)っていう勉強会に参加した(告知ページ)。そこで「究極のシェル zsh」ということでzshの便利機能について発表した。そのときの発表資料を公開するよ。 発表したスライド と言ってもこのスライドは飾りみたいなもんで、本編としてはテキストファイルを見てもらいながらzshの実演をやった。なので、その時の内容をまとめておくことにする。 強力な補完機能 これを ~/.zshrc に書いておくと、タブを押しまくるだけで強力な補完機能が使えるようになる。超便利。 autoload -U compinit compinit いろんなコマンドが対応してるんだけど、例として挙げたのは以下。 grep --recursive --line-number とかオプションを補完。 man man screen みたいな感じで、調べるページの名前を補完。 find find .
Webteko(ウェブテコ)っていう勉強会に参加して、zshについて発表した(告知ページ)。発表資料は前のエントリに書いた。そこでzshの設定ファイルを紹介したので、ここにも張っておく。参考にしてね。 ファイルは「基本編」「応用編」の2つに分かれています。 zsh 設定ファイル : 基本編 # 強力な補完機能を有効にする autoload -U compinit compinit # cd したら自動的にpushdする setopt auto_pushd # 重複したディレクトリを追加しない setopt pushd_ignore_dups # グローバルエイリアス alias -g L='| less' alias -g G='| grep' alias -g H='| head' alias -g T='| tail' # キーバインドの選択 bindkey -e # emacs風 #
2009/04/12(日)に、神戸でWebteko(ウェブテコ)っていう勉強会がある(告知ページ)。そこでzshについて発表することにした。予告編ということで、ちょっと内容の紹介。 発表すること 基本的にはzsh使ったことない人向けに、便利な使い方と設定方法(.zshrcの書き方)について話すつもり。概要としてはだいたいこんな感じ。 補完機能 拡張ファイルグロブ コマンドライン編集 (^W, ^R, ^Xg とか) その他 (グローバルエイリアスなど) 一つ一つ細かいネタの集まりになってしまうので、「結局何だったの?」と言われないように、全体としてもまとまりのある発表にしたい。 予備知識 Unix/Linuxのコマンドライン操作に慣れていない人にはちょっとつらい内容になるかもしれない。コマンドライン操作の基本について予習したい人は、以下のページなんかを参考にするといいよ。 コマンドオペレー
例えばEmacsでファイルを開く時, ~/hoge/fuga/piyo.txt とあるとき,C-backspaceを押せば(M-x backword-kill-wordと同じ) ~/hoge/fuga/ とできる.ディレクトリを遡ってファイルを開く時にC-hを連打せずに済むので便利. zshではこのbackword-kill-wordはC-wに割り当てられているが,/ではなく空白まで削除してしまうため 例えば $ cp hoge ~/fuga/piyo でC-wを押すと $ cp hoge ~/fuga としてほしいのに $ cp hoge になる. そこで/を単語の境界と認識させるため,.zshrcに以下を書く WORDCHARS="*?_-.[]~=&!#$%^(){}<>" これで/は「単語に含まれない記号」となるので,C-wを押せば/までを消してくれる. WORDCHARSから-を
The Objective: To have git information integrated into my prompt so that I don't waste time establishing a mental context everytime I go to use git. The Problem: Every existing zsh-git setup I found was a half-baked kludge; either the person who wrote it didn't have a thorough understanding of git, they didn't have a thorough understanding of zsh, or both. The Solution: Write a better soultion mys
現在のディレクトリがgitの管理下にあるかどうか判定する方法を思いついたので、 walf443さんの方法 を改良してみました。 こんな感じに、gitで管理されてないディレクトリではブランチ名を表示しなくなります。 実際のzshrcは以下の通り。 1 _set_env_git_current_branch() { 2 GIT_CURRENT_BRANCH=$( git branch &> /dev/null | grep '^\*' | cut -b 3- ) 3 } 4 5 _update_rprompt () { 6 if [ "`git ls-files 2>/dev/null`" ]; then 7 RPROMPT="[%~:$GIT_CURRENT_BRANCH]" 8 else 9 RPROMPT="[%~]" 10 fi 11 } 12 13 precmd
zshの組込み関数 (というのか?) は、man しても説明が得られない。 print という zsh 特有の関数については、Google しても日本語圏からはほとんど有用な情報が得られなかった。(それでいてみんなけっこう .zshrc とかに使ってたりするんだよなあ…どこで知ったんだろう) というわけでドキュメントを見た。 zsh: Shell Builtin Commands 以下は訳というか自分なりの解釈みたいなもん。 print [ -abcDilmnNoOpPrsz ] [ -u n ] [ -f format ] [ -C cols ] [ -R [ -en ] ] [ arg ... ] フラグを立てないか、"-" フラグだけのときは、ほぼ echo コマンドと同じ。ただし、以下のエスケープ文字列が使える。 \M-x \Mx (Meta+x) \C-x \Cx (Ctrl+x
シェルというのはコンピュータに命令を送るのには非常に適したインターフェースですが、その反面、操作する人間のちょっとした気分の変化にうまく対応できないという欠点があります。 $ svn add foo.txt ここでちょっと気が変わって foo.txt の中身を見たいとします。僕の場合は以下のようにしていました。 $ svn add foo.txt^u # Ctrl+U でコマンドラインをクリア $ less foo.txt $ ^y # ^u した内容をペースト $ svn add foo.txt これではシェルを使っているのではなく、シェルに使われてしまっています。せっかく zsh を使っているのですから以下のような事をしたいです。 $ svn add foo.txt^x^r # Ctrl+X Ctrl+R でカーソル直前のファイルを less ... # less 中 $ svn ad
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く