タグ

Zshに関するmasutaka26のブックマーク (44)

  • El Capitanにしたらzsh上でのPATHが上書きされた - すぎゃーんメモ

    先日ようやく El Capitanに上げたのだけど、そうしたらtmux上でzshログインした際にPATHがおかしくなる、という問題が起きて。 どうやらEl Capitanでは/etc/zprofileというのが作られていて、こいつが # system-wide environment settings for zsh(1) if [ -x /usr/libexec/path_helper ]; then eval `/usr/libexec/path_helper -s` fi となっていて、PATHを書き換えてしまうようで。 tmuxで新しくwindowを開いたりする際にこいつが呼ばれてしまうのが原因だったらしい。 最初はそいつをrenameして対応したけど、 @sugyan setopt no_global_rcs(~/.zshenvに記述) で /etc以下を読まないようにすることが

    El Capitanにしたらzsh上でのPATHが上書きされた - すぎゃーんメモ
    masutaka26
    masutaka26 2017/11/22
    GNU Screen から tmux に乗り換えて遭遇した。~/.zshrc じゃなくて ~/.zshenv に書かないとダメなのね
  • Emacs Zshなどを設定した話 - Money Forward Developers Blog

    先月中途で入社した卜部です。 中途入社したタイミングでちょうどよいので環境設定を見直していました。 たぶん全部捨てて書き直したのは8年ぶりくらいでした。 今回の感想を忘れないうちに書いておきます。 Emacs Emacsを使い続けている理由はauto-save-buffersです。これと同じような機能を提供しているエディタは(RubyMineとかなくもないが)とても少なく、移行先として選択肢があまりありません。Atomのautosaveはどうやら求めているものと違うようですし。 auto-save-buffersで救われたファイルは数知れず、というか保存とかいう前世紀の遺物を計算資源に下請けさせることで考えることが減るので、当は他のエディタにも是非あるべき機能です。下にzshでpredict-onの話も書いてありますが、自分は0クリック革命をわりと実践している派だと思います。 パッケージ

    Emacs Zshなどを設定した話 - Money Forward Developers Blog
    masutaka26
    masutaka26 2016/03/15
    auto-save-buffers(-enhanced) を 10 年ぶりくらいにリトライしたけどやっぱり合わなかった。バージョン管理されていないファイルを編集しないか気になってしまう。例えば ~/.emacs.d/elpa 以下とか。
  • zsh のあまり知られていなそうな機能 - Qiita

    自分が使っている便利な機能を紹介 $ rm */(-@) ファイル修飾子は使っている人も多いはず。 zsh で find を使わずに簡単にファイルを絞り込む *(@) でシンボリックリンク *(-@) でリンクが切れたシンボリックリンク rm **/*(-@) で下位階層含めたリンク切れのシンボリックリンクの削除 修飾子で他に便利なのは *(-ch-1) シンボリックリンクのリンク先が1時間以内に作られたファイル *(U) 自分のファイル *(u:hoge:) ユーザ hoge のファイル *(/^F) 空のディレクトリ $ tkdiff =(zcat xxx.gz | cut -f 1) =(zcat xxx.gz | cut -f 2) プロセス置換 <(zcat xxxx.gz | grep yyyy | cut -f 2 ) みたいな形でわざわざ一時ファイルにしなくても、ファイル指

    zsh のあまり知られていなそうな機能 - Qiita
    masutaka26
    masutaka26 2016/02/11
    cd の引数 2 つのやつは補完が効けばよかったんだけどな
  • zshの起動を高速化する方法 - なっく日報

    ネタがないので、昔こんなことをやってzshの起動を高速化したよというのを共有したいと思います。 計測 〜が遅いという場合、プロファイリングするのが定石ですね。 http://blog.uu59.org/2013-06-01-zsh-optimize.html という素晴らしい記事を参考に、 ボトルネックを割り出しました。 ↑の記事に全て書いてますが、一応プロファイリングの方法をコチラにも書いておくと、 .zshenvの先頭行に↓を足す zmodload zsh/zprof .zshrcの最後の行に↓を足す if type zprof > /dev/null 2>&1; then zprof | less fi という感じ。 新しくzshを起動すると、lessで↓のようなプロファイリング結果が開きます。 num calls time self name -------------------

    zshの起動を高速化する方法 - なっく日報
    masutaka26
    masutaka26 2016/02/04
    あまり気にならないけど、測定は面白いね
  • zshでhook関数を登録する - Qiita

    zshでは、何か操作を行ったときに呼び出されるhook関数を登録できる。これを使うと、例えば「コマンドを実行するたびにこの関数を実行する」ということができるようになる。もうすでに使ってる人も多いと思うけど、ここでその使い方をまとめておく。 hook関数を登録するには、add-zsh-hook関数を使う。使い方としては、「add-zsh-hook <hook名> <関数名>」という形で呼び出す。「hook名」はどういうときに関数が呼び出されるかというイベント種別を表す文字列で、詳しくは後で説明する。 例 次の例ではprecmdのときにprecmd_function1という関数を呼び出すように登録している。

    zshでhook関数を登録する - Qiita
    masutaka26
    masutaka26 2015/01/01
    これは良いまとめ。元旦早々、自分の.zshrcをリファクタリングしてしまった。 https://gist.github.com/masutaka/9287575
  • zshの機能のみで既に存在しないディレクトリをcdrのリストから削除する - @znz blog

    既に存在しないディレクトリを cdrのリストから削除する - Life is very short をみて perl を使っていて、 ファイル名の変更にも対応していなくてポータブルではないと思ったので、 zsh の機能のみで実装してみました。 動作確認バージョン zsh 5.0.2 実装 cdr の実装の中の chpwd_recent_add chpwd_recent_dirs chpwd_recent_filehandler の中を良くみてみると 引数なしで chpwd_recent_filehandler を呼び出すと $reply に配列でディレクトリ一覧を返してくれて、 引数を渡すとファイルに保存してくれるとわかりました。 そこで、その間で (N) を使って存在しないディレクトリを除外すれば良いということで 以下の実装になりました。 emulate -L zsh などは参考にした部

    masutaka26
    masutaka26 2014/10/07
    いい感じ。 http://masutaka.net/chalow/2014-09-06-1.html に追記しました。
  • pecoで最近更新されたブランチにcheckoutする - $shibayu36->blog;

    昔、最近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で最近更新されたブランチにcheckoutする - $shibayu36->blog;
    masutaka26
    masutaka26 2014/07/27
    便利
  • pecoを使い始めた - $shibayu36->blog;

    なんかpercol最近いきなり流行ってるなーと思ってたら、percolのgo版pecoがいつの間にか出てて流行ってた。ターミナル版anything的なpercolをzawの代わりに試してみた - $shibayu36->blog;みたいな感じで、昔からpercol使っててまあいいかと思ってたけど 設定ファイルが分かりやすい brewで簡単に入れることが出来る そこそこ開発されてる というメリットもありそうなので乗り換えようとしてみている。 https://github.com/peco/peco pecoのファイル運用 前と大体同じ感じでやる。基的にこういうツールは自分でいろいろ作りたくなってきて、設定が増えてきて破滅するので、ファイルを置くディレクトリを決めておいてそこに置いておくことにする。 .zshrc : 決めたディレクトリのファイルの全ロードと、キーバインドの設定 ~/.zsh

    pecoを使い始めた - $shibayu36->blog;
    masutaka26
    masutaka26 2014/07/12
    peco-cdrも設定した。超便利。EmacsっぽくC-x bにキーバインド。
  • zshでcdの履歴管理に標準添付のcdrを使う - @znz blog

    zsh は cd -[TAB] で補完できる directory stack が setopt autopushd と組み合わせていると非常に便利なので、 directory stack を自前で保存する仕組みを作ったり、 GNU screen の他の WINDOW のディレクトリに移動するための cdsというコマンド を作ったりして、 現状でもあまり困っていませんでした。 しかし、 zshcontrib(1) に入っているものも試してみるのが 良さそうと思って試してみました。 ドキュメント ドキュメントは man zshcontrib か、 pager $^fpath/cdr(N) で読めます。 cdr コマンドの使い方 cdr [TAB] で補完して使ったり、 cdr -l で一覧を出したり、 cdr -e で一覧を編集したりできます。 cdr -e の編集は zle なので、 bin

    masutaka26
    masutaka26 2014/07/12
    やはり便利だった
  • コマンドラインからインタラクティブにGitHubの未読通知を開く | Act as Professional

    percolとpecoが最近話題なので、私がpercolで使っているGitHubをちょっと便利に使う為の設定を紹介します。 kyanny氏が開発したghnというgemを利用するとコマンドラインからGitHubのNotificationのURL一覧を取得して、表示、ブラウザで開く、一括で既読にするといったことができます。 これにpercolやpecoを組み合わせて、インタラクティブなUIをコマンドライン上で実現して、Notificationを1つブラウザで開くようにしています。 実際に動作している様子は下記です。 設定方法ghnはgemなので $ gem install ghnなどでインストールして、tokenなどを設定しておいてください。 percolの設定.zshrcなどに以下を追加 function ghn_open() { local url=$(ghn list | percol

    コマンドラインからインタラクティブにGitHubの未読通知を開く | Act as Professional
    masutaka26
    masutaka26 2014/06/14
    よさそう。てかpercolを入れようとして早数年。。
  • bundle exec を打たなくて良くなる zsh プラグイン書いた - Qiita

    エントリでは僕が初めてつくった zsh プラグインを紹介します. Ruby を使っている人なら bundler のお世話になっている方が多いと思いますが, その bundler をより便利に使うためのプラグインになります.Ruby を使わない方 には直接は関係ないですが,アイデアは応用できるかもしれません. Bundler の問題点 Bundler は gem の依存関係をローカルな範囲で管理できる gem で,Rails を始め色々 なところで使われています.この bundler を使う上で,面倒くさいことの1つが bundle exec です. bundler でインストールされた gem をコマンドラインから実行する場合,$PATH が通っていないため, 実行する場合は bundle exec を使う必要があります. 例えば,railsbundler でインストールした場合,

    bundle exec を打たなくて良くなる zsh プラグイン書いた - Qiita
    masutaka26
    masutaka26 2013/12/07
    Enterしたあとに引っかかる感じがある。マシンが遅いのかな。
  • zmvコマンドで複数ファイルの一括リネーム - Qiita

    より簡単に使うためのオプション 次のオプションを使うと、より簡潔に書けて便利です。 -W : 変換元に含まれるワイルドカードは括弧がついているとみなす。また、変換先に含まれるワイルドカードは順に $1, $2, ... とみなす。 これを使うと、上に出てきた例は次のように書けます。

    zmvコマンドで複数ファイルの一括リネーム - Qiita
  • zsh の vcs_info に独自の処理を追加して stash 数とか push していない件数とか何でも表示する - Qiita

    zsh で Git 使ってる人はプロンプトにブランチ名とかを表示してる人も多いと思う。 zsh に標準で入ってる vcs_info っていうのを使うとだいたいいい感じにできるんだけど、できないことも当然ある。 例えば stash した数の表示には対応していないので、自分で無理矢理な感じで Git コマンドを呼び出してプロンプトに表示してる人もいると思う。 でも zsh 4.3.11 ぐらいから vcs_info に Hooks というのが追加されて、元の機能に自分で処理を追加できるようになってる。これを使うと好きなようにカスタマイズできるようになるので紹介する。 この記事でできるようになること こんなことがプロンプトに表示できるようになる。 使用しているバージョン管理システムの名前(svn, git, hg, ...) 現在のブランチ名 マージ失敗のエラー表示 さらに Git の場合は以下

    zsh の vcs_info に独自の処理を追加して stash 数とか push していない件数とか何でも表示する - Qiita
  • MySQLのCLIのプロンプトをカスタマイズするzshのfunctionを書いた - てつじんにっき

    いままで、mysqlのプロンプトの変更は $HOME/.my.cnf で、 [mysql] prompt="^[[01;31m\U[\d]-[\D]^[[0m\nmysql> " みたいにしていましたが、 接続元のサーバ情報が出せない。(出し方を知らないだけかも) 番と開発環境など、同一の設定ファイルで環境に応じてプロンプトを柔軟に変更できない。 色をつけるにはエスケープシーケンスを直書きしないといけない。 といった点が、ちょっと不満でした。 なのでコマンドオプションをパースして、環境変数$MYSQL_PS1を組み立ててから mysqlコマンドを実行する、zshのfunctionを作ってみました。 https://github.com/tetsujin/zsh-function-mysql ちょっとわかりにくいですが、下記の例では 接続元のサーバ情報を表示、ホスト名によって色分け。 接続

    MySQLのCLIのプロンプトをカスタマイズするzshのfunctionを書いた - てつじんにっき
  • zsh の REPORTTIME イイネ!! - 宇宙行きたい

    id:tokuhirom の zsh の REPORTTIME みたいなの、tcsh で miyagawa さんがやってたのみていいなーとおもってたけど zsh でできるんだー って発言を見て REPORTTIME って知らなかったわー 5 年くらい zsh 使ってるのに知らなかったわー って思ったので調べてみた # 3秒以上かかった処理は詳細表示 REPORTTIME=3 って .zshrc とかに指定しておくと $ rails new hoge --- Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed. rails new hoge 15.69s user 0.33s system 84% cpu 18.872 totalって表示される!!! 便利!!

    zsh の REPORTTIME イイネ!! - 宇宙行きたい
    masutaka26
    masutaka26 2012/08/15
    これは便利かも分からんね。
  • Mitzyuki's Blog :: posix shell で標準入力同士の <i>diff</i> (1) を実現する方法

    posix shell で標準入力同士の diff (1) を実現する方法 コマンド command1 の出力結果と コマンド command2 の出力結果を diff (1) で比較したい場合、 一番手軽なのはそれぞれの出力を一時ファイルに出力して比較する方法である。 $ command1 > ${TMP:-/tmp}/output1 $ command2 > ${TMP:-/tmp}/output2 $ diff ${TMP:-/tmp}/output1 ${TMP:-/tmp}/output2 : $ rm ${TMP:-/tmp}/output1 ${TMP:-/tmp}/output2 しかし、この方法では一時ファイルを作成するので 処理効率が悪く一時ファイルの削除など後処理をする必要がある。 例えば bash (1) の場合は以下の様にする事で簡単に比較できる。 $ diff

    masutaka26
    masutaka26 2012/06/18
    おぉすごい!出来た。2 番目の方法は zsh でも使えた。
  • anything 的絞りこみコマンド percol が migemo 対応しました - 備忘録

    先日のエントリで percol というとっても便利なコマンドを紹介しました.migemo 対応してくれたら更に便利だなーと思っていたのですが,id:mooz さんがばっちり --match-method に migemo を追加して下さいました. percol で migemo を使うには C/Migemo と PyMigemo を導入する必要があります.備忘として Ubuntu 11.10 とWidnows7 での導入方法を記しておきます.めんどくさいのでインストール場所は全部デフォルトの場所で,migemo の辞書の文字コードは utf-8 を使うことにします. 各ソフトウェアのバージョン C/Migemo 1.3 PyMigemo 0.3 percol 0.0.2 Ubuntu 11.10 に導入する Ubuntu の環境は以下のようなになってます. Ubuntu 11.10 pyt

    anything 的絞りこみコマンド percol が migemo 対応しました - 備忘録
  • zshでサブコマンドとファイル名を手抜き補完する - Glide Note

    hoge[tab]でサブコマンドが補完され、 サブコマンドの後はファイル、ディレクトリが補完されるように。 サブコマンドとファイル名を補完する 下記を.zshrcに記載してexec $SHELL やっていることは compdefで_hogecmdという補完用functionを定義し、hogeコマンドを実行したときに呼び出されるように。 function内のcmdsで補完したいサブコマンドを列挙 CURRENT == 2でhogeのあとに補完されるのはサブコマンドだけと指定 _describeで補完候補で表示されるときにsubcommandというグループになるようにしている サブコマンドのあとは_filesでファイルとディレクトリが補完されるように 参考になるサイト zshの補完関数の書き方がまとまっているところがほとんど無いので下記が非常参考になります。 zsh補完関数を自作すると便利 -

  • anything 的な絞りこみコマンド percol の紹介 - 備忘録

    いつも KeySnail でお世話になっている id:mooz さんが,percol という超絶便利コマンドを作ってらっしゃいます.このコマンドはとてもライフチェンジングなコマンドなのですが,あまり Web 上に情報がないので紹介がてら布教してみようと思います. percol のインストール&使い方 percol は入力の1行を1候補として,部分一致かつ AND 検索で絞り込みし,選択した候補を出力するコマンドです.端的に言えば Emacs の anything.el のコマンド版です. インストール方法や基的な使い方は github リポジトリの README に全部書いてありますが備忘録として書いておきます. $ git clone git://github.com/mooz/percol.git $ cd percol # python setup.py installこれでインス

    anything 的な絞りこみコマンド percol の紹介 - 備忘録
  • ファイル名指定でよく使う zsh の便利な記法

    ファイル名指定でよく使う zsh の便利な記法 2012-04-16-1 [Tips] ファイル名指定でよく使ってる zsh の記法。便利だよね。 ls *(.) : 通常ファイルだけ。 ls *(/) : ディレクトリだけ。 ls ** : カレントディレクトリ以下の全て。 ls **/*.txt : 上の条件でのファイル指定。 私の.zshrcには昔(前世紀)から入ってたから忘れちゃってたけど、「setopt EXTENDED_GLOB」を追加する必要があるみたい。 ref. - 岩手大学情報システム工学科のWiki - zsh http://pub.cozmixng.org/~hiki/cis/?zsh - カレント・ディレクトリー内の全てのファイルを新しい下位ディレクトリーに簡単に移動させる 〜 dot dir を使って (clmemo@aka) http://at-aka.blo

    ファイル名指定でよく使う zsh の便利な記法