Kamuycikap - SentenceDataBase

日々の勉強の記録を気分で書き綴るブログ

Cygwin環境でのzshカスタマイズメモ

以前の日記で.zshrcを設定し、一通り問題ないと思ったけれど、エディタはWindows側のを使いたいなぁ。。。。と思ったので、zshからWindows用アプリケーションを呼び出したり、利用したりする場合に気が付いたことをメモ。

aliasに自分が利用したいエディタを指定

利用しているエディタはxyzzyなので.zshrcに

xyzzy=/cygdrive/c/xyzzy/xyzzycli.exe

を追加しておく。
Windows側のドライブレターは/cygdrive以下に配置されている模様なので、そこから実行ファイルまでのパスをたどって指定する。
これでプロンプトから

HITACHI-PC% xyzzy ./hoge.txt

と実行する事で、エディタが起動する。

エディタでを利用したファイル保存時の文字コードはUTF-8Nに

私は、スクリプトや設定ファイルを編集する場合、Windows側のxyzzyを利用します。
shift-jisとかで保存して問題ないだろうと思っていたのですが、zshスクリプトを実行すると正しく実行されません。
UTF-8で保存しても問題が解決されず、ものは試しにzedを利用してスクリプトを書くと正しく実行されます。
様々調査した結果、ファイルの先頭に埋められているDOMが問題である事が判明しました。
Windows側のエディタでzshで実行するスクリプトや関数ファイルを作成する場合、UTF-8Nで保存する必要があります。
幸い、利用しているxyzzyはUTF8-Nで保存する事が可能。
癖はありますがxyzzyは手放せないエディタです。

※export LANG=ja_JP.UTF-8としているのが理由だからではありますが、LANG=ja_JP.SJISとすると、ls等で日本語表示に問題があります。
※もしかしたら、grep等で問題があるかもしれませんが。。。。後々問題になったときに対応する事とします。

関数として自分用のコマンドを作成

それほど使いこなしていなかったbashですが、シェルスクリプトを作成し、シンボリックリンクをusr/binなどに設置してコマンドを利用しておりました。
zshを利用していて、historyと関数に感動したので、今回は関数でコマンドを登録してみようと思います。
内容はしょぼいですが、こんな感じで自分用のコマンドを増やせるのは良い事です。
history機能がハンパなく素晴らしいので、シェルスクリプトを記述する事は皆無に等しくなってしまっておりましたが、関数ファイルは記述してみようかなと。
やはりzedだけではなく、エディタで編集する効率は捨てがたい。
zedが非常によく出来ているので、大きなファイル以外はzedでやっつけてしまいます。
zedそのものがzsh関数である事に驚きを隠せません。

コマンドラインにて、echo $fpathを実行すると下記のように表示されます。

HITACHI-PC% echo $fpath                                            /home/Admin
/home/Admin/.zsh/functions/Completion /usr/share/zsh/site-functions /usr/share/z
sh/4.3.9/functions

なので、自分が作成した関数を/home/Admin/.zsh/functions/Completionに置いておくことにします。

ファイル名:open_mymemo

# 会社で利用するメモをxyzzyで表示する
/cygdrive/c/xyzzy/xyzzycli.exe "d:\work\Documents\Write\memo.txt"

ファイル名:rezshrc

# .zshrcを変更したときに読み直す
source ${HOME}/.zshrc

有効にするため、.zshrcに下記を記述

# 自作関数のオートロード
#
autoload open_mymemo
autoload rezshrc

Ctrl-sとCtrl-dを無効にする

Ctrl-sはコンソールにロックがかかります。
解除するにはCtrl-qをタイプしなければなりません。
分かってしまえば簡単ですが、タイプミスによる混乱を避けるため解除する事にします。
Ctrl-dはログアウトしてしまうのでイライラしてしまいます。
これも無効にします。

# コンソール関係の設定
#
stty stop undef       # Ctrl-sによるコンソールロックの無効
setopt IGNOREEOF      # Ctrl-dによるログアウトを無効にする

設定ファイル

以上を設定したファイルの内容は下記のとおり

## user .zshrc configuration file
#

# 環境変数設定
#

# alias
alias xyzzy="/cygdrive/c/xyzzy/xyzzycli.exe"
alias grep="grep --color"

# コンソール関係の設定
#
stty stop undef       # Ctrl-sによるコンソールロックの無効
setopt IGNOREEOF      # Ctrl-dによるログアウトを無効にする

# 自作関数のオートロード
#
autoload open_mymemo
autoload rezshrc