You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
最近はghq+pecoでリポジトリのあるディレクトリ、cdr+pecoで最近訪れた ディレクトリに簡単に移動できて、非常に捗っている。 ghq+pecoとcdr+pecoはそれぞれ以下の記事が詳しい。 ghqを使ったローカルリポジトリの統一的・効率的な管理について - delirious thoughts pecoを使い始めた - $shibayu36->blog; ただ、ghq+pecoはC-x C-y、cdr+pecoはC-x bと、当然別々のキーになるの で、どっちを使うか考えたり間違えたりするのでモヤモヤしていた。 Emacsは自作のhelm-ghq.el で同じ操作感にしていたので、同じモヤモヤだっ たが、最近来たPull Request を取り込んでからは改善。 C-x b (helm-for-files)でghqの出力も出すことでキーバインドを1つに集 約できた。C-x C-
chpwd_for_zsh.sh �vC�U [vC�U chpwd() { ls_abbrev } ls_abbrev() { # -a : Do not ignore entries starting with .. # -C : Force multi-column output. # -F : Append indicator (one of */=>@|) to entries. local cmd_ls='ls' local -a opt_ls opt_ls=('-aCF' '--color=always') case "${OSTYPE}" in freebsd*|darwin*) if type gls > /dev/null 2>&1; then cmd_ls='gls' else # -G : Enable colorized output. opt_ls=('-a
Pecoが流行っているので使ってみたらよい感じだったので開始してみました。 現状、多くのスニペットが特定のコマンド専用っぽい感じだったので、変化球を。 function peco-dfind() { local current_buffer=$BUFFER # .git系など不可視フォルダは除外 local selected_dir="$(find . -maxdepth 5 -type d ! -path "*/.*"| peco)" if [ -d "$selected_dir" ]; then BUFFER="${current_buffer} \"${selected_dir}\"" CURSOR=$#BUFFER # ↓決定時にそのまま実行するなら #zle accept-line fi zle clear-screen } zle -N peco-dfind bindkey '
まず, 他のシェルをお使いの人にはごめんなさい. aliasコマンドの-sが使えるのは zsh 4.2.x- で, 他のシェルでは実装されていないと思います. あと, もう既に alias -s 知ってるよーって人は読まなくていいです. alias -s って何? 打ったコマンドの後ろ(suffix)を見て, 適当に宜しくやってくれるやつです. 次の例を見て下さい. ~$ echo "print ('hello, world')" > hello.py ~$ python hello.py hello, world ~$ alias -s py=python py=python ~$ ./hello.py hello, world ~$ Pythonのコードは python hello.py で実行出来ますが, お尻が py なら python を使います, とaliasしておけば, ./
昔、最近commitされたブランチをanythingライクに絞り込んでcheckoutする、というものをzawの時もpercolの時も実装していた。 zawを使って最近更新したブランチをチェックアウトする - $shibayu36->blog; ターミナル版anything的なpercolをzawの代わりに試してみた - $shibayu36->blog; 最近はpecoを使うようになったので、ほぼコピペで再実装した。 設定方法 git-recent-branches.zshのようなファイルを用意し、peco-git-recent-branchesとpeco-git-recent-all-branchesを実装する。 function peco-git-recent-branches () { local selected_branch=$(git for-each-ref --forma
みんな大好きpecoを使って、git add出来るようにした 作ったもの 深いディレクトリにあるファイルが複数ある時、zshのtab補完でやるのも面倒だったので、peco使ってやりたいな〜と思ったからzsh関数書いた コード 複数選択に対応した 上のgifのように複数選択出来る 検索のハイライトと選択中のハイライトの色が被ってるため見難くなってしまっている function peco-select-gitadd() { local SELECTED_FILE_TO_ADD="$(git status --porcelain | \ peco --query "$LBUFFER" | \ awk -F ' ' '{print $NF}')" if [ -n "$SELECTED_FILE_TO_ADD" ]; then BUFFER="git add $(echo "$SELECTED_FI
pecoというインタラクティブに入力をフィルタして出力するコマンドがあって、使い始めてからシェルの操作方法が大幅にかわり、だいぶライフチェンジングだった。 最近このへんが流行ってるのでやたら記事あるけど、せっかくなので僕も使い道を紹介しようと思う。 pecoをzshで使う 1. peco ghq ghqを使ったローカルリポジトリの統一的・効率的な管理についてのこと。 僕も$GOPATHは$HOMEにしていて、今のところ別に困ることはない。 go getしたりghq getしたりして美しくディレクトリ切った上で、pecoに割り当てておいたC-sですぐ目的のディレクトリ開けるようにしてあるので、めちゃくちゃソース管理が楽になった。 function peco-src() { local selected_dir=$(ghq list | peco --query "$LBUFFER") if
ちょっと前にpercolからpecoに乗り換えた。 実際に速度測ったわけではないけど、percolと比べて早くなった気がする。 https://github.com/peco/peco そんで、percolの時からだけど、peco-hogehogeみたいなfunction作ってkey-bind設定してたけど、多くなってくると記憶の容量が少ない僕は全てを覚えてられないので、pecoに関するfunctionを一覧で表示して、pecoで選択出来るようにすれば便利なんじゃねと思って、peco-function-listというの作ってみた。 # .zsh/peco-function-list.zsh function peco-function-list () { local selected=$(functions | grep "^.*\ ()\ {" | sed -e "s| () {||"
動機 zsh + pecoによるヒストリ呼び出しが便利 呼び出したヒストリを編集して使い回す という作業を何度かやってる内に、ワンライナーをテンプレート管理して呼び出しても便利な気がしてきた 棲み分けとしては下記のようなケースを想定 ヒストリ呼び出し 過去と全く同じコマンドを叩く 過去と全く同じではないが編集箇所が少ないコマンドを叩く 叩く頻度もそこそこ高い ワンライナー呼び出し ヒストリ呼び出して使い回そうとすると編集箇所が結構多い 何をやるコマンドだったかよく覚えてない たまにしか叩かないけど便利なコマンド 「たまに叩く」「よく覚えてない」の気休め的対策として、コメントも残して管理出来ればベター 作るもの ワンライナーを可変パラメータを含めて登録 登録したワンライナーをpeco経由で呼び出し 呼び出したワンライナーの可変パラメータ部分を実際の内容に置き換えて実行 動作確認環境 Cent
まえがき 今回はMacにGoをインストールして、『peco』というGoのパッケージをインストールして、zshのヒストリをいい感じに使ってみようっと思います。 こんなかんじのことができるようになります。 開発環境 MacOSX go 1.2.1 darwin/amd64 peco: v0.1.10 Goとpecoのインストール Goはhomebrewで、pecoは『go get』コマンドを使ってインストールしてみます。 brew install go 次に『.zshrc』にgoのパッケージのパスを書いておきます ####################################### # go path ####################################### export GOPATH=~/go export PATH=$PATH:$GOPATH/bin ほいで
なんかpercol最近いきなり流行ってるなーと思ってたら、percolのgo版pecoがいつの間にか出てて流行ってた。ターミナル版anything的なpercolをzawの代わりに試してみた - $shibayu36->blog;みたいな感じで、昔からpercol使っててまあいいかと思ってたけど 設定ファイルが分かりやすい brewで簡単に入れることが出来る そこそこ開発されてる というメリットもありそうなので乗り換えようとしてみている。 https://github.com/peco/peco pecoのファイル運用 前と大体同じ感じでやる。基本的にこういうツールは自分でいろいろ作りたくなってきて、設定が増えてきて破滅するので、ファイルを置くディレクトリを決めておいてそこに置いておくことにする。 .zshrc : 決めたディレクトリのファイルの全ロードと、キーバインドの設定 ~/.zsh
以前にSheetというスニペットツールを利用すると大変便利と書いた。 CUIなスニペットツールsheetが便利なのでzshでsheetファイルを補完 - Glide Note - グライドノート で、障害対応で使うコマンドとかよく忘れるコマンドを大量に登録してて、毎日使ってて重宝してるんですが、スニペットが 増えると管理が破綻する問題があって、pecoやpercolを使えば解決出来そうと思ってやってみた。 仕組み snippets用のファイル or sheetのスニペットファイルをpeco/percolで絞りこんで、クリップボードに送ったりして簡単に利用できるようにする よく使うコマンドのスニペットファイルを用意 sheetの資産をそのまま利用も出来るんですが、今回は下記のような感じでファイルを~/.snippetsで用意。私が使ってるやつから一部抜粋。 1 2 3 4 5 6 7 8 9
初めに ghq というコマンドがある。GitHub のリポジトリをクローンしていい感じに管理するコマンドだ。 これには zsh 補完ファイルも含まれているんだけど、補完できないオプションあったりして、いまいちだった。なのでそれを直すことにした。 何日か前に修正して Pull Request を送ったら無事取り込まれたので、どういう感じで修正したのか、その過程を紹介してみる。補完関数の書き方が分からない人でも雰囲気は伝わると思うので参考にしてみてほしい。 ちなみに、ghq 自体の詳しい使い方は作った人の紹介記事を見るのが良いと思う。 どこを直すか まず、ghq コマンドの基本的な使い方はこんな感じ。 # GitHub の mollifier/config リポジトリをローカルに clone する % ghq get mollifier/config # clone したリポジトリを一覧表示す
先日、shell勉強会で「zawを使ってシェル操作を快適に」というお話を聴いて、自分ももう少しそのあたりの環境を整えよう、と思い立った。 nanapi勉強会 vol2 - Shellの活用でこれだけ毎日が便利になる - nanapi勉強会 | Doorkeeper zawで快適シェル生活 // Speaker Deck 自分が使う選択をしたのは zaw ではなく percol 。 軽く調べてみたかんじでは zawってのは設定してある(もしくは自作する)決められたsourceを使って決められた操作を行うもので、zshに密接に結び付いているツールで。percolはそういうのではなく純粋に「入力をフィルタリングする」だけのツールなので、パイプなどを使って各コマンドと組み合わせることで色々な使い方ができそう。 percolの導入 https://github.com/mooz/percol Pyt
zshでのgitコマンドの入力補完を設定する方法はいくつかあるようですが、最近はgitのソースツリーにcontrib/completion/git-completion.zshというものが含まれているので、今回はそれを利用する手順を紹介します。 設定を行うと、以下のようにコマンドやリモートリポジトリ、ブランチ名の補完ができるようになります。 今回、動作を確認した環境は以下の通りです。 Mac OS X 10.8.3 zsh 5.0.2 git 1.8.2.3 zshとgitをHomebrewでインストールしている場合は、zshの設定を行うだけで作業完了です。git 1.8.2.2に含まれる補完定義ファイルとgit 1.8.2.3に含まれるそれとでは結構違いがあるようなので(コミットログ)、gitはできるだけ最新版にアップデートしておきましょう。 Homebrewを使っていない場合は、補完定
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く