タイトルは少し端折っていて、正確には ~/.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 の補完はうれしい。
《続きを読む》
bundleしてるgemにcdする。pecoで絞り込みつつ - Qiita
Emacsでも同じことがやりたかったので、helm-bundle-show.elを作りまし
た。絶対誰か作っているだろ!と思って探したけどありませんでした。
masutaka/emacs-helm-bundle-show
`$ bundle show` with helm interface
《続きを読む》
最近は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も同じでいいじゃんと思い、変更した関数がこれ。(リファクタリング出来そう...)
《続きを読む》
数年前にRTMに入れたままになってましたが、ようやくpercolをインストー
ルしました。zshでhelmっぽい履歴検索をやりたかったためです。
https://github.com/mooz/percol
※ 最近の毎週木曜日は、会社の人ともくもくしています。
《続きを読む》
少し前にこちらの記事が話題になりました。
naoya_itoの火を噴いたシェルtips - Togetterまとめ
rebuild.fmのEpisode41でも言及されていた気がします。
弊社フィードフォースでも、ペアプロの時にこういった話をすることはあ
ります。ただ、C-rやC-uは知られていても、M-pはあまり知られていない雰
囲気でしたのでまとめました。
《続きを読む》
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` が実行される。
[2007-01-22-1] 見ると、GNU Screenの挙動が変だよなあ。。。
環境:
OSX 10.8.2 Mountain LION
zsh 4.3.11 (i386-apple-darwin12.0) # OSX付属
Screen version 4.00.03 (FAU) 23-Oct-06 # OSX付属
ひとまず~/.zprofileを空っぽにして対応。OSXで新規ユーザを作ってもそ
れ系のファイルは作られなかったので、Debianの名残なんでしょう。
追記(2012-11-20):
今回も @cvmat さんからアドバイス頂きました。
loading...
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 +α に対応した - カワイイはつくれる
福岡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 .." と
か "dired usr/local" とか出来るようになります。)
合わせて Quicksilver の Triggers を使えば、dired() や cde() した後
に簡単にフォーカスを切り替えられます。
関連 URL (?) :
風になりたい奴だけが Emacs を使えばいい。 - 日々、とんは語る。
追記(2011-10-10):
kiwanami さんのブログが更新されたので、追記します。
fukuoka-emacs 0x03 やりました - 技術日記@kiwanami
追記(2011-10-11):
私を含めた全員分のポジションペーパーは google docs にあります。
追記(2011-10-27):
@syohex さんがもう少し厳密に取り出すように改良してくれました。
cdeを改良 - Life is very short
以下を ~/.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
zsh との付き合いは 7 年くらいになりますが、やはり補完が便利です。
tar のオプションを補完。
% tar ←ここで tab キー
A -- append to an archive
c -- create a new archive
f -- specify archive file or device
t -- list archive contents
u -- update archive
v -- verbose output
x -- extract files from an archive
make のルールを補完。
% make ←ここで tab キー
all check-syntax clean hoge.o hugahuga.o main.o
cd した履歴を補完。
% pwd
/home/masutaka
% cd /usr/local
% cd /home
% cd /etc
% cd -←ここで tab キー
0 -- /home/masutaka
1 -- /usr/local
2 -- /home
という前書きはさておいて、「漢の zsh」というコラムがあったので、
ざっと読んでみました。個人的に気になった設定をメモメモ。
以下の設定をすると、コマンド入力時に携帯のかな漢字変換の先行予測の
ようなことをしてくれる。
autoload predict-on
predict-on
expr コマンドを使わずに計算が出来る。
% echo $(( 1 + 2 + 3 + 4 + 5 ))
15
あらかじめ "zmodload -i zsh/mathfunc" を実行し、mathfunc モジュール
を読み込むと、以下のような sin 関数演算も出来る。
% echo $(( sin(1) ))
0.8414709848078965
sh では変数の型はすべて文字列だが、zsh では整数型や実数型もあるとのこと。
zsh には簡易エディタ機能も備えている。(あらかじめ "autoload zed" を
実行しておく必要がある。)
% zed hoge.txt
-f を指定すると、zsh の関数を編集出来る。
% zed -f function_name
実は zed 自体も zsh の関数で、自分自身を編集できてしまう。
% zed -f zed
ワイルドカードの展開内容をその場で確認可能。
% cd /usr/*←ここで C-x g
/usr/X11R6 /usr/bin /usr/games /usr/include /usr/lib /usr/local /usr/sbin /usr/share /usr/src
ここまで書いておいて何ですが、実はたくさん設定をするのは好きではな
いです。ある程度満足したら、後はできるかぎり設定を少なくすることに
喜びを感じます。^^;
tcshでもできるみたい。
<http://tehanu.hpcl.titech.ac.jp/zsh/waka/intro-LoginLogoutWatching.html>
% watch=all
% WATCHFMT="%n has %a %l from %m at %t %w."
% log
'setopt histignorealldups'して、'history'すると同じ履歴は消えているけど、
$HISTFILEの中身は消えてない。これは、デフォルトでは $HISTFILEの同期は
zsh プロセスが exit したときだから。INC_APPEND_HISTORY や SHARE_HISTORY を
有効にしていると、このタイミングが変わる。
SHARE_HISTORYは、直前の履歴を使い回すことが多い時は却って不便かもしれない。
マニュアルにあるように、適当なタイミングで 'fc -RI'する方が使い易いかも。
<http://cl.aist-nara.ac.jp/student/daiti-m/text/zsh-intro.html>