.zshrc に以下の設定を記述することで「コマンドの履歴機能」が有効になります。 ※. HISTFILE のみ必須です。 export HISTFILE=${HOME}/.zsh_history export HISTSIZE=1000 export SAVEHIST=100000
.zshrc に以下の設定を記述することで「コマンドの履歴機能」が有効になります。 ※. HISTFILE のみ必須です。 export HISTFILE=${HOME}/.zsh_history export HISTSIZE=1000 export SAVEHIST=100000
Repost ➔ 優れた dotfiles を設計する | TELLME.TOKYO OS のクリーンインストールは面倒くさい. アプリケーションをいちいちダウンロードしてきて,普段の勝手と同じになるように設定する必要がある.CLI においても同じで,設定ファイルをいちいち書いたり,普段どんなプラグインを使っていたかを思い出してダウンロードするのは面倒だ. よくあるのは .vimrc などの設定ファイルを Dropbox や GitHub に置いておいて,環境を作り直したときにコピーする手法だ. dotfiles はその手法の延長線上にあって,より便利に高速化・自動化した方法だ. dotfiles とは UNIX 系の OS でいう設定ファイルのことで,ファイル名がドット . から始まることからそう呼ばれている. TL;DR HTTP 経由でインストールできる dotfiles をつくって
zshのターミナルに今いるパスのリポジトリの情報を表示してみることにします。最終目標はこんな感じ。 ブランチ名を表示 全てコミットされてきれいな状態であれば緑色 addされていないファイルがあれば+マークをつけて赤色 commitされていないファイルがあれば!マークをつけて黄色 ちなみにこの記事に書いてあることは zsh のバージョンが 4.3.10 以上に限って有効です。 さて、これを実現するには vcs_info というものを使います。以下のような記述を ~/.zshrc に追加します。 # この行は現在のパスを表示する設定です。ブランチを表示して色をつける設定とは関係ありません RPROMPT="%{${fg[blue]}%}[%~]%{${reset_color}%}" autoload -Uz vcs_info setopt prompt_subst zstyle ':vcs_i
b4b4r07/enhancd ❤ GitHub 以前、シェルスクリプトの勉強の集大成として enhancd というプラグインちっくなものを書いた。これは cd コマンドのラッパー関数を提供するもので、通常のビルドインにはないメリットがたくさんある。cd コマンドはよく使われるコマンドの一つにも関わらず、その使い勝手はあまり良くない。たとえば、フルパスもしくは相対パスで辿れるディレクトリにしか移動できない。当たり前ではあるけど、すべてのパスを覚えているわけではないし、間違ったパスや単にディレクトリ名だけを与えても、よしなにやってくれるコマンドが欲しかったのだ(grep だって使いやすさを向上させた ack, ag, pt といったコマンドがある)。 次に「どの言語で実装するか」、になるのだが(シェルスクリプトの勉強というのはさておき)、シェルスクリプトでなければならない理由というのがあって
みなさんバージョンコントロールしてますか? 人生もバージョンコントロールしたいですね. zsh 上でバージョンコントロールを扱う場合に便利な vcs_info の使い方です. しかしながら自分で自分の使う VCS を使ってがりがりスクリプト書いたほうがいいような気もしますが気のせいです. 以下のようなものを $ZDOTDIR/.zshrc に書くだけです PROMPT のあたりは各自調整のこと. setopt prompt_subst autoload -Uz add-zsh-hook autoload -Uz vcs_info zstyle ':vcs_info:*' formats '%s' '%b' '%i' '%c' '%u' zstyle ':vcs_info:*' actionformats '%s' '%b' '%i' '%c' '%u' '%a' zstyle ':vcs_
追記: コメント欄にて、若干変なパスが含まれている場合の対処方法について、補足いただきました。 ご指摘ありがとございますm(_ _)m bash / zshなどでシェルスクリプトを書いていると、環境変数の設定を外部ファイルにまとめてsource して使う、というのはよくある。 そのような場合にsourceされたファイル内での絶対パスがイマイチうまく取れない、という問題に突き当たる事がある。 bashの話: うまくいかない方法と理由 通常、シェルスクリプト内で自分自身の絶対パスをとるときによくやるのが下記の手法だとおもう。 が、単体で呼び出した場合にはちゃんと動くのだが、bashからsourceで呼び出した場合にはうまく動かない。 なぜかというと、sourceされたファイルの実行が、呼び出し元のシェルプロセス内になるから。 bashでは$0は実行コンテキストに依らず、実行ファイル名が入ってい
rbenv とか plenv で Ruby や Perl をインストールして使うときに、login shell の zsh では $HOME/.rbenv/shims/ruby が見えてるのに、screen 起動すると /usr/bin/ruby になっちゃってアレーってなってちょっと調べた。 結論から言うと path_helper というものがあって、これを使うと /etc/paths や /etc/paths.d に定義したパスを $PATH に設定する仕組みになっていて、/etc/zshenv でこれを読んでいるんだけど、それは /etc/zprofile で呼ぶべきとかナントカで、とても面倒な話だった。 https://github.com/sstephenson/rbenv/issues/366 https://github.com/sstephenson/rbenv/wiki/
oh-my-zsh の設定で history コマンドが fc コマンドに alias 設定されているらしい。 https://github.com/robbyrussell/oh-my-zsh/issues/739 以下のように、historyの前にバックスラッシュを追記した。 (@syohexさんと@hisaichi5518さんにこの方法を教えていただきました。ありがとうございます!) function peco-select-history() { local tac if which tac > /dev/null; then tac="tac" else tac="tail -r" fi BUFFER=$(\history -n 1 | \ eval $tac | \ peco --query "$LBUFFER") CURSOR=$#BUFFER zle clear-scree
function percol-cdr () { local selected_dir=$(cdr -l | awk '{ print $2 }' | percol --query "$LBUFFER") if [ -n "$selected_dir" ]; then BUFFER="cd ${selected_dir}" zle accept-line fi zle clear-screen } zle -N percol-cdr これを読み込んで、おもむろに percol-cdr という 関数を 呼び出し、やった! これでぼくもナウいpercolユーザだ! ってやろうとすると $ percol-cdr percol-cdr:zle:4: widgets can only be called when ZLE is active percol-cdr:zle:6: widgets can
どういう状態かというと。 ★サブシェル起動前 $ printpath ← $PATHを表示 /Users/yonchu/.pythonbrew/bin /Users/yonchu/.rvm/gems/ruby-1.9.3-p286/bin /Users/yonchu/.rvm/gems/ruby-1.9.3-p286@global/bin /Users/yonchu/.rvm/rubies/ruby-1.9.3-p286/bin /Users/yonchu/.rvm/bin /usr/local/share/python /usr/local/mysql/bin /Library/Java/Home/bin /Users/yonchu/bin /Users/yonchu/dotfiles/bin /usr/local/bin /usr/local/sbin /usr/local/share
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
zshのautocorrectは便利ですが、不要なときもあります。そのような場合にzshのautocorrectを抑制には、~/.zshrcの中にalias コマンド='nocorrect コマンド'を追加します。zshのautocorrectが有効な場合、 bundle exec rspec spec/requests/foo_spec.rb のようなコマンドを実行すると、 zsh: correct 'rspec' to 'spec' [nyae]? のように訊かれます。 毎回nのように回答することは面倒です。 このような場合は、~/.zshrcの末尾あたりに以下のような記述を追加します。 alias bundle='nocorrect bundle' これでzshはbundleコマンドについて質問をしてこなくなります。 ~/.zshrcを編集したのでsource ~/.zshrcとして
今まではバカの一つ覚えのように何でもかんでも$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にはいかなる
普段からログインシェルを zsh にして.zprofileでPATH設定をしているのですが、OSXでscreenを起動した際にPATHの順番がおかしくります。 どうやら/etc/zshenvで実行されるpath_helperが変なことやっているようです。 「/etc/pathsおよび/etc/paths.dからPATHを作り出し、元からあったPATHから重複を除いたものを後ろにつける」 というのが path_helper の動きらしいですが、このせいでscreen実行時(サブシェル起動時。zshenvが実行されるタイミング)にPATHの順番が入れ替わってしまいます。 というわけでこれを回避するために.zprofileでのPATH設定から.zshenvでの設定に変更し、サブシェルでも(比較的)綺麗なPATHとなるよう以下のように定義しました。 (zshの設定はOSXとdebianで共通のもの
仕事で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-
login shell のとき /etc/zshenv -> $ZDOTDIR/.zshenv -> /etc/zprofile -> $ZDOTDIR/.zprofile -> /etc/zshrc -> $ZDOTDIR/.zshrc -> /etc/zlogin -> $ZDOTDIR/.zlogin login shell ではないが、対話的な shell のとき /etc/zshenv -> $ZDOTDIR/.zshenv -> /etc/zshrc -> $ZDOTDIR/.zshrc 非対話的な shell のとき /etc/zshenv -> $ZDOTDIR/.zshenv $ZDOTDIR/.zshenv は非対話的に呼びだされたときも読み込まれるので、画面表示を入れてはいけない
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く