@kyanny's blog

日本をもう一度「洗濯」してやる - 坂本龍馬

Search Result: eshell

Emacs 内で対話的なシェルを動かす方法の分類

…亜種がある M-x eshell M-x shell 38.2 Interactive Subshell Emacs のバッファと I/O が繋がったサブシェルを立ち上げる メジャーモードは shell-mode 大半の Emacs キーバインドが使える そのかわり端末エミュレーター上でシェルを使う際の一般的なキーバインドは使えない(C-r とか) shell-mode 内でシェルの履歴を操作するキーバインド 38.5.1 Shell History Ring なんだかんだで…

「今すぐフォローすべき○○」で二冠達成したとか、パブーでインタビューされたとか、 YAPC で Ruby の話をするとか

… 派へ転向したので eshell はさっぱり使っておりません。あと、明日っていうか今日っていうか昨日っていうか日付的に微妙ですけど YAPC::Asia Tokyo 2011 の季節ですね!それに絡めてブクログのパブーでインタビューされまして、inside 30days Album〜30days Albumの現場〜という電子書籍に載ってます。無料なので、よかったら見てください!仕事やら YAPC の準備やらでかなり忙しい最中だったので当日は若干フラフラしてて、実は何を喋ったか…

おれの eshell の設定

…もかかわらず未だに eshell をメインのシェルとして使ってる刺身☆ブーメランですこんにちわ。http://oldtype.sumibi.org/show-page/kiyoka.2011_02_22#10 に触発されておれの eshell の設定をさらしてみる。もともと GitHub にあるけども。https://github.com/kyanny/emacs-config/blob/master/dot.emacs.d/init.el#L249 ;; Eshell ;;…

特殊なキーを含むキーバインドを変更したいときの設定方法と調べかた

…てたかったんだけど eshell バッファだと eshell-queue-input が呼ばれてしまい、 eshell-mode-hook で上書きしたかったけど M-RET をどう書いたらいいのかわかんなくて、上のやり方でどうにかした。 (global-set-key [(meta return)] 'ns-toggle-fullscreen) (add-hook 'eshell-mode-hook '(lambda () (progn (define-key eshell…

pcomplete (programmable completion) の書き方

…関数が書いてある。 eshell/em-cmpl.el Eshell から pcomplete を使うための関数群が書いてある。 まず、 eshell/em-cmpl.el の先頭のコメントを読むと、例として pcomplete/make を読むといいよと書いてあるが、 pcomplete/make は簡素すぎてこれだけ読んでも意味がわからないので pcmpl-cvs.el を読む。これは cvs コマンドに対する補完を定義しているもので、 cvs は git と同じくサブコ…

tokyo-emacs #x02 行ってきた

…ル高かった・・・。 eshell の何かで発表してみようかなー、なんて思ってて結局今回も名乗りを上げることはなかったのだけど、やんなくてよかったwと思ってしまった。こんなんだからいつまでたってもうだつがあがらんのだろうけどなー。世の中すごい人がいっぱいいるんだなーと思った。うーん。刺激をうけてがんばるぞって気分になりたくて勉強会とかに出かけているのに、最近は帰ってくると力の差を見せつけられて家でへこむことばかりだなあ。何人かの方とお話させていただいて、名刺交換などしていただい…

eshell で local::lib

;; local::lib (setenv "MODULEBUILDRC" "/Users/k-kaneko/perl5/.modulebuildrc") (setenv "PERL_MM_OPT" "INSTALL_BASE=/Users/k-kaneko/perl5") (setenv "PERL5LIB" "/Users/k-kaneko/perl5/lib/perl5:/Users/k-kaneko/perl5/lib/perl5/darwin-thread-mult…

Emacs から irb を使いやすくするために inf-ruby.el の設定を追加した

…nf-ruby" "Run an inferior Ruby process") (autoload 'inf-ruby-keys "inf-ruby" "Set local key defs for inf-ruby in ruby-mode") (add-hook 'ruby-mode-hook '(lambda () (inf-ruby-keys))) eshell から irb を起動すると、キーバインドの関係でヒストリが使えなくてうざかったが、これで少し楽になった。

今日の eshell alias

…s の中で起動した eshell から見える環境変数を定義するには environment.plist を編集して一回ログアウトしないといけないんだけどログアウト面倒くせーよ、と思ってこういう場当たり的なエイリアスを書いた。前に environment.plist を自動生成する方法について書いたけど、あれだと例えば Amazon EC2 とかのコマンドラインツールで使う環境変数などはたぶん自動設定されそうもない(PATH だけ解決してくれるとかだったような)ので結局自分で書…

local::lib いいな

…ocal::lib を試してみた。結構いいなこれ。 perl Makefile.PL --bootstrap で、既存のライブラリパスに local::lib じたいを入れずに環境を構築できるのが、気が利いてるなと思う。しかし、 eshell から便利に使うにはいろいろ環境変数を environment.plist に書かなくてはいけなくて、しかもこれ反映させるのに一回ログアウトしないといけないから辛い。もうちょっと楽に環境変数を再定義できないもんかな、 Mac OSX で。

公開私のコードポケット

…で、 bash と eshell 用にこんな関数を書いておいて ;; today - 今日の日付のディレクトリに移動 なければ作成 (defun today () (interactive) (let ((today (concat (getenv "HOME") "/" "daily" "/" (format-time-string "%Y-%m-%d" (current-time))))) (if (file-exists-p today) (cd today) (pro…

Net::Amazon::S3 と Config::Pit を使ってみた

…が bash にも eshell にもなかったので bash のほうで /Application/Emacs.app/Contents/MacOS/bin/emacsclient とかを設定してやって、適当に書き捨ての pit_get('s3.amazonaws.com', require => {}) するだけのプログラムをかいて保存して終了。しかし emacsclient はオープンしたバッファに一切変更がないとファイルを保存しないのだろうか、 ppit get s3.a…

eshell におけるコマンド置換(バッククォート)

…r `uptime`eshell にも同様の機能があるが、バッククォートではなくて ${} を使う。 $ banner ${uptime}bash などのシェルにはやはりバッククォートと同様のことをする $() があり、 eshell にも $() があるのだが、こちらは違うものなので注意が必要。どう違うのかは・・・使ってみたけどさっぱりわからず。 http://www.bookshelf.jp/pukiwiki/pukiwiki.php?Eshell%A4%F2%BB%C8…

eshell のバージョンってどうやって調べればいいのだろう

…$SHELL で bash を名乗るからには環境変数には何もないわけだしなあ・・・。 (eshell-version) とかありそうだけどなかった。そういえば Emacs 22.1 あたりを使ってたときは、標準添付じゃなくて最新バージョンっぽい eshell を自前で入れようとしたらうまくいかなかった。いまは Emacs 23 系を使っているので何もしなくても最新がくっついてるんだろうけど、もしもっと新しい機能を CVS HEAD あたりから手に入れられるなら試してみたいな。

git help を eshell からうつとページャで開いてしまってうざいのを解決したい

Git

git.core.pager = cat にしてあるのだけど。制御するパラメータが違うんだろうか。 GIT_PAGER="" という方法もあるらしい。けどこれもダメだった。なんか違う仕組みっぽいな。 ちょっと微妙な気もするけど man git-log とかしてバックグラウンドで man を開かせるようにするか。

~/.MacOSX/environment.plist で Cocoa Emacs にも環境変数を設定

…a Emacs の eshell から使えなかった。 PATH を確認したら案の定、 /opt/local/bin などがセットされてない。そういえば何か違う方法が必要なんだっけなーと思って少しぐぐり。 $ touch ~/.MacOSX/environment.plist<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "h…

eshell のパイプ

eshell では input redirection が使えない (perl ./hoge.pl けどこれも厳密にはふつうの shell とはちょっと違うようだ。 #!/usr/local/bin/perl use strict; use Test::Simple tests => 1; ok -t STDIN; 1; こんなスクリプトを用意する。 pipe か input redirection で標準入力に何か渡されてきた場合このテストは失敗するはず。でも・・・ bas…

eshell/cat

eshell 組み込みの cat, eshell/catなんか EUC-JP なファイルを eshell で cat すると、 UTF-8 な端末でも文字化けせずに表示される。どっかで出力時にエンコーディングをみて勝手に文字コード変換してるような。 head とか *cat とかすると化けるのでやっぱりここみたいだ。 em-unix.el てのに定義されてるらしい。 emulate の略かな。ファイルには aliases って書いてある。 M-x find-library e…

git-config core.pager を cat にした / core.editor を emacsclient にした

Git

… pager=cateshell のなかで git log とかすると less を起動してしまってエスケープ文字が化け化けになるうえに jk とかキー操作がきかなくて見づらいし使いづらいので、 cat で全部標準出力に出してしまうようにした。 eshell ならふつうにスクロールバックできるしコピペも楽だし、 >>># で別のバッファに書き出してそれだけ見ることもできる。core.editor も vi が eshell のなかで開いて化けるので emacsclient に…

Emacs のブックマーク機能

…に C-u M-x eshell するとそこをカレントディレクトリにして新しい eshell バッファを作ってくれるのが便利すぎるので、ほとんどそれへのショートカットとして使ってる。 Emacs を開いてから cd でいちいち移動する必要がないし、毎度ホームディレクトリから作業用ディレクトリのパスを下っていく手間も省ける。覚えておくべきキーバインドは、 C-x r l ブックマーク一覧を表示 C-x r m カレントバッファをブックマークに追加 (dired バッファの場合そ…

GNU Emacs 23.0.60.1 (i386-apple-darwin9.5.0, X toolkit) of 2008-12-04 on `hostname` に乗り換えた

eshell でエスケープシーケンスをうまく扱えるようにする設定が emacs23 からじゃないと(それに付属の eshell からじゃないと)使えないようなので、 CVS からソースをとってきて手元でコンパイルした。Mac OSX Leopard に付属の emacs22 が起動時に yas/minor-mode がどうたらいうエラーをはいていて調子が悪そうだったので、入れただけで使ってないしなあということで yasnippet.el あたりを消したりしたんだけどうまくいか…

eshell でエスケープシーケンスをまともに表示させる設定

…/emacs-ja/EshellColor (require 'ansi-color) (require 'eshell) (defun eshell-handle-ansi-color () (ansi-color-apply-on-region eshell-last-output-start eshell-last-output-end)) (add-to-list 'eshell-output-filter-functions 'eshell-handle-ansi-…

Selected encoding XXXX disagrees with XXXX specified by file contents. というエラー

…れるのか。余計なお世話だ。教訓として、 (set-language-environment 'Japanese) はつけておいたほうがいい。↑あまり良くなかった。 eshell バッファが化ける。 terminal-coding-system は utf-8 なんだけどな。どこかしらで euc-jp になってしまうらしい。悩ましい。しかし、 html ファイルを保存するとき、 charset=XXXX の値によって勝手に文字コードを変えて保存する挙動は結構気持ちが悪い・・・。

Pod::Stripper と podstrip

…T $*じっさいに eshell 上ではるときは、 $ alias podstrip 'perldoc -m $* | perl -MPod::Stripper -e "Pod::Stripper->new->parse_from_filehandle(\*STDIN);"' $ alias perldoc 'perldoc -T $*'とする。クォートしないといけない。確認するときは $ alias で定義済みが一覧で出る。消したいときは alias perldoc と定義…

eshell は本当に素晴らしい

…た。C-u M-x eshell を使うようになってから、ずいぶん違う。これは別バッファで新しい eshell を立ち上げる。 M-x shell とかでもおそらくできる。eshell でコマンドを実行すると、標準出力に吐き出されたテキストはそのまま Emacs 上で編集できる。マージしてコミット、とかのときにコミットログを書いたりするのがとても楽だ。複雑なマージ(リビジョン番号が入り乱れててシビアとか)をするときとかも、別バッファにコマンドラインを書いておいてどうこう、とか…

eshell と yasnippet その二

…e-hooks '(eshell-mode)) (require 'yasnippet)と書いてもやっぱり eshell のマイナーモードに yasnippet がついてしまって pcomplete がバグる。 "where the-major-mode is the major mode in which yas/minor-mode isn't enabled by default." っていう英語を読み間違えているのだろうか。あ、これ逆かな・・・。「TAB 補完がきかな…

yasnippet が eshell のマイナーモードになってしまって eshell-cmpl-cycle-completions が無効になる

eshell でディレクトリ移動とかでタブ押したときに cycle してくれるのに慣れていたのだけど今日なんかそれがうまくいかなくなってしまって、悩んだ結果 yasnippet がマイナーモードになっているせいでタブキーを乗っ取られているらしいとアタリをつけた(-q で起動して eshell 立ち上げたら元通りだったので間違いない)。で、こんな風にしてみたけど解決せず。ううむ。とりあえず yasnippet 切っちゃおうか・・・。手動で (yas/minor-mode -1)…

Emacs の中から呼んだプロセスが応答不能になったときの殺し方

eshelll なり shell-mode なりから呼んだプロセスが応答不能になってしまったときの殺し方。 C-c C-c などを送ってもダメな場合の話。Emacs を終了しようとすると *Process List* バッファがでてきてプロセスを終了するかどうか一つずつ聞かれるけど、 Emacs は終了したくないしいちいち yes とタイプするのも面倒、とする。eshell を起動して、 $ (list-processes) ; または C-c C-s Proc Status…

eshell の for-in ループ

eshell の for-in ループは、http://www.bookshelf.jp/pukiwiki/pukiwiki.php?Eshell%A4%F2%BB%C8%A4%A4%A4%B3%A4%CA%A4%B9#content_1_11にあるように for i in 1 2 3 4 5 { echo $i > $i.inc }のように書くのですが、これと等価に思える bash の for i in 1 2 3 4 5 ; do echo $i > $i.inc ; d…

today() を emacs lisp で書き直した

…today() を eshell の中でも使いたくなったので emacs lisp 関数として書き直してみた。 ;; today - 今日の日付のディレクトリに移動 なければ作成 (defun today () (interactive) (let ((today (concat (getenv "HOME") "/" "daily" "/" (format-time-string "%Y-%m-%d" (current-time))))) (if (file-exists-…