SlideShare a Scribd company logo
1 of 47
Download to read offline
anyframeを使おう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
anyframeを使おう
anyframeとは
anyframeのインストール
anyframeの設定
anyframeでできること
自分で関数を追加する
anyframeを使おう
anyframeとは
anyframeのインストール
anyframeの設定
anyframeでできること
自分で関数を追加する
anyframeとは
pecoと組み合わせて使う関数が入
ってるやつ
mollifierさんが作った
https://github.com/mollifier/
anyframe
anyframeとは
要するに便利な関数が入ってるだ
け
自分で書けない/書きたくない人向
け
anyframeとは
作ろうと思ったきっかけ
anyframeとは
ググったらよく出てくるやつ
function peco-select-history() {
local tac
if which tac > /dev/null; then
tac="tac"
else
tac="tail -r"
fi
BUFFER=$(history -n 1 | 
eval $tac | 
peco --query "$LBUFFER")
CURSOR=$#BUFFER
zle clear-screen
}
zle -N peco-select-history
anyframeとは
間違いではない
動く
でも無駄なことしてる
なんかかっこわるい
かっこわるいポイント1
evalしてる
eval $tac | 
# こうすればevalしなくてもいける
${=tac} |
かっこわるいポイント2
そもそもtacとかいらない
historyの-rオプションで上下順番が
逆になる
BUFFER=$(history -n -r 1 | 
peco --query "$LBUFFER")
anyframeとは
manに書いてある
man読めば分かる
anyframeとは
でも実際にはみんなコピペで使う
ブログとかにコピペで広まってる
多すぎてもう直せない
anyframeとは
じゃあちゃんとしたやつを作ろう
ブログ記事は直せない
でもGitHubに置けば直せる
プルリクもできる
anyframeとは
というわけでanyframeを作りました
anyframeとは
特徴
普通の人が使いたいと思う関数が
だいたい入ってる
peco、percol、fzfに対応してる
anyframeとは
特徴
aliasでもbindkey(キーボード シ
ョートカットから呼び出すやつ)でも、
どちらからでも使える
選んだ結果をすぐに実行するのも、
コマンドラインに挿入するのもできる
拡張しやすい
anyframeとは
現状ではあんまりはやってない
ぜひ使いましょう
anyframeを使おう
anyframeとは
anyframeのインストール
anyframeの設定
anyframeでできること
自分で関数を追加する
anyframeのインストール
まずは先にpeco、percol、fzfをイン
ストールしておく
どれかひとつ好きなやつでOK
特に理由がなければ、pecoが無難
anyframeのインストール
手動でインストールする方法
$HOME/.zsh/の下にインストールす
る場合の例
# ディレクトリがまだない場合は作成する
% mkdir $HOME/.zsh/
% cd $HOME/.zsh/
% git clone git@github.com:mollifier/anyframe.git
anyframeのインストール
そのあと~/.zshrcに次の設定を追加
する
fpath=($HOME/.zsh/anyframe(N-/) $fpath)
autoload -Uz anyframe-init
anyframe-init
anyframeのインストール
Antigenでもインストールできる
antigen bundle mollifier/anyframe
anyframeを使おう
anyframeとは
anyframeのインストール
anyframeの設定
anyframeでできること
自分で関数を追加する
anyframeの設定
使い方は、関数があるので、それに
キーバインドを割り当てるだけ
anyframeの設定
~/.zshrcの設定の例
bindkey '^xb' anyframe-widget-cdr
bindkey '^x^b' anyframe-widget-checkout-git-branch
bindkey '^x^r' anyframe-widget-execute-history
bindkey '^x^p' anyframe-widget-put-history
bindkey '^x^g' anyframe-widget-cd-ghq-repository
bindkey '^x^k' anyframe-widget-kill
bindkey '^x^i' anyframe-widget-insert-git-branch
anyframeの設定
割り当てできる関数は https://
github.com/mollifier/
anyframe/tree/master/
anyframe-functions/widgets の
中にある
anyframeを使おう
anyframeとは
anyframeのインストール
anyframeの設定
anyframeでできること
自分で関数を追加する
anyframeでできること
anyframe-widget-execute-history
コマンドライン履歴から選んで実行する
anyframe-widget-put-history
コマンドライン履歴から選んでコマンドライン
に挿入する
anyframeでできること
anyframe-widget-checkout-git-
branch
Gitブランチを切り替える
anyframe-widget-insert-git-
branch
Gitブランチ名をコマンドラインに挿入する
anyframeでできること
anyframe-widget-cdr
過去に移動したことのあるディレクトリに移
動する(cdrが必要)
anyframe-widget-kill
プロセスをkillする
anyframeでできること
anyframe-widget-cd-ghq-
repository
ghqコマンドで管理しているリポジトリに移
動する(ghqが必要)
anyframe-widget-insert-filename
ファイル名をコマンドラインに挿入する
anyframeでできること
anyframe-widget-tmux-attach
tmuxセッションを選んでアタッチする
anyframe-widget-select-widget
anyframe-widget(anyframeで使える関数
)から選んでそれを実行する
anyframeを使おう
anyframeとは
anyframeのインストール
anyframeの設定
anyframeでできること
自分で関数を追加する
自分で関数を追加する
もちろん、自分で関数を追加できる
anyframeに含まれている他の関数
が使える
自分で一から書くより楽
自分で関数を追加する
具体的な書き方はと言うと
自分で関数を追加する
まず、ファイルを保存するためのディレ
クトリを作る。$HOME/.zsh/
anyframe-customの下に配置する場
合の例
# ディレクトリがまだない場合は作成する
# このディレクトリ名は何でも良い
% mkdir -p $HOME/.zsh/anyframe-custom
% cd $HOME/.zsh/anyframe-custom
# このディレクトリ名は固定
% mkdir -p anyframe-functions/widgets
自分で関数を追加する
antigen bundleする前(anyframe-
initを呼び出す前)に、このディレクトリ
を$fpathに追加する。
if [[ -f ~/.zsh/antigen/antigen.zsh ]]; then
source ~/.zsh/antigen/antigen.zsh
fpath=($HOME/.zsh/anyframe-custom(N-/) $fpath) # <= これを追加
antigen bundle mollifier/anyframe
antigen apply
fi
自分で関数を追加する
これでひとまず準備完了
自分で関数を追加する
次に、作ったディレクトリの下
($HOME/.zsh/anyframe-custom)
にファイルを作って、zshの関数の中身
を書く。
history -n -r 1 
| anyframe-selector-auto 
| anyframe-action-execute
自分で関数を追加する
後は、aliasを設定するかbindkeyでキ
ーバインドを割り当てる
alias ah=anyframe-widget-execute-history
# または
bindkey '^xr' anyframe-widget-execute-history
ファイル名が関数名になるので、実際
にはanyframe-widget-execute-
historyの部分はファイル名に置き換
える
自分で関数を追加する
自分で追加するのはちょっとややこ
しい
詳しくは以下の記事を参照
http://qiita.com/mollifier/
items/81b18c012d7841ab33c
3
anyframeを使おう
でも、普通に使う分にはだいたい使
えると思う
anyframeを使おう
ぜひ使ってみてください
anyframeを使おう
ありがとうございました

More Related Content

What's hot

Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識alwei
 
Unite vim
Unite vim Unite vim
Unite vim Shougo
 
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜Shougo
 
modern X86 environment
modern X86 environmentmodern X86 environment
modern X86 environmentShougo
 
neobundle.vimについて+おまけ
neobundle.vimについて+おまけneobundle.vimについて+おまけ
neobundle.vimについて+おまけShougo
 
初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発Daisuke Kikuchi
 
Shougoの開発環境
Shougoの開発環境Shougoの開発環境
Shougoの開発環境Shougo
 
Iemoto hatamotoハンズオン
Iemoto hatamotoハンズオンIemoto hatamotoハンズオン
Iemoto hatamotoハンズオン西村 州平
 
neovim = VM
neovim = VMneovim = VM
neovim = VMShougo
 
Vim = VM
Vim = VMVim = VM
Vim = VMShougo
 
【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオン
【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオン【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオン
【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオンKohki Nakaji
 
Vimから見たemacs
Vimから見たemacsVimから見たemacs
Vimから見たemacsShougo
 
暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacsShougo
 
LT middleman で tumblr テーマ が開発してみた件
LT middleman で tumblr テーマ が開発してみた件LT middleman で tumblr テーマ が開発してみた件
LT middleman で tumblr テーマ が開発してみた件Jun Mori
 
Ultimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vimUltimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vimShougo
 
うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?Masahiro Sano
 

What's hot (20)

Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識
 
Unite vim
Unite vim Unite vim
Unite vim
 
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
 
modern X86 environment
modern X86 environmentmodern X86 environment
modern X86 environment
 
neobundle.vimについて+おまけ
neobundle.vimについて+おまけneobundle.vimについて+おまけ
neobundle.vimについて+おまけ
 
初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発
 
Shougoの開発環境
Shougoの開発環境Shougoの開発環境
Shougoの開発環境
 
Iemoto hatamotoハンズオン
Iemoto hatamotoハンズオンIemoto hatamotoハンズオン
Iemoto hatamotoハンズオン
 
neovim = VM
neovim = VMneovim = VM
neovim = VM
 
Vim = VM
Vim = VMVim = VM
Vim = VM
 
rucs_vim LT
rucs_vim LTrucs_vim LT
rucs_vim LT
 
Symfony2 workshop-1
Symfony2 workshop-1Symfony2 workshop-1
Symfony2 workshop-1
 
【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオン
【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオン【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオン
【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオン
 
15分でわかる zsh
15分でわかる zsh15分でわかる zsh
15分でわかる zsh
 
Vimから見たemacs
Vimから見たemacsVimから見たemacs
Vimから見たemacs
 
Vimはこわくない
VimはこわくないVimはこわくない
Vimはこわくない
 
暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacs
 
LT middleman で tumblr テーマ が開発してみた件
LT middleman で tumblr テーマ が開発してみた件LT middleman で tumblr テーマ が開発してみた件
LT middleman で tumblr テーマ が開発してみた件
 
Ultimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vimUltimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vim
 
うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?
 

Similar to anyframeを使おう

5年間Yokohama.vimをやってみて感じた事
5年間Yokohama.vimをやってみて感じた事5年間Yokohama.vimをやってみて感じた事
5年間Yokohama.vimをやってみて感じた事gu4
 
Firefox os simulatorについて
Firefox os simulatorについてFirefox os simulatorについて
Firefox os simulatorについてHiroki Kakuno
 
おすすめVimプラグインまとめ
おすすめVimプラグインまとめおすすめVimプラグインまとめ
おすすめVimプラグインまとめShun Iwase
 
C# から Ruby に乗り換えた
C# から Ruby に乗り換えたC# から Ruby に乗り換えた
C# から Ruby に乗り換えたHideaki Miyake
 
Ruby on vim yokohama.vim発表資料
Ruby on vim yokohama.vim発表資料Ruby on vim yokohama.vim発表資料
Ruby on vim yokohama.vim発表資料Shohei Kobayashi
 
こわくないSymfony2 - 業務で使って気づいた7つの良いところ
こわくないSymfony2 - 業務で使って気づいた7つの良いところこわくないSymfony2 - 業務で使って気づいた7つの良いところ
こわくないSymfony2 - 業務で使って気づいた7つの良いところGo Nakanishi
 
Scala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまでScala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまでHideaki Miyake
 

Similar to anyframeを使おう (7)

5年間Yokohama.vimをやってみて感じた事
5年間Yokohama.vimをやってみて感じた事5年間Yokohama.vimをやってみて感じた事
5年間Yokohama.vimをやってみて感じた事
 
Firefox os simulatorについて
Firefox os simulatorについてFirefox os simulatorについて
Firefox os simulatorについて
 
おすすめVimプラグインまとめ
おすすめVimプラグインまとめおすすめVimプラグインまとめ
おすすめVimプラグインまとめ
 
C# から Ruby に乗り換えた
C# から Ruby に乗り換えたC# から Ruby に乗り換えた
C# から Ruby に乗り換えた
 
Ruby on vim yokohama.vim発表資料
Ruby on vim yokohama.vim発表資料Ruby on vim yokohama.vim発表資料
Ruby on vim yokohama.vim発表資料
 
こわくないSymfony2 - 業務で使って気づいた7つの良いところ
こわくないSymfony2 - 業務で使って気づいた7つの良いところこわくないSymfony2 - 業務で使って気づいた7つの良いところ
こわくないSymfony2 - 業務で使って気づいた7つの良いところ
 
Scala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまでScala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまで
 

Recently uploaded

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 

Recently uploaded (10)

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 

anyframeを使おう