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
先日、shell勉強会で「zawを使ってシェル操作を快適に」というお話を聴いて、自分ももう少しそのあたりの環境を整えよう、と思い立った。 nanapi勉強会 vol2 - Shellの活用でこれだけ毎日が便利になる - nanapi勉強会 | Doorkeeper zawで快適シェル生活 // Speaker Deck 自分が使う選択をしたのは zaw ではなく percol 。 軽く調べてみたかんじでは zawってのは設定してある(もしくは自作する)決められたsourceを使って決められた操作を行うもので、zshに密接に結び付いているツールで。percolはそういうのではなく純粋に「入力をフィルタリングする」だけのツールなので、パイプなどを使って各コマンドと組み合わせることで色々な使い方ができそう。 percolの導入 https://github.com/mooz/percol Pyt
import sys, commands from percol.command import SelectorCommand from percol.key import SPECIAL_KEYS from percol.finder import FinderMultiQueryMigemo, FinderMultiQueryRegex ## prompt # Case Insensitive / Match Method に応じてプロンプトに表示 def dynamic_prompt(): prompt = ur"" if percol.model.finder.__class__ == FinderMultiQueryMigemo: prompt += "[Migemo]" elif percol.model.finder.__class__ == FinderMultiQuery
背景 oh-my-zshは大変便利で、便利ではあるけど複雑怪奇なzshの設定を簡単に済ませることができるようになりました。 しかし、気の赴くままにpluginを追加していると、起動が重くなったり補完が重くなったり徐々に使いづらくなってしまいます。初回の起動が重いのはscreenやtmuxを活用してつぎつぎzshを起動・終了している人にはじわじわ効いてきますし、補完が重いのはとてもつらいものです。 また、oh-my-zshのpluginには、元のrepositoryからsourceを持ってきたまま放置されているものもあります。例えば、oh-my-zsh/plugins/zは2014-04-11時点では本家のrupa/zより古く、更新されてないことが伺えます。 oh-my-zshはいろいろつらさもあることは分かった、しかしoh-my-zshを捨てて一からzshを設定するのはつらい……。そんな方
naoya @naoya_ito シェルでパスワード入力プロンプトでるじゃないですか。途中まで打って間違えたとするじゃないですか。Ctrl + u 打つとリセットできるの知ってた? 俺は知ってた 2014-04-07 19:40:06
特に、cd や bindkey など、今動いているシェル上で副作用のある処理を行いたいときは source を使わないとうまくいかないだろう。 一方、source にはこんなデメリットがある。 .zshrc でいっぱい source するとzsh の起動が遅くなる 現在動いているシェルの alias 設定の影響を受ける 特に2つめが厄介だ。例えば grep とかしたときに、alias grep='grep -E' なんか設定してあったら正規表現の意味が変わってしまう。一応 command grep とすれば alias を設定していない元の grep を実行できるけど、いちいちそう書くのも手間だ。 そんなときは autoload を使う形に書き換えるとうまくいく。 autoload というのは「関数本体の読み込みを実行する時まで遅らせる」という zsh の機能のこと。これで ~/.zshr
Git リポジトリの中にいるときに、トップレベルのディレクトリに移動したくなることがある。それを1回のコマンドで簡単にできるようなプラグインを作ったので紹介する。 このプラグインでできること cd-gitroot というプラグインを作った。これをインストールすれば cd-gitroot というコマンドが使えるようになる。 使っている様子はこんな感じ。 # こんな感じで Git リポジトリの中にディレクトリがあったとする # doc/ # src/ # |-scripts/ # `-web/ % cd /home/mollifier/git_repo % cd src/web % pwd /home/mollifier/git_repo/src/web # リポジトリの奥の方にいる時でも、すぐにトップに移動できる % cd-gitroot % pwd /home/mollifier/git_
zprofileに書いていたPATH設定だけが有効になっていなかったので調べたという話。zprofileに書いていたPATH以外の環境変数は有効になっていたのでzprofileが呼ばれていないわけではなかった。 path_helper Macにはpath_helperというやつがあって、PATH環境変数を/etc/pathsや/etc/paths.dに書かれているパスで設定しなおす。で、こいつがまたいたるところで呼ばれる。 zshで呼ばれる設定ファイル ログイン(ログインシェルとして起動)時にはzshenvとzprofile、対話シェルとして起動時にはzshenvが呼ばれる。PATHの設定は既存のPATHに追加していくので、ログイン時の一度だけ呼ばれて欲しい。そのためzprofileに書いていた。 件のzshenvは以下のようになっていた。 /etc/zshenv # system-wid
仕事でgit使っていてレビューとかしていると、どうもgitのブランチ切り替えがだるくなってくる。それで、zawで更新日時順でブランチが並んでいて、選択するとgit checkout出来ればすぐにブランチ切り替えが出来て便利ではと思いやってみた。 bindしたキーを押すと、更新日時順でブランチが表示されて、Enterを押すとチェックアウトする。更新日時順なので数回キーを押すだけで、チェックアウトしたいブランチに辿り着けることが多い。zawを使っているので絞り込みも出来る。 インストール zawを使っていれば、導入は簡単。 まずzawのsourceのディレクトリに以下のファイルを置く。もしくは適当なところに置いて、zawのloadの後にsourceを使ってloadする。 https://github.com/shibayu36/config-file/blob/master/.zsh/zaw-
2012/12/13 追記 zsh 4.3.11 以降の新しい機能を使って改良しました。 -> 「zsh の vcs_info に独自の処理を追加して stash 数とか push していない件数とか何でも表示する - Qiita」 Git を使ってファイルを編集した場合、それをいったんインデックスに追加(add)してその後コミットってのが基本的な流れになる。なんかいろいろやってると、ちゃんと add したのかどうかわかんなくなることがある。 そういうときは status コマンド使えばいいんだけど、以前エントリ書いた zsh の vcs_info の機能を使うといい感じにプロンプトに表示できるようになるので紹介する。 zshrc の書き方 こんな風に zshrc に書いておけば OK。 autoload -Uz add-zsh-hook autoload -Uz colors color
zsh には,今までに移動したことがあるディレクトリを記録し,そこに簡単に移動できる chpwd_recent_dirs という機能があります.これについての詳細は他の投稿に任せます. zshのchpwd_recent_dirsでよく行くディレクトリに移動する この機能を Emacs の dired でも利用したいと考え, helm-dired-recent-dirs.el という Elisp を書きました.提供する機能は以下の2つです. dired でアクセスしたディレクトリを chpwd_recent_dirs で記録する (~/.chpwd-recent-dirs に書き込む) 最近アクセスしたディレクトリを Helm (Anything の後継) で選択し,そのディレクトリを dired を開く helm-dired-recent-dirs.el は以下の手順でインストールできます
jsxの補完が書きたかったというか、コンマで区切られた値の補完を どうやるんだというのが知りたかったので書いてみました。 コード jsx --helpだけを参考に書いたので問題があるかもしれません。 #compdef jsx _jsx_warn() { local expl warning local -a jsx_warnings jsx_warnings=(all deprecated none) # Ignore existing values compset -P '*,' # Remove already-referenced warnings for warning in ${(s:,:)${IPREFIX}} do jsx_warnings=( ${jsx_warnings:#$warning} ) done _wanted jsx_warnings expl 'warnin
bashの補完は公式で提供されていたが、gruntのzsh補完がなかったので作った。 私が存在を知らないだけかもしれないので、知ってる方がいたら教えてください。 (zsh-completions と oh-my-zsh にはなかった。1つだけgithubにあったけど微妙だった。) ちなみに公式のbash補完は、以下の設定を .bashrc などに記述すれば使用出来ます。 eval "$(grunt --completion=bash)" zsh補完イメージ インストール方法 Githubに置いてあるのでとってきて下さい。 yonchu/grunt-zsh-completion · GitHub $ git clone git://github.com/yonchu/grunt-zsh-completion.git or $ wget https://github.com/yonchu/gr
今まではバカの一つ覚えのように何でもかんでも$HOME/.zshrcに書いていたけど、サーバ管理をよくするようになってきて、複数アカウントの共通設定とかをしたくなったので調べた。 順番 以下の$ZDOTDIRは指定されていない場合$HOMEになる。 ログイン時 /etc/zshenv $ZDOTDIR/.zshenv /etc/zprofile $ZDOTDIR/.zprofile $ZDOTDIR/.zshrc /etc/zlogin $ZDOTDIR/.zlogin ログアウト時 $ZDOTDIR/.zlogout /etc/zlogout 言うまでもなく、個人的な設定は$ZDOTDIRに、汎用的な設定は/etcに書く。 各種説明 zshenv 必ず実行される。/etc/zshenvは上書き不可で$PATHや$MANPATHの設定がされる。 $ZDOTDIR/.zshenvにはいかなる
※追記(2013/06/02) 最新版のplenvだとrbenvみたいに自前で補完ができるようになってます。 なので以下の記事でplenvの補完つくってももう意味は無いです。 補完のつくりかたの一例として御覧ください。 超初級zsh補完職人のkazuphです。 今回はplenvの補完をつくりました。今日時間があるので2段階補完できるようにしますね。2段階目に現在インストールされているPerlのバージョンを選択できるようにしました。次はglobalやlocalなどのVersionが欲しい時にだけ補完を出すようにします(21:23)。いやいやこれは意外に簡単に良い感じになったのではないでしょうか。一旦これで終了です。もっとこうした方がいいとか、バグってるとかあったら教えて下さい(22:43)。 設定 .zshrcに以下を追加 plenvのzsh補完をするためのScript。zshrcへ追加で使
「賢いcd」”z“の俺版fork「knu-z」v2.0をリリースしました(英語版記事)。 オリジナル版をいじっているうちに修正箇所がたくさん見つかり、直しすぎて個別にpull requestすることが困難になり、途中で作者のrupaさんにはforkの存在とそこそこ詳細な変更点リストをメールしたんだけど時すでに遅し。ほかにもforkがたくさんありすぎてうんざりだったかも。とはいえbashの補完は壊れているしzshの補完も古くて(compsys)いまいちだし、というわけでフィードバックについては気にせずにコアのアルゴリズム部以外を大幅に書き直しました。 ついでにcdの補完候補にzのスタック(ディレクトリ移動履歴に基づいてスコアリングされたディレクトリリスト)を含めるようにしたので、「zが使えるホストでだけzを使う」とか、「通常の移動はcd1、よく行くところへの移動はz」なんていう悲しい使い分け
まず, 他のシェルをお使いの人にはごめんなさい. 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しておけば, ./
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く