Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
pecoを使おう2015/05/04
三宅 英明(mollifier)
自己紹介
名前: 三宅 英明
Twitter: @mollifier
はてなID: mollifier
神戸のプログラマ
好きなもの
zsh
vim
vimperator
ブログとか
はてなブログ
http://mollifier.hatenablog.com/
Twitter
http://twitter.com/mollifier
Qiita
http://qiita.com/mollifier
pecoを使おう
pecoとは
pecoのインストール
pecoの基本
pecoで使う関数を作る
pecoを使おう
pecoとは
pecoのインストール
pecoの基本
pecoで使う関数を作る
pecoとは
インクリメンタルに絞り込んで、候補
から選んでなんかするやつ
pecoとは
プロジェクトページのURLは
https://github.com/peco/peco
pecoとは
言葉では説明しにくい
pecoとは
典型的には、コマンドライン履歴か
ら選んで、それを実行する
pecoとは
去年はやった
pecoとは
Anything風インタフェースとか呼ば
れることもある
pecoとは
Anything風インタフェースというの
は、もともとEmacsのやつ
Vimにもunite.vimという似たような
やつがある
pecoもそれに似てる
pecoとは
似てるけど、たぶん元のEmacsのや
つとはちょっと違う
なので、「pecoはAnythingですー
^^」とか適当に言うと、たぶん本気
のEmacsの人に怒られる
気をつけたほうがいい
pecoとは
使ってみないとよく分からない
使ってみましょう
pecoを使おう
pecoとは
pecoのインストール
pecoの基本
pecoで使う関数を作る
pecoのインストール
https://github.com/peco/
peco/releases にバイナリがある
ので、ダウンロードして好きな場所
に置く
実行パーミッションを付ける
pecoのインストール
安定したバージョンをインストール
できる
たぶん一番安心して使える方法
バージョンアップのときに手動でダ
ウンロードしないといけないのが欠
点
pecoのインストール
Macを使っている場合はHomebrew
でもインストールできる
% brew install peco
pecoのインストール
前はbrew tap peco/pecoというのが
必要だったけど、今はいらない
% brew tap peco/peco #<= これは不要
pecoのインストール
最新版とは限らない。若干バージョ
ンが古いこともある
更新はbrew update pecoででき
る。楽
Macの人にはわりとおすすめ
pecoのインストール
Macの人はbrew
それ以外の人はバイナリを手動で
ダウンロード
pecoを使おう
pecoとは
pecoのインストール
pecoの基本
pecoで使う関数を作る
pecoの基本
とりあえずpecoを使ってみる
pecoの基本
% cat /etc/passwd | peco
pecoの基本
要するに絞り込んで出力してるだけ
絞り込むときにインクリメンタルに絞
り込める
grepを手動でやってる感じ
pecoの基本
動作自体は非常に単純
peco単体では役に立たない
pecoの基本
たぶん意図的に単純にしてる
単純だから、他のコマンドと組み合
わせやすい
cutとかsedとかawkとか
複数の候補から選ばせるときに、
「選ばせる」という操作だけをpeco
に任せる感じ
pecoを使おう
pecoとは
pecoのインストール
pecoの基本
pecoで使う関数を作る
pecoで使う関数を作る
pecoは入力を絞り込んで出力する
だけのツール
他と組み合わせて使う
「他」の部分を作ってみましょう
pecoで使う関数を作る
pecoは入力を絞り込んで出力する
だけのツール
pecoで使う関数を作る
「入力」が必要
pecoの出力を「どうするか」という
処理も必要
pecoで使う関数を作る
典型的な例
「入力」 = コマンドライン履歴
「どうするか」 = コマンドとみなして
そのまま実行する
pecoで使う関数を作る
雰囲気でいうとこんな感じ
# コマンドライン履歴をpecoで絞り込む
# その結果を一旦変数に入れる
cmd=$(history | peco)
# それをそのまま実行する
eval "$cmd"
pecoで使う関数を作る
簡単な例
function h() {
local item
item=$(builtin history -n -r 1 | peco)
if [[ -z "$item" ]]; then
return 1
fi
e...
pecoで使う関数を作る
コマンドラインでhと打って使う
pecoで使う関数を作る
いちいちEnterを押すのがめんどう
という人は、Ctrl+rみたいなキーバ
インドで実行することもできる
pecoで使う関数を作る
Ctrl+x Ctrl+rで実行する例
何かのキーバインドで関数を呼び出す
ときはこう書く
function peco-execute-history() {
# この中に処理を書く
}
zle -N peco-exe...
pecoで使う関数を作る
Ctrl+x Ctrl+rで実行する例
function peco-execute-history() {
local item
item=$(builtin history -n -r 1 | peco)
if [[...
pecoで使う関数を作る
BUFFER="$item" で、今のコマンド
ラインの内容を置き換える
zle accept-lineでコマンドライン
を実行する。つまりEnterを押したの
と同じ
pecoで使う関数を作る
zle -Nとかいうのは、コマンドラインを
操作する処理を自分で作っているイメ
ージ
function peco-execute-history() {
# この中に処理を書く
}
zle -N peco-execut...
pecoで使う関数を作る
「コマンドラインを操作する処理」と
いうのは、Ctrl+fでカーソルを右に
動かす、とかそういうの
zshではそういうのを自分で作れる
pecoで使う関数を作る
さらにその中では現在のコマンドラ
インとかを変更できる
pecoで使う関数を作る
「手でコマンドラインを入力して」
「Enterを押す」という操作をzshの
シェルスクリプトから操作できる
peco自体は他のシェルでも使える
けど、zshはこのへんが柔軟なので
pecoと組み合わせて使いやすい
pecoで使う関数を作る
さっきと同じだけど、コマンドラインに
代入するだけの例
function peco-put-history() {
local item
item=$(builtin history -n -r 1 | peco)
i...
pecoで使う関数を作る
さっきのzle accept-line(Enterを
押す)をなくしただけ
これも便利
pecoで使う関数を作る
ここまででできたこと
「履歴から選んで実行する」
「履歴から選んでコマンドラインに
挿入する」
pecoで使う関数を作る
他には?
もちろん工夫次第でいろいろできる
pecoで使う関数を作る
工夫次第?
工夫次第 = シェルスクリプトでがん
ばれば
pecoで使う関数を作る
普通のシェルスクリプトで書ける
head, sort, uniq, sed, awk など
など
テキスト処理なので、Perl, Rubyと
かを使ってもいい
pecoで使う関数を作る
シェルスクリプトでがんばれば
がんばりたくない
pecoで使う関数を作る
シェルスクリプトが苦手な人はどう
したらええの?
そういう人向けのやつがあります
pecoで使う関数を作る
続きは次の発表で
pecoを使おう
ありがとうございました
Upcoming SlideShare
Loading in …5
×

pecoを使おう

3,188 views

Published on

pecoを使おう

Published in: Technology
  • Be the first to comment

pecoを使おう

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

×