pushd をうまく打てないゴミカスな僕
どーもです。
突然ですが,pushd,dirs 使ってますか?
ワタシは使ってるというか,これがないと死亡コースなわけでして。
しかし!!!
よく,pushd を pusdh とか色々タイプミスするぽんこつなワタシでして。
そこで,エイリアスして,
alias pd='pushd' alias ds='dirs'
としているわけです。
teraterm で Cygwin に接続して使用している分には,すごく快適。
タイプミスのしようがない。万々歳!
と思ってたのもつかの間,Emacs 内の shell で使用すると
問題が発生したわけです。
pd を使うと,Emacs 内でのカレントディレクトリが変更されないのです。
pd してから M-x pwd とかするとわかります。
これは非常に困ります。ファイル名の補完も効かなくなります。
この問題に気づいて放置したのが1年以上前だったはず。
それ以降 Emacs 内の shell では,pushd を使用していました。苦痛やで。
んでですね,昨日ふと解決策を調べてみるかと思い,
shell.el を開いて,んなわけないよねーとか思いながら,pushd で検索してみたのです。
そしたらがびーん。
(defcustom shell-pushd-regexp "pushd" "Regexp to match subshell commands equivalent to pushd." :type 'regexp :group 'shell-directories)
なんかいきなりそれっぽいの見つかっちゃったんですけど−。
ちゅうわけで,以下を .emacs とかに書き書き。
(setq shell-pushd-regexp "\\(pushd\\|pd\\)")
これで今のところ万事解決しています。
他にもおもしろそうな変数が用意されているようなので,
またそのうち見てみるかもです。
まとめると,
- .zshrc とかで,alias pd='pushd'
- .emacs とかで,(setq shell-pushd-regexp "\\(pushd\\|pd\\)")
- エイリアス名と正規表現で指定するものがマッチしないとだめだよ
と。