以前紹介した「fish」シェル。
使ってみたいと思われる方の参考として、私の「config.fish」を置きます。
よろしければ叩き台としてどうぞ。
インストール方法とかは、以前の記事「fishfish」をご覧ください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 | ## # LOGIN Definition ## if status --is-login # For Japanese set -gx LANG ja_JP.UTF-8 set -gx LESSCHARSET utf-8 set -gx JLESSCHARSET japanese-utf-8 set -gx MANPAGER "less -isr" set -gx PAGER "lv -c" set -gx EDITOR Vim # Info関係 set -gx TERMINFO /usr/share/terminfo set -gx INFOPATH /opt/local/share/info /usr/local/share/info /usr/share/info . # PATHを一度保存 set -l path_list for i in $PATH if not contains $i $path_list set path_list $path_list $i end end # path_helperで本来のPATHを取得 set -l path_helper (echo (/usr/libexec/path_helper -c) ¦ sed -e "/\:/s// /g" -e "/\"/s///g" -e "/\;/s///g") eval $path_helper # fishのPATHを追加する for i in $path_list if not contains $i $PATH if test -d $i set PATH $PATH $i end end end # For MacVim (ctagsとVimを優先するため前置) set -gx PATH /Users/Shared/Data/Editor/MacVim/MacVim.app/Contents/MacOS $PATH # For Python 2.7 set -gx PATH $PATH /usr/local/share/python set -gx PYTHONPATH $PYTHONPATH /usr/local/lib/python2.7/site-packages set -gx HGENCODING UTF-8 # For Ruby 1.9 set -gx PATH $PATH /usr/local/opt/ruby/bin # For Node Package Manager set -gx PATH $PATH /usr/local/share/npm/bin # For User (一時的な実行ファイル置き場とする) set -gx PATH ~/bin $PATH # よく使うディレクトリ set -l cd_path_list set -l cd_path_helper (echo set cd_path_list (cdpath_helper -c)) eval $cd_path_helper # fishのCDPATHを設定する set CDPATH . ~ for i in $cd_path_list if not contains $i $CDPATH if test -d $i set CDPATH $CDPATH $i end end end # 環境変数にも展開する set -gx CDPATH $CDPATH # For screen set -gx SCREENDIR ~/.screen # For AquaTerm set -gx AQUATERM_PATH /Users/Shared/Applications/Terminal/AquaTerm.app # For Clozure CL set -gx CCL_DEFAULT_DIRECTORY /Users/Shared/Data/Lang/ClozureCL-1.7 # For node set -gx NODE_PATH /usr/local/lib/node_modules # For Groovy set -gx GROOVY_HOME /usr/local/opt/groovy/libexec # For DocBook set -gx XML_CATALOG_FILES /usr/local/etc/xml/catalog # For Grails set -gx GRAILS_HOME /usr/local/opt/grails/libexec # for fdclone set -gx FD_LAST_PATH_FILE ~/.fd_last_path_file # Convert aliases for BASH/ZSH/KSH/MKSH/CSH/RC if test -f ~/.fish.aliases.common # for BASH/ZSH/KSH/MKSH echo -n > ~/.sh.aliases.common sed -e "/function/s//alias/" -e "/\; /s//=\'/" -e "/ \$argv\; end/s//\'/" < ~/.fish.aliases.common >> ~/.sh.aliases.common # for CSH echo -n > ~/.csh.aliases.common sed -e "/function/s//alias/" -e "/\; /s// \'/" -e "/ \$argv\; end/s//\'/" < ~/.fish.aliases.common >> ~/.csh.aliases.common # for RC echo -n > ~/.rc.aliases.common sed -e "/function/s//fn/" -e "/\;/s// \{/" -e "/ \$argv\; end/s// \$\* \}/" -e /\"/s//\'/g < ~/.fish.aliases.common >> ~/.rc.aliases.common end end ## # User Definition ## # # http://brettterpstra.com/2013/02/09/quick-tip-jumping-to-the-finder-location-in-terminal/ # # cd to the path of the front Finder window function cdf set -l target (osascript -e 'tell application "Finder" to if (count of Finder windows) > 0 then get POSIX path of (target of front Finder window as text)') if test -d "$target" cd "$target"; pwd else echo 'No Finder window found' >&2 end end function f open -a Finder ./ end # # for autojump # function j cd (command autojump $argv) end # # Read Z extension # if test -f /opt/local/etc/z.fish . /opt/local/etc/z.fish end # # for fdclone # function fd fd $argv; cd (cat $FD_LAST_PATH_FILE) end # # for man page # function eman env LANG=C man $argv end function jman env LANG=ja_JP.UTF-8 man $argv end function whatis env LANG=ja_JP.UTF-8 man -f $argv ¦ nkf -w end function apropos env LANG=ja_JP.UTF-8 man -k $argv ¦ nkf -w end # # for more easy # function l; ls -Gwa $argv; end function ls; ls -Gw $argv; end ## # Read user's aliases ## if test -f ~/.fish.aliases.common . ~/.fish.aliases.common end |
このファイルを、「~/.config/fish/config.fish」として保存します。
ほとんど今まで紹介してきたものばかりなので問題ないと思います。
とは言え、私はいろんなものを試すためにいろんな設定を入れていますので、実際に使用されてるものに置き換えてくださいね。
「autojump」の設定は以前の記事「autojump」にも書いていますが、「fish_prompt.fish」への追記が必要です。
以下のファイルを、「~/.config/fish/functions/fish_prompt.fish」として保存してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | # Set the default prompt command. Make sure that every terminal escape # string has a newline before and after, so that fish will know how # long it is. function fish_prompt --description "Write out the prompt" # Just calculate these once, to save a few cycles when displaying the prompt if not set -q __fish_prompt_hostname set -g __fish_prompt_hostname (hostname¦cut -d . -f 1) end if not set -q __fish_prompt_normal set -g __fish_prompt_normal (set_color normal) end switch $USER case root if not set -q __fish_prompt_cwd if set -q fish_color_cwd_root set -g __fish_prompt_cwd (set_color $fish_color_cwd_root) else set -g __fish_prompt_cwd (set_color $fish_color_cwd) end end echo -n -s "$USER" @ "$__fish_prompt_hostname" ' ' "$__fish_prompt_cwd" (prompt_pwd) "$__fish_prompt_normal" '# ' case '*' if not set -q __fish_prompt_cwd set -g __fish_prompt_cwd (set_color $fish_color_cwd) end echo -n -s "$USER" @ "$__fish_prompt_hostname" ' ' "$__fish_prompt_cwd" (prompt_pwd) "$__fish_prompt_normal" '> ' end # for autojump autojump -a $PWD > /dev/null & # for z.fish z --add "$PWD" end |
このファイルは、配布されている「/usr/local/share/fish/functions/fish_prompt.fish」をコピーして、「autojump」(40〜41行目)と「z.fish」(43〜44行目)の設定を追加したものです。
「z.fish」については次に紹介したいと思っていますが、もし入れられてないなら、44行目はコメントアウトにしておいてください。
あと、「config.fish」の最後に読んでいる「~/.fish.aliases.common」もサンプルとして置いておきます。
目的上、シェルに依存しないものばかりですし、私のお試し用に入れている物が多いので、あまり参考にならないかもしれませんが、「rlwrap」や「open」とか、その他いろんな言語関係のお話はまたいずれ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | ## # Aliases file for User ## # # for more easy # function c; clear $argv; end function h; history $argv; end function julia; /opt/julia-ba9eb0a653/julia $argv; end function pcsv; /opt/csv8.4/bin/ta6osx/scheme -b /opt/csv8.4/boot/ta6osx/petite.boot $argv; end function s; /usr/local/bin/shtool $argv; end function vim; Vim $argv; end # # add rlwrap # function basic; rlwrap /Users/Shared/Data/Lang/ChipmunkBasic/basic $argv; end function bigloo; rlwrap /usr/local/bin/bigloo $argv; end function cbmbasic; rlwrap /usr/local/bin/cbmbasic $argv; end function ccl; rlwrap /Users/Shared/Data/Lang/ClozureCL-1.7/scripts/ccl64 $argv; end function chibi-scheme; rlwrap /usr/local/bin/chibi-scheme $argv; end function clj; rlwrap /usr/local/bin/clj $argv; end function clp; rlwrap /usr/local/bin/clp $argv; end function coqtop; rlwrap /usr/local/bin/coqtop $argv; end function csi; rlwrap /usr/local/bin/csi $argv; end function ecl; rlwrap /usr/local/bin/ecl $argv; end function fansh; rlwrap /usr/local/bin/fansh $argv; end function gist; rlwrap /opt/local/bin/gist $argv; end function gosh; rlwrap /usr/local/bin/gosh $argv; end function gp; rlwrap /usr/local/bin/gp $argv; end function gs; rlwrap /usr/local/bin/gs $argv; end function guile; rlwrap /usr/local/bin/guile $argv; end function jstalk; rlwrap /usr/local/bin/jstalk $argv; end function kawa; rlwrap java -jar /opt/kawa/share/java/kawa.jar $argv; end function lisp; rlwrap /usr/local/bin/lisp $argv; end function luajit; rlwrap /usr/local/bin/luajit $argv; end function metalua; rlwrap /usr/local/bin/metalua $argv; end function mosh; rlwrap /usr/local/bin/mosh $argv; end function nmosh; rlwrap /usr/local/bin/nmosh $argv; end function ocaml; rlwrap /usr/local/bin/ocaml $argv; end function qexo; rlwrap java -jar /opt/kawa/share/java/kawa.jar --xquery $argv; end function racket; rlwrap /usr/local/bin/racket $argv; end function rhino; rlwrap /usr/local/bin/rhino $argv; end function sbcl; rlwrap /usr/local/bin/sbcl $argv; end function scheme48; rlwrap /usr/local/bin/scheme48 $argv; end function scsh; rlwrap /usr/local/bin/scsh $argv; end function sq; rlwrap /usr/local/bin/sq $argv; end function symphony; rlwrap /usr/local/bin/symphony $argv; end function tcltk; rlwrap /System/Library/Frameworks/Tk.framework/Versions/8.5/Resources/Wish.app/Contents/MacOS/Wish $argv; end function yorick; rlwrap /opt/local/bin/yorick $argv; end # # open Mac Gui # function aptana; open -a AptanaStudio3 $argv; end function cot; open -a CotEditor $argv; end function emacs22; open -a Emacs22 $argv; end function emacs23; open -a Emacs23 $argv; end function emacs24; open -a Emacs $argv; end function freemat; open -a FreeMat $argv; end function intellij; open -a "IntelliJ IDEA 12 CE" $argv; end function mi; open -a mi $argv; end # function mvim; open -a MacVim $argv; end function netbeans; open -a "NetBeans 7.2.1" $argv; end function pcalc; open -a PlainCalc $argv; end function reduce; open -a iTerm /usr/local/lib/reduce/20110414/reduce $argv; end function scilab; open -a "scilab-5.3.3" $argv; end function sublime; open -a "Sublime Text 2" $argv; end function tcalc; open -a TCalc $argv; end function texmacs; open -a iTerm /usr/local/bin/texmacs $argv; end function wxmaxima; open -a wxMaxima $argv; end function xcode; open -a Xcode $argv; end function yacas; open -a Yacas $argv; end # # open Windows Apps # function excel; open -a "Microsoft Office Excel" $argv; end function vivi; open -a "vivi" $argv; end function word; open -a "Microsoft Office Word" $argv; end |
最後にくっついている「open Windows Apps」は「VMware FUSION」を利用しています。
気にしないでくださいな〜。
ピンバック: 「z」と「z-fish」と「sh/ksh」版 | VivaFan通信