Eshell の使い方とか設定とか【Emacs Shell、Lisp】
教えろ 最近使いだしたがマニュアルねーからさっぱりわがんね 早くしてね 参考リンク http://www.chienowa.co.jp/frame1/ijinden/ ;;以下はカスタマイザで設定した '(eshell-ask-to-save-history (quote always));確認なしでヒストリ保存 '(eshell-cmpl-cycle-completions t);補完時にサイクルする '(eshell-cmpl-cycle-cutoff-length 5);補完候補がこの数値以下だとサイクルせずに候補表示 '(eshell-hist-ignoredups t);履歴で重複を無視してくれるっぽいけど上手く動いてない '(eshell-history-file-name "~/.bash_history");バッシュと履歴共有してるのが原因かなぁ eshell-isearch-backward すると履歴からisearshしてくれるけどサイクルできるのかどうかわからない それでもデフォのM-rよりは使いやすい eshell と shell mode ANSI color codes に対応して欲しい。 >>36 うぉー、ありがとう。 知らんかった。term-mode. これから、viper との上手い組合せを、考えてみます。 バッファ上無限にヒストリーがたまってくのは精神衛生上良くない。 (add-hook 'eshell-mode-hook #'(lambda () (define-key eshell-mode-map "\C-l" #'(lambda () (interactive) (let ((inhibit-read-only t)) (erase-buffer) (eshell-emit-prompt)))))) こんな感じにしとけばいいんじゃないの? なんか emacs 抜けるのめんどくさくなってきたから、 自作の elisp コマンド + eshell + eshell のエイリアス で全てやるようになった。 *command すれば外部コマンドも 何なく呼べるし. eshell ではコマンドつっても普通のelisp関数 だから、かなり簡単に自分専用コマンドが書ける そういう行為は すべての道具をコタツの周りにおいて 寝たまま生活できるようにするのと似ていて、 だんだん外と適応できなくなって自分を追い込んでいくような気がする。 >>42 でも、それが shell のあるべき姿なんじゃないかな、と思う。 shell を "自分流に" すればするほど、使い安くなり作業効率も 上がる。外との対応なんて、どの shell もあってないようなものじゃん。 そういう事は、 eshell コマンドパッケージをpublicに up する人が 考えればいい事。 それに元々、 eshell は "自分用の" shell を作るのにはもってこいの shell だし、それが作者の意図したものだと思う。 Eshellのコマンド履歴検索の動作が気にくわねいっす。 ハイレベルな議論の最中申し分けございません。 補完の順序も気に入らない。 hoge1 hoge2 hoge3 みたいなファイルがある時に補完を効かせると hoge3 → hoge2 → hoge1 って感じで補完されるんだが、普通逆じゃね? それは多分customize-group Eshellでいじれるはず。 何て変数か忘れたけどw >>46 それは、日付けが新しい順に補完されてるんだよ。 ~ $ touch hoge1 ~ $ touch hoge3 ~ $ touch hoge2 だと、hoge2 → hoge3 → hoge1になるよ。 俺はむしろ気に入っている。 man コマンドは elisp に置き換えられるけど、info は違うのね… >>50 と思ったけど、 which info したら置き換えられてた。 何で文字が化けるんだろう。 まさかとは思うが M-x infoしても化けたりしないだろうな 昔 info はインデックスの数え方がバイト単位だったり文字単位だったりで 統一されてなかったけど、今はどうなった? >>52 んなわけない。 eshell 上で info すると eshell のバッファに文字化けした文字がいっぱい出るよ。 んだね。eshell/infoがまともに雨後感。 (defun eshell/info (&optional x) (interactive) (if x (info x) (Info-directory))) こんなんでしのいではどうかと ちょっと使ってみました。 >>8 >ttp://www.bookshelf.jp/pukiwiki/pukiwiki.php?Eshell%A4%F2%BB%C8%A4%A4%A4%B3%A4%CA%A4%B9 >(ちなみに、私の環境ではなぜか最後の [^a] がうまく処理されません。他は大丈夫なのですが。) customize で (Eshell初期化の前に設定されている必要があるので) eshell-glob-chars-list に ?^ を加える eshell-glob-translate-alist に (?^ . "^") を加える と修正する。 #作者にメールを送りましたがとりあえず返事は来ていません。 >>39 ,40 (add-to-list 'eshell-output-filter-functions 'eshell-truncate-buffer) >>57 > #作者にメールを送りましたがとりあえず返事は来ていません。 昨夜になって返事が返ってきました。しかも、 I am checking in these changes now. だそうな。お返しにもう一つバグ報告しときました。 eshellも結局全然使ってないな。 57の不具合は8/10付けで修正されていた。 > だそうな。お返しにもう一つバグ報告しときました。 これは which が program を使っているのに lisp だと嘘をつく、って件だっ たんだけど、直されてない。 今になって気付いたが、思いっ切り直前の 50- の議論に関係していたね。 微妙にすれ違いというか全くすれ違いなんだけど、 bookshelf.jpのwikiおかしくない? eshellの項を読みに行ったらbasic認証なげつけられたんだけど。 >>61 > bookshelf.jpのwikiおかしくない? めどうさんのスレでも出てたけど。 探せばどっかにパス書いてあるよ。 Windows 上で Eshell を Cygwin 用にできますか? 例えば、 c:/ は /cygdrive/c/ とか >>64 cygwin-mount は実際に使用していますが、eshell上では c:/ は c:/ として認識されてしまいます >>66 もちろん cygwin 上での bash なら ~/ は /home/user/ になるわけですが、 eshell 上で bash.exe を使用した場合、 ~/ は c:/cygwin/home/user/ と認識しています >>65 >>64 でいいたいのは、cygwin-mount.el を使って、eshell の内部関数を書き換えろって事だ。 >>68 そんな簡単にはいかないと思うのですが。 実際、eshell内部のパスを処理する部分で cygwin-mount.el の関数を 使用したとしても、サブプロセスがパスを理解してくれない場合も出てくると思われます >>70 eshell の内部関数を書き換えただけではうまくいくとは限らないってことです わかります? >>73 窓のところで meadow / memo 適当なところでバッファを shrink してほしいんだけど、そういう設定は無いのかな? >>>78 (setq eshell-buffer-maximum-lines 5000) とか? >>79 おい若者、それだけではうまくいかんぞ. それをセットした後に (eshell-truncate-buffer) を実行しなければならない.試しに *eshell* 上で (let ((eshell-buffer-maximum-lines 10)) (eshell-truncate-buffer)) を実行してみたまえ. コマンド補完の動作を bash のデフォルトみたいにしたいのですが 方法ありますか? >>81 eshell-cmpl-cycle-cutoff-length を 0 にセットしてはどうだ eshellの配布場所の http://emacswiki.org/johnw/eshell.html が変(永久ループリダイレクト)なんですけど、 どこへ行っちゃったんでしょうか? Emacs ヒッキーなんで使ってみたいけどマニュアル全然ないのな… eshellって.bashrcや.zshrcのように起動時に読み込むファイルってあるの? >>85 eshell.texi見ろ と言おうと思ったけど、実際に見たら言えなくなったw eshellを普通に使っていたらホームディレクトリ以下が全部消えた話 ttp://d.hatena.ne.jp/Rommy/20070115/1168876829 >>89 これは気の毒だな。俺もzsh使ってるし .* で上位ディレクトリまで解釈してしまう sh, bash, eshell って怖いな。 >>89 ,90 これって、eshellのglobが悪いんじゃなくて、eshell/rmの実装が悪いんじゃないの? rm(1)と、挙動が違うってのが。 それともGNU版rmだけが特別なのかな〜? 気になったから、自分で環境作ってやってみたら、 $ rm -rf .* rm: cannot remove `.' or `..' rm: cannot remove `.' or `..' と、でたよ。 emacs-version is 22.0.99.1 はてなの人は、22.0.91だって。 そーいえば BSD 版の rm は比較的最近なんか安全方向に変わったんだよね? .. ではなく / に関するものだったような気がするけれど。 >>85 ちょっと前まで「Eshellを使いこなす」ってページがあったんだけど、 なくなっちゃったんだよね。いろんな意味でマニュアル的な存在でもあって、 多分既存するEshellの情報のほとんど全てが載っていたと思う。 >>95 6ヶ月越しのレスとは、またすごいロングパスだな。 うげ、そのうち勉強しようと思ってたのに なくなっちゃったのか > Eshellを使いこなす archive.orgを漁ってみたいので 覚えてる人いたらURLきぼん。 Meadow memo にある奴はサルベージじゃないのか ? 大日本プロレスが金村キンタローを無期限出場停止処分に 大日本プロレスは18日、アパッチプロレス軍所属の金村キンタローに対し1月24日をもって大日本プロレスへの出場を無期限停止に、 また、村上健リングアナウンサーに対し2月16日をもって大日本プロレスへの出入りを無期限禁止とすることを発表した。 以下は大日本プロレス公式ホームページ上にての発表。 アパッチプロレス軍所属の金村キンタロー選手を1月24日をもって大日本プロレスへの出場を無期限停止とする 理由 1月20日千葉ブルーフィールド大会で大日本プロレス女性社員の下腹部を 着衣の上から触るなどの行為を行い女性社員に多大なる精神的ショックを与えた為 村上健リングアナウンサーを 2月16日をもって大日本プロレスへの出入りを無期限禁止とする 理由 1月20日に起こったことに関し、選手社員とともに本人も同意し決定した事項を 事実と違う形で被害者に伝え混乱を招き、また被害者を助けたいとする選手社員の気持ちを裏切り続けた上で それらの人間を悪者にするかのような言動を続けたため (大日本プロレス公式ホームページより、原文ママ) ttp://headlines.yahoo.co.jp/hl?a=20080218-00000029-spnavi-fight 金村キンタロー ttp://ja.wikipedia.org/wiki/%E9%87%91%E6%9D%91%E3%82%AD%E3%83%B3%E3%82%BF%E3%83%AD%E3%83%BC >本名:かねむら ゆきひろ・韓国名:キム・ヘンホ C-c C-tで 選択範囲内のすべての行の先頭にタブを入れたいのですが, lispをどう書けばいいですか? わかる方がいましたら教えてください > From: [89] デフォルトの名無しさん <sage> > Date: 2008/05/12(月) 09:30:03 > > 選択範囲内のすべての行の先頭にタブを入れたいのですが, > どうすればいいですか? > > わかる方がいましたら教えてください。 > __________________________________________________ > > From: [90] デフォルトの名無しさん <sage> > Date: 2008/05/12(月) 09:43:01 > > >>89 > マークして C-x r t C-q TAB RET > 基本的な操作は本スレで質問しような。 このコピペは流行ってるのか? >>102 C-x r t C-q TAB RETしてもできなかったよ 例えば rm *~ して~の後ろでTABを押したときに、*~に含まれるファイル名の補間リストが見たいのですが、 現状では、*~にマッチするファイル名を順に変換するようになっています。 補間リストを表示するようにはできませんか? vistaでeshell使っていて、pythonをeshell上で使いたいんですが どうすればコマンドで使えるようになるのでしょうか 教えてください load-path ("c:/Python30/ パスは通ってるのですが、 c:/ $ python python: command not found このようにコマンドとして使えません 節子、それファイルパスやない...ライブラリのロードパスや! >>107 (getenv "Path") にc:/Python30/が含まれるべきだろ低脳 できるようになりました ありがとうございます わからなくなったらまたきます^^ >>109 そのぐらいで怒るなよ >>110 がんばれよ CVS HEADのEmacs使ってみて。 eshellでの ls が激速になってる。 ほんとだ カラーもちゃんと表示されるようになってる 外部プロセスの呼出をやりたいです。 start-processがある事がわかったのですが、うまくできませんでした。 やりたい事はC-c t tで 現在開いているファイルに対して txt2tags -t html --toc --encoding=utf-8 を実行してほしい。 (defun foo () (interactive) (setq bname(concat "txt2tags -t html --toc --encoding=utf-8 " (buffer-name))) (shell-command bname)) (global-set-key [(C c)(t)(t)] 'foo) とかじゃだめなの? てか、eshellが全然関係ないうえにstart-processも関係ないよな、この質問 まあ過疎ってるからいいけども 入力した文字列を eshell を起動して実行させたいんですが、 次のように read-string を使うと、execute-kbd-macro が正しく動きません。 (defun foo () (interactive) (let (var) (setq var (read-string "% ")) (execute-kbd-macro (concat "\370eshell " var " ")))) read-string を使わずに (setq var "ls") などと書くと正しく動作します。 どうやったら read-string で入力したのを eshell で実行できるんでしょうか? >>116 (defun foo (cmd) (interactive "M%% ") (eshell) (goto-char (point-max)) (insert cmd) (eshell-send-input)) >>117 キーボードマクロを使わない、まさにその方法が知りたかったです。 ありがとうございました! なんか知らんが、eshellとtrampの組み合わせが調子悪い・・・。 一旦、sudo lsとかを実行しないと数十秒固まったりする。同じ症状が出てる人いません? emacs 23.2.1とtramp 2.1.17です。 >>119 ですが、自己解決しました・・・。 tramp.el内のtramp-methodで、sudo項目のオプション-Pを消したら普通に動くようになりました。 原因はよくわかりませんが・・・。 eshellのターミナルで git log を実行すると次のように WARNING が出て RETURN を押さないと次が見えなくて不便です $ git log WARNING: terminal is not fully functional - (press RETURN) 環境変数TERM関連は次のようになってます $ env | grep TERM TERM=dumb TERMCAP=SC|screen|VT 100/ANSI X3.64 virtual terminal:\ TERM_PROGRAM=Apple_Terminal TERM_PROGRAM_VERSION=273 ためしに export TERM=xterm とすると (press RETURN) 等はでなくなるのですが、 ansi-color-for-comint-mode-on にしているにもかかわらず エスケープシーケンスがそのまま表示されてしまいます。 普通のコンソールと同じように (press RETURN) 等を出さずに 色付きで表示するにはどうしたらいいんでしょうか? defcustom から eshell-modules-list にアクセスをし、 中に eshell-term を加えてみてはどうかね。 eshell-modules-list の内容をここに貼ってみろ。 eshell-modules-list は次のように自分で設定していて実際の値もこれと同じでした。 (setq eshell-modules-list '(eshell-alias eshell-banner eshell-basic eshell-cmpl eshell-dirs eshell-glob eshell-hist eshell-ls eshell-pred eshell-prompt eshell-script eshell-term)) なぜデフォルトにあった eshell-unix が抜けているのかは、思い出せず。 で、これをきっかに設定を見直したところエスケープシーケンスが反映されていない原因は、 eshell-output-filter-functions から eshell-handle-ansi-color を外していたからでした これもまたなぜ外してしまったのか。。。 ただeshellのデフォルトの TERM=dumb の状態だと git log のあとで 警告が出てRETURNを求められるのは相変わらずです。 >>124 解決策は2つある。 1. eshell上で $ export PAGER= $ git log 2. eshell-visual-commands に git を加える。 お勧めは .eshell/login に export PAGER= を挿入するやり方。 わかったか? >>125 ありがとうございます 2の方法だと何も表示されなくなってしまったんですが .eshell/login に export PAGER= を挿入する方法だとうまく行きました。 当初、環境変数PAGERを設定してなのになんでPAGERが作動するのか謎でしたが 空の値をセットすればPAGERが無効になるんですね。勉強になりました。 ただ git help config すると sh: -c: line 0: syntax error near unexpected token `||' のようエラーがぞろぞろ出てきてまったくマニュアルが表示されなくなったので 試しに export PAGER=cat にすると git help config の方も動きました。 あとほんとに些細なことなんですが git config --global color.ui "auto" として 出力を色付きにしているとき、普通のコンソールでは色付きで表示されるのに eshell上ではモノクロです。 色指定のエスケープシーケンスが含まれるログファイルをeshell上でcatで表示すると 色付きで正しく表示されるんですが。 >>126 > 当初、環境変数PAGERを設定してなのになんでPAGERが作動するのか謎でしたが PAGER のデフォルト値が man だからだろ。 > 出力を色付きにしているとき、普通のコンソールでは色付きで表示されるのに TERM が馬鹿 (dumb) だから。 xterm-256color や xterm-color にしてみると良い。 eshell の使う ansi-color のモジュールが サポートしていないエスケープシークエンスがあるので、 うまく表示されない場合が多い。 >>127 ありがとうございます export TERM=xterm-256color export TERM=xterm-color のどちらでも git log の表示が色付きで出るようになりました RubyをEmacsで使おうとして苦戦しております。 http://pub.cozmixng.org/ ~the-rwiki/rw-cgi.rb?cmd=view;name=Emacs このサイトにて、 「Debianの"ruby-elisp.deb"のようにパッケージが利用できるなら、 それをインストールする。ソースからビルドした場合などは、 適当な場所(たとえば~/site-lispなど)にmisc/*.elをコピーする。 そして~/.emacsに次のように書いておく」 と書いてあります。 最後の部分は恐らくパスを追加するということなのだと思うのですが、 私はパスを追加するとはコントロールパネルから辿って行って、絶対パスを ペーストするやり方しか知らないので、ここがよくわかりません。 ~/.emacsって言うのはどこを指していて、どうやって書き込めばいいのでしょうか? >>129 釣りですか?UNIX版で~/.emacsっていうのはどこを指しているのか なんて質問が出るわけがないのだけど。 $ vi ~/.emacs とか $ nano ~/.emacs でどう? 現在どのTAGSファイルを読み込んでるか確認する方法ないかな read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる