Heroku CLI 用の zsh 設定は不要だった件

タイトルは少し端折っていて、正確には ~/.zshrc に以下の設定が必要です。 # $FPATH 以下にある補完コレクションを使う。 autoload -Uz compinit; compinit -u これは Heroku CLI 固有の設定ではありません。ls や git などにも適用 される補完を有効にする設定です。 macOS High Sierra 付属の zsh の $FPATH デフォルト値です。 $ echo $FPATH | tr ':' '\n' /usr/local/share/zsh/site-functions /usr/share/zsh/site-functions /usr/share/zsh/5.3/functions このように補完が効きます。App の補完はうれしい。 ここに至った経緯 1/2 Heroku CLI は $ brew install heroku でインストールしており、 /usr/local/share/zsh/site-functions/_heroku があります。 そのため、初めはこんな設定をしていました。 FPATH=/usr/local/share/zsh/site-functions:$FPATH でも前述したように /usr/local/share/zsh/site-functions は $FPATH のデフォルト値に含まれているので不要でした。削除。 ここに至った経緯 2/2 別件で $ brew install heroku は obsolete で、 現在は $ brew install heroku/brew/heroku だと知りました。...

2018-10-28 (Sun) · masutaka

helm-bundle-show.elを作ったら、またEmacsから離れられなくなった

bundleしてるgemにcdする。pecoで絞り込みつつ - Qiita Emacsでも同じことがやりたかったので、helm-bundle-show.elを作りまし た。絶対誰か作っているだろ!と思って探したけどありませんでした。 MELPAにも取り込まれた ので、M-x package-install helm-bundle-showで インストールできます。 私は “C-x y” に割り当てました。便利! (define-key ctl-x-map (kbd "y") 'helm-bundle-show) パッケージ名をhelm-bundlerにするか、helm-bundle-showにするか悩みま した。helm-bundlerだと責務が大きくなりそうなので、helm-bundle-show にしました。 ちなみにzshの関数はこんなのを作りました。awkでprint以外使ったの初 めてかも。 function peco_bundle_show() { local selected_dir=$(bundle show | awk 'NR>1 {print $2}' | peco | xargs bundle show) if [ -n "$selected_dir" ]; then BUFFER="cd ${selected_dir}" zle accept-line fi zle clear-screen } zle -N peco_bundle_show bindkey '^xy' peco_bundle_show

2015-04-13 (Mon) · masutaka

ghqとcdrの出力を一緒にpecoに食わせたら捗った

最近は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-yのキーバインドは削除。 C-x bでこのような一覧が表示されて、絞り込む感じ。 ghq list –full-pathの出力 現在開いているバッファ 最近開いたファイル カレントディレクトリにあるファイルやディレクトリ 複数のソースを出力していても、混乱しないどころか便利に使えたので、 zshも同じでいいじゃんと思い、変更した関数がこれ。(リファクタリング出来そう…) ghqとcdrの両方の出力が候補に出ているのが分かると思う。 C-x bだけでghqとcdrを呼び出せるし、Emacsと操作が同じだし、非常に満 足行く設定になった。 IFSをいじっているのは、スペースを含むディレクトリも適切に処理するた め。デリミタを改行だけにしている。 awkの処理はソートなしの重複削除。なんでこれで出来るのか全く分からな いけど。。 loading... 追記(2014-10-07): local selected_dir=...の前で、以下のmy-compact-chpwd-recent-dirs を呼ぶときれいな一覧になります。 zshの機能のみで既に存在しないディレクトリをcdrのリストから削除する - @znz blog

2014-09-06 (Sat) · masutaka

pyenvとpercolをインストールした

数年前にRTMに入れたままになってましたが、ようやくpercolをインストー ルしました。zshでhelmっぽい履歴検索をやりたかったためです。 https://github.com/mooz/percol ※ 最近の毎週木曜日は、会社の人ともくもくしています。 作者はあのKeySnail のmoozさん。2年くらい前にお会いしましたが、お元気 でしょうか。 README.mdに書いてあったHOMEにインストールする方法だと、以下のエラー が出て使えませんでした。Python力ゼロなので分かりません。 $ ps aux | percol Traceback (most recent call last): File "/Users/masutaka/.local/bin/percol", line 29, in <module> from percol.cli import main ImportError: No module named percol.cli 試しにpyenvでPythonをインストールし、そこにpipでpercolをインストー ルすることにしました。 pyenvはbrewでインストールできます。python-build的なものやpipも同時 に入るので楽ちん。 最新のPython2系とpercolはこんな感じでインストールできます。 $ pyenv install 2.7.7 $ pyenv global 2.7.7 && pyenv rehash && rehash $ pip install percol $ pyenv rehash && rehash percolの設定ファイルは~/.percol.d/rc.pyです。色を自分好みに、キーバ インドをREADME.mdに書いてあったEmacs風にしました。 percol.view.PROMPT = ur"<on_blue>QUERY></on_blue> <on_red><on_red>%q</on_red>" percol.view.CANDIDATES_LINE_BASIC = ("black", "on_white") percol....

2014-06-20 (Fri) · masutaka

zshの履歴検索は↑やC-rだけじゃないよM-pもあるよ&履歴マニアの話

少し前にこちらの記事が話題になりました。 naoya_itoの火を噴いたシェルtips - Togetterまとめ rebuild.fmのEpisode41 でも言及されていた気がします。 弊社フィードフォース でも、ペアプロの時にこういった話をすることはあります。ただ、C-rやC-uは知られていても、M-pはあまり知られていない雰囲気でしたのでまとめました。 はじめに M-pやM-nは、Escapeを押して離してpまたはnです。 OSXのターミナルをお使いの方は以下を設定すると、option-pまたはoption-nが使えます。それ以外の環境ではAltが使えるかもしれません。 デフォルトの動作を知る デフォルトのM-pとM-nには、それぞれhistory-search-backwardとhistory-search-forwardが割り当てられています。 敢えて設定を書くとこんな感じです。 bindkey "^[p" history-search-backward bindkey "^[n" history-search-forward “git re"のあとにM-pを続けて打つ様子。“git"にマッチした履歴が現れます。M-nすると戻ってきます。 既存の関数をキーに割り当てる 以下の設定をすると、マッチする履歴が変わります。 bindkey "^[p" history-beginning-search-backward bindkey "^[n" history-beginning-search-forward 設定場所は~/.zshrcが適切でしょう。[2002-05-14-1] “git re"のあとにM-pを続けて打つ様子。今度は"git re"から始まる履歴にマッチします。こちらの方が直感的だと思います。 期待する履歴が現れたらReturnキーで確定して下さい。C-eで行末に移動したくなりますが不要です。 もう少しカスタマイズ 以下の設定をすると、ヒット後のカーソル位置が変わります。 autoload -U history-search-end zle -N history-beginning-search-backward-end history-search-end zle -N history-beginning-search-forward-end history-search-end bindkey "^[p" history-beginning-search-backward-end bindkey "^[n" history-beginning-search-forward-end “git re"から始まる履歴にマッチするのは変わりませんが、カーソル位置が行末になります。 期待した履歴が現れたらReturnキーで確定してください。カーソル位置が行末なので、こちらの方が自然に感じるかもしれません。Emacsのshell-modeをお使いの方は特に。 この設定はおそらく漢のzshで知ったのだと思いますが、昔すぎて覚えていません。 漢のzsh (4) コマンド履歴の検索~EmacsとVi、どっちも設定できるぜzsh|マイナビニュース 履歴マニアの話 シェルの履歴を辿るには十分な数の履歴が必要です。この程度の設定は当然でしょう。 # 履歴を保存するファイル HISTFILE=$HOME/.zhistory # メモリ内の履歴の数 HISTSIZE=1000000 # $HISTFILE に保存される履歴の数 SAVEHIST=1000000 ※ 信じられないことにHISTSIZEのデフォルト値は30、SAVEHISTは0です。...

2014-05-18 (Sun) · masutaka

OSXのzshで直前の履歴をクリップボードにコピーするやつ作った

何かコマンドを打ってから、Ctrl-x Ctrl-pするとクリップボードに コピーされます。

2013-12-07 (Sat) · masutaka

OSXのGNU Screenは~/.zprofileを読み込まない?

tmuxのすすめ|catatsuyのBlog これを参考にtmuxを試していたら、なんかPATHがおかしい。調べてみたら、 むしろGNU Screenの方がおかしくて、~/.zprofileが読み込まれていないこ とが分かった。 私の~/.zprofileは以下のとおり。 # # /etc/zprofile and ~/.zprofile are run for login shells # # all bourne shells should source /etc/profile source /etc/profile /etc/profileは以下のとおり。 # System-wide .profile for sh(1) if [ -x /usr/libexec/path_helper ]; then eval `/usr/libexec/path_helper -s` fi if [ "${BASH-no}" != "no" ]; then [ -r /etc/bashrc ] && . /etc/bashrc fi 結果的に以下が原因で、PATHとMANPATHが異なっていた。 GNU Screen -> eval /usr/libexec/path_helper -s が実行されない tmux -> eval /usr/libexec/path_helper -s が実行される。...

2012-11-19 (Mon) · masutaka

GNU Screenの別Windowsのカレントディレクトリに移動するzshスクリプト、cddを直した

cdd - screen の別WINDOWのカレントディレクトリに移動する zsh スクリプト - coリ・ー・ン<2nd life 結論から言うと結構便利です。GNU Screen を使っている zsh ユーザーは 是非お試しを。 私の環境では以下のエラーが発生するので、修正して gist にアップしま した。(coderepos へのコミットの仕方が分からないし、人によっては必要 ない修正なので、gist にアップしました。) “unsetopt clobber”(既存のファイルへの上書きリダイレクト防止) を設 定していると 49 行目付近の “echo “\n” » “$CDD_PWD_FILE”” がエラー になる。 $HOME/.zsh が存在しないとエラーになる。 あと、cdadd と cddel がそれぞれ _cdadd と _cddel でないと使えなかっ たので、直しました。 追記(2012-05-18): 最近は使ってないというか、存在を忘れてますね〜。。 ところでこんな記事がありました。 cdd を tmux, bash, multi session +α に対応した - カワイイはつくれる

2011-10-12 (Wed) · masutaka

ターミナルの zsh と Emacs を風のように駆け抜ける!

福岡Emacs 行ってきました! Mew 関係者がお二人(@nom4476 @moepanda )もいらっしゃったり、Vim 使い が 1/3 くらい占めていて案外新鮮だったり、ワールドカフェ という対話手 法に感心したり(残念ながら時間切れで途中で退席しましたが)で、とって も楽しかったです! 嬉しかったことは @moepanda さんにお会いできたことと、@nom4476 さん が「このブログ読んでますよ」と仰ってくれたこと。うれしはずかし…(^^) 私も「Langrich社でのEmacs活用、langrich.el 」というお題でデビューを 飾ることが出来ました。8888 それぞれの発表も面白かったのですが、一番気になったのが発表の中でど なたかが、ターミナルの現在のディレクトリを dired で開いたり、Emacs の現在のバッファに対応するディレクトリをターミナルで開いたりしてい たことでした。 どなたか忘れてしまったのですが、試しにツイートしてみたら @nom4476 さんが gist に置いてくださいました。 loading... Gist のコードはこちら。 かる〜く解説。 dired() ターミナル上の zsh で dired とタイプすると、現在のディレクトリを dired で開いてくれます。 cde() 同じく cde とタイプすると、Emacs の現在のバッファに対応するディレク トリをターミナル上の zsh で開いてくれます。 ※ emacsclient 使っているので、~/.emacs とかに (server-start) を書 いておく必要があります。 でも elscreen 使っていると、cde() が動きません。elscreen が frame 情報を書き換えているためのようです。なんとしてでも動かしたかったの で、風邪をおして(笑)頑張ってハックしました。 ついでに @Dubhead さんの修正も dired() に含めました。(“dired ....

2011-09-28 (Wed) · masutaka

screen で 最終行にウィンドウ一覧を表示する方法

以下を ~/.screenrc に書くと、 hardstatus alwayslastline "[%02c] %`%-w%{=b bw}%n %t%{-}%+w" こんな風に表示できます。 タブ表示みたいで良いですね。ウィンドウをいくつ開いているかよく忘れるので ^^; 、便利です。 参考情報: GNU screen いろいろまとめ。 - naoyaのはてなダイアリー 追記(2009-08-23): zsh ユーザの方は、以下を ~/.zshrc に書いておくと “zsh” という文字列の代わりに「コマンド実行中はコマンド名を、未実行ならカレントディレクトリを表示」してくれます。情報ありがとうございます。> kitokitoki さん case "$TERM" in screen) preexec() { echo -ne "\ek#${1%% *}\e\\" } precmd() { echo -ne "\ek$(basename $(pwd))\e\\" } esac 参考情報: screenのキャプションにディレクトリ名 or コマンド名を表示 - メモの日々(2008-03-31)

2009-08-22 (Sat) · masutaka