本格的に始めるzsh
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

本格的に始めるzsh

  • 266 views
Uploaded on

本格的に始めるzsh

本格的に始めるzsh

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
266
On Slideshare
239
From Embeds
27
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 27

https://twitter.com 28

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 本格的に始めるzsh 2014/11/30 三宅 英明(mollifier)
  • 2. 自己紹介 名前: 三宅 英明 Twitter: @mollifier はてなID: mollifier 神戸のプログラマ
  • 3. 好きなもの zsh vim vimperator
  • 4. ブログとか はてなブログ http://mollifier.hatenablog.com/ Twitter http://twitter.com/mollifier Qiita http://qiita.com/mollifier
  • 5. 本格的に始めるzsh 具体的なzshの使い方を勉強しまし ょう
  • 6. 本格的に始めるzsh いろんな機能があるけど
  • 7. 本格的に始めるzsh 今日はこの3つを紹介 補完 ディレクトリ移動 コマンドライン履歴
  • 8. 本格的に始めるzsh この3つが使えればだいたいいける
  • 9. 本格的に始めるzsh 補完 ディレクトリ移動 コマンドライン履歴
  • 10. 補完 zshといえば補完機能が有名。 これを~/.zshrcに書いて、あとはTabを 押す。 autoload -Uz compinit compinit
  • 11. 補完 cd ディレクトリだけ補完
  • 12. 補完 man manのページ名を補完
  • 13. 補完 grep –with-filename –recursive とか長いオプ ションを補完
  • 14. 補完 find 最初はディレクトリを補完。その後は-name とか-type dとか、なんでも補完
  • 15. 補完 chmod 644のときはすでに644なファイルは補完し ない。+xとかでも同様
  • 16. 補完 tar tar xzfのときは.tar.gzファイルだけ補完。そ の後は展開対象ファイルをtarの中身から補 完
  • 17. 補完 kill プロセス名をプロセスIDに展開
  • 18. 補完 make makeのターゲットを補完
  • 19. 補完 apt-get apt-get installの後はインストールできるパ ッケージ名を補完
  • 20. 補完 brew brew installの後はインストールできるパッ ケージ名を補完
  • 21. 補完 scp コピー元またはコピー先ファイルとして、ssh でログインできるリモートサーバーのファイル 名を補完
  • 22. 補完 git サブコマンドもオプションも、なんでも補完。 git addの後はaddが必要なファイルだけ補 完
  • 23. 補完 他にもいろいろあります。
  • 24. 補完 使い方もTabを押すだけで簡単。何で もTabで補完。
  • 25. 補完 Tabを押してちゃんと補完できなかっ たらバグと思ってよい
  • 26. 補完 zshを使い始めたら、まずは補完を堪 能してほしい
  • 27. 補完 さらに補完を強化したいときは、zsh-completions をインストールする
  • 28. zsh-completionsとは 標準に含まれていない補完ファイル を集めたやつ さっき言ったbrewとかもこれを入れ ないと補完できない
  • 29. zsh-completionsをインストー ルする $HOME/.zsh/の下にインストールす る場合の例 % mkdir $HOME/.zsh/ # ディレクトリがまだない場合は作成する) % cd $HOME/.zsh/ % git clone git://github.com/zsh-users/zsh-completions.git
  • 30. zsh-completionsをインストー ルする その後、~/.zshrcに次を追加 fpath=($HOME/.zsh/zsh-completions/src(N-/) $fpath) 注意として、これはcompinitの前に書 く
  • 31. zsh-completionsをインストー ルする または、Macの場合はhomebrewを 使ってもインストールできる % brew install zsh-completions
  • 32. zsh-completionsをインストー ルする この後、~/.zshrcに次を追加 fpath=(/usr/local/share/zsh-completions(N-/) $fpath)
  • 33. zsh-completionsをインストー ルする ただし、homebrewで入れるやつは若 干古いので、GitHubから取ってくる方 がおすすめ
  • 34. 補完候補をうろうろ選ぶ 補完候補をうろうろ選ぶやつもあり ます 正式にはメニュー補完と呼びます
  • 35. 補完候補をうろうろ選ぶ 次を~/.zshrcに書く zstyle ':completion:*:default' menu select=2
  • 36. 補完候補をうろうろ選ぶ Ctrl+n, Ctrl+fとかEmacs風の操作で 補完候補が選べる
  • 37. 補完 これぐらいやっておけば補完はOK
  • 38. 本格的に始めるzsh 補完 ディレクトリ移動 コマンドライン履歴
  • 39. ディレクトリ移動 ディレクトリ移動は頻度が高い なので重要
  • 40. ディレクトリ移動 とりあえずこの設定を使っておけばOK setopt auto_cd setopt auto_pushd setopt pushd_ignore_dups
  • 41. ディレクトリ移動 setopt auto_cd ディレクトリ名だけでcdする
  • 42. ディレクトリ移動 auto_pushd cdしたら勝手にpushdする
  • 43. ディレクトリ移動 pushd_ignore_dups pushdで残るディレクトリ一覧で、重複 したものは残さないようにする
  • 44. ディレクトリ移動 この3つでcdした履歴が残る感じにな るので、まあ便利 setopt auto_cd setopt auto_pushd setopt pushd_ignore_dups
  • 45. ディレクトリ移動 autp_pushdの履歴はzshを終了し たら消える ディレクトリ移動の履歴を永続化し て、終了しても保存されるようにした いときは、cdrを使う
  • 46. cdrを使う cdrはzshに標準で含まれているので、 使うのは簡単 autoload -Uz add-zsh-hook autoload -Uz chpwd_recent_dirs cdr add-zsh-hook chpwd chpwd_recent_dirs
  • 47. cdrを使う あとは適当にcdして、cdr のあとTAB で移動したディレクトリが補完される
  • 48. cdrを使う なかなか便利なやつ
  • 49. ディレクトリ移動 ディレクトリ移動は、まあこれぐらい でOK
  • 50. 本格的に始めるzsh 補完 ディレクトリ移動 コマンドライン履歴
  • 51. コマンドライン履歴 コマンドライン履歴とは 実行したコマンドを覚えていて、後 から使えるやつ
  • 52. コマンドライン履歴 過去に入力したコマンドをもう一度 入力したいことが、けっこうある
  • 53. コマンドライン履歴 毎日のように使うコマンドで、決まり きったパターンを何回も入力するの がめんどう だいぶ前に入力したあのコマンドを もう一度使いたいけど、引数の指定 とか忘れてしまった
  • 54. コマンドライン履歴 そんなときはコマンドライン履歴を 使えばOK 1回入力したコマンドラインを覚えて おいて、あとから使える
  • 55. コマンドライン履歴 とりあえず基本の設定 HISTFILE=~/.zsh_history HISTSIZE=1000000 SAVEHIST=1000000
  • 56. コマンドライン履歴 HISTFILEはコマンドライン履歴を保 存するファイル名の指定 何でもいいけど、~/.zsh_historyと している人が多いもよう 別のファイル名でもいい
  • 57. コマンドライン履歴 HISTSIZE、SAVEHISTはコマンドラ イン履歴を何行保存するかの設定
  • 58. コマンドライン履歴 多めの設定を推奨 目安としては一生使っても使い切れ ないぐらいの量 100万にしたら普通の人は100年 ぐらいたっても足りるので、だいたい それぐらいでOK 気前よく1億とかにしてもOK
  • 59. コマンドライン履歴 これも足しておいたほうがいい setopt share_history setopt hist_ignore_all_dups
  • 60. コマンドライン履歴 setopt share_history 同時に起動したzshの間でヒストリ を共有する
  • 61. コマンドライン履歴 setopt hist_ignore_all_dups 同じコマンドをヒストリに残さない
  • 62. コマンドライン履歴の活用(1) インクリメンタル検索する いろいろあるけど、標準のCtrl+rで だいたいOK
  • 63. コマンドライン履歴の活用(2) 今の入力を元にコマンドライン履歴か ら補完する autoload -Uz history-search-end zle -N history-beginning-search-backward-end history-search-end bindkey "^O" history-beginning-search-backward-end
  • 64. コマンドライン履歴の活用(2) 言葉では説明しにくいのでデモを見 せる
  • 65. コマンドライン履歴の活用(2) これが便利 個人的にはzshの一番好きな機能
  • 66. コマンドライン履歴の活用(3) 普通にgrepで検索 汎用的 zsh関係ない % history 1 | grep 'git' 153 git commit 2862 git init % !2861
  • 67. コマンドライン履歴 とりあえずこれぐらいでOK もう、1回入力したコマンドは2度と 手入力しない 2回入力してしまったら死ぬ、ぐらい の勢いで
  • 68. まとめ zshの機能はいろいろあるけど、この3 つを設定しておけばだいたい大丈夫っ ぽい 補完 ディレクトリ移動 コマンドライン履歴
  • 69. まとめ 他の機能はおいおいやっていけば いいと思う
  • 70. 本格的に始めるzsh ありがとうございました