Your SlideShare is downloading. ×
pecoを使おう
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

pecoを使おう

117

Published on

pecoを使おう

pecoを使おう

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
117
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

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. pecoを使おう2015/05/04 三宅 英明(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. pecoを使おう pecoとは pecoのインストール pecoの基本 pecoで使う関数を作る
  • 6. pecoを使おう pecoとは pecoのインストール pecoの基本 pecoで使う関数を作る
  • 7. pecoとは インクリメンタルに絞り込んで、候補 から選んでなんかするやつ
  • 8. pecoとは プロジェクトページのURLは https://github.com/peco/peco
  • 9. pecoとは 言葉では説明しにくい
  • 10. pecoとは 典型的には、コマンドライン履歴か ら選んで、それを実行する
  • 11. pecoとは 去年はやった
  • 12. pecoとは Anything風インタフェースとか呼ば れることもある
  • 13. pecoとは Anything風インタフェースというの は、もともとEmacsのやつ Vimにもunite.vimという似たような やつがある pecoもそれに似てる
  • 14. pecoとは 似てるけど、たぶん元のEmacsのや つとはちょっと違う なので、「pecoはAnythingですー ^^」とか適当に言うと、たぶん本気 のEmacsの人に怒られる 気をつけたほうがいい
  • 15. pecoとは 使ってみないとよく分からない 使ってみましょう
  • 16. pecoを使おう pecoとは pecoのインストール pecoの基本 pecoで使う関数を作る
  • 17. pecoのインストール https://github.com/peco/ peco/releases にバイナリがある ので、ダウンロードして好きな場所 に置く 実行パーミッションを付ける
  • 18. pecoのインストール 安定したバージョンをインストール できる たぶん一番安心して使える方法 バージョンアップのときに手動でダ ウンロードしないといけないのが欠 点
  • 19. pecoのインストール Macを使っている場合はHomebrew でもインストールできる % brew install peco
  • 20. pecoのインストール 前はbrew tap peco/pecoというのが 必要だったけど、今はいらない % brew tap peco/peco #<= これは不要
  • 21. pecoのインストール 最新版とは限らない。若干バージョ ンが古いこともある 更新はbrew update pecoででき る。楽 Macの人にはわりとおすすめ
  • 22. pecoのインストール Macの人はbrew それ以外の人はバイナリを手動で ダウンロード
  • 23. pecoを使おう pecoとは pecoのインストール pecoの基本 pecoで使う関数を作る
  • 24. pecoの基本 とりあえずpecoを使ってみる
  • 25. pecoの基本 % cat /etc/passwd | peco
  • 26. pecoの基本 要するに絞り込んで出力してるだけ 絞り込むときにインクリメンタルに絞 り込める grepを手動でやってる感じ
  • 27. pecoの基本 動作自体は非常に単純 peco単体では役に立たない
  • 28. pecoの基本 たぶん意図的に単純にしてる 単純だから、他のコマンドと組み合 わせやすい cutとかsedとかawkとか 複数の候補から選ばせるときに、 「選ばせる」という操作だけをpeco に任せる感じ
  • 29. pecoを使おう pecoとは pecoのインストール pecoの基本 pecoで使う関数を作る
  • 30. pecoで使う関数を作る pecoは入力を絞り込んで出力する だけのツール 他と組み合わせて使う 「他」の部分を作ってみましょう
  • 31. pecoで使う関数を作る pecoは入力を絞り込んで出力する だけのツール
  • 32. pecoで使う関数を作る 「入力」が必要 pecoの出力を「どうするか」という 処理も必要
  • 33. pecoで使う関数を作る 典型的な例 「入力」 = コマンドライン履歴 「どうするか」 = コマンドとみなして そのまま実行する
  • 34. pecoで使う関数を作る 雰囲気でいうとこんな感じ # コマンドライン履歴をpecoで絞り込む # その結果を一旦変数に入れる cmd=$(history | peco) # それをそのまま実行する eval "$cmd"
  • 35. pecoで使う関数を作る 簡単な例 function h() { local item item=$(builtin history -n -r 1 | peco) if [[ -z "$item" ]]; then return 1 fi eval "$item" }
  • 36. pecoで使う関数を作る コマンドラインでhと打って使う
  • 37. pecoで使う関数を作る いちいちEnterを押すのがめんどう という人は、Ctrl+rみたいなキーバ インドで実行することもできる
  • 38. pecoで使う関数を作る Ctrl+x Ctrl+rで実行する例 何かのキーバインドで関数を呼び出す ときはこう書く function peco-execute-history() { # この中に処理を書く } zle -N peco-execute-history bindkey '^x^r' peco-execute-history
  • 39. pecoで使う関数を作る Ctrl+x Ctrl+rで実行する例 function peco-execute-history() { local item item=$(builtin history -n -r 1 | peco) if [[ -z "$item" ]]; then return 1 fi BUFFER="$item" zle accept-line } zle -N peco-execute-history bindkey '^x^r' peco-execute-history
  • 40. pecoで使う関数を作る BUFFER="$item" で、今のコマンド ラインの内容を置き換える zle accept-lineでコマンドライン を実行する。つまりEnterを押したの と同じ
  • 41. pecoで使う関数を作る zle -Nとかいうのは、コマンドラインを 操作する処理を自分で作っているイメ ージ function peco-execute-history() { # この中に処理を書く } zle -N peco-execute-history bindkey '^x^r' peco-execute-history
  • 42. pecoで使う関数を作る 「コマンドラインを操作する処理」と いうのは、Ctrl+fでカーソルを右に 動かす、とかそういうの zshではそういうのを自分で作れる
  • 43. pecoで使う関数を作る さらにその中では現在のコマンドラ インとかを変更できる
  • 44. pecoで使う関数を作る 「手でコマンドラインを入力して」 「Enterを押す」という操作をzshの シェルスクリプトから操作できる peco自体は他のシェルでも使える けど、zshはこのへんが柔軟なので pecoと組み合わせて使いやすい
  • 45. pecoで使う関数を作る さっきと同じだけど、コマンドラインに 代入するだけの例 function peco-put-history() { local item item=$(builtin history -n -r 1 | peco) if [[ -z "$item" ]]; then return 1 fi BUFFER="$item" CURSOR=$#BUFFER } zle -N peco-put-history bindkey '^x^p' peco-put-history
  • 46. pecoで使う関数を作る さっきのzle accept-line(Enterを 押す)をなくしただけ これも便利
  • 47. pecoで使う関数を作る ここまででできたこと 「履歴から選んで実行する」 「履歴から選んでコマンドラインに 挿入する」
  • 48. pecoで使う関数を作る 他には? もちろん工夫次第でいろいろできる
  • 49. pecoで使う関数を作る 工夫次第? 工夫次第 = シェルスクリプトでがん ばれば
  • 50. pecoで使う関数を作る 普通のシェルスクリプトで書ける head, sort, uniq, sed, awk など など テキスト処理なので、Perl, Rubyと かを使ってもいい
  • 51. pecoで使う関数を作る シェルスクリプトでがんばれば がんばりたくない
  • 52. pecoで使う関数を作る シェルスクリプトが苦手な人はどう したらええの? そういう人向けのやつがあります
  • 53. pecoで使う関数を作る 続きは次の発表で
  • 54. pecoを使おう ありがとうございました

×