M-!もしくはM-|でシェルコマンドを実行できますが、
この履歴を保存する事は出来ないのでしょうか。
終了しない限りはM-n,M-pで履歴をたどれるのですが、
再起動すると履歴が消えてしまいます。
eshellの履歴のように.zsh_history等と共有したりできると便利だと思うので、
機能としてある気がするんですが見つけられませんでした。
使用しているのはCarbonEmacsで
versionが返却する文字列は以下の通りです。
GNU Emacs 22.3.1 (i386-apple-darwin9.6.0, Carbon Version 1.6.0) of 2009-01-03 on seijiz.local
よろしくお願いします。
拙作 shell-history.el はどうでしょうか?
コマンドの履歴が ~/.zsh_history に書き込まれます。
http://www.emacswiki.org/cgi-bin/wiki/download/shell-history.el
拙作 shell-history.el はどうでしょうか?
コマンドの履歴が ~/.zsh_history に書き込まれます。
http://www.emacswiki.org/cgi-bin/wiki/download/shell-history.el
rubikitch様
ありがとうございます。
御陰様で.zsh_historyに書き込まれる事は確認できました。
ちなみに履歴のロードは出来ないのでしょうか。
選択範囲に対してC-uM-|からperlで正規表現による
置換処理を良くするのですが、毎回同じ正規表現を書くのが苦痛なので、
ヒストリから選択できるととても嬉しいです。
もう少し自分でも調べてみます。
これも拙作ですが、anything-complete-shell-historyが使えます。
http://www.emacswiki.org/cgi-bin/wiki/download/anything.el
http://www.emacswiki.org/cgi-bin/wiki/download/anything-match-pl...
http://www.emacswiki.org/cgi-bin/wiki/download/anything-complete...
をロードして
(require 'anything-complete) (require 'shell-command) (define-key shell-command-minibuffer-map "\C-o" 'anything-complete-shell-history)
と書けばC-oで履歴から絞り込み検索できます。スペースで区切って複数の単語を指定します。
rubikitch様
重ねてのご返答ありがとうございます。
ただ申し訳ありません、上手く動作させられていません。。
Symbol's value as variable is void: shell-command-minibuffer-map
とエラーが出てしまいます。shell-command-minibuffer-mapが、shell-command.elに
定義されていないように見えます。http://www.namazu.org/~tsuchiya/elisp/shell-command.elから
ダウンロードしたものでよろしいのでしょうか。
ろくに調べもせずに聞いてばかりで申し訳ないのですが、
解決方法をご教示いただけないでしょうか。
ごめんなさい、パッチ忘れてました。
以前、作者に送ったのですが…
$ diff -u shell-command.orig.el shell-command.el --- shell-command.orig.el 2009-04-28 11:41:37.000000000 +0900 +++ shell-command.el 2008-09-02 20:07:26.000000000 +0900 @@ -132,6 +132,9 @@ :type 'string :group 'shell-command) +(defvar shell-command-minibuffer-map (make-sparse-keymap) + "*Keymap for shell-command.") + (put 'shell-command/static-if 'lisp-indent-function 2) (defmacro shell-command/static-if (cond then &rest else) (if (eval cond) then (cons 'progn else))) @@ -228,7 +231,7 @@ (format-string current-directory &optional initial-contents user-keymap read hist) "Read a command string in the minibuffer, with completion." - (let ((keymap (make-sparse-keymap)) + (let ((keymap shell-command-minibuffer-map) (prompt (shell-command-make-prompt-string format-string current-directory))) (set-keymap-parent keymap (or user-keymap minibuffer-local-map))
rubikitch様
何度も本当にありがとうございます。
ご教示いただいたパッチをあてたところ
正常にロードされるようになりました。
ただ心苦しいのですが、未だに動作させられていません。。
M-x shell-command [RET] C-o
とするとglobalに定義されているopen-lineが呼ばれてしまいます。
"\C-o"をglobal-unset-keyして、同様の操作を行うと
C-o is undefinedとなりますのでキーバインドが登録されていないようです。
.emacsには以下のように記述しています。
;(global-unset-key "\C-o") # open-lineを消してみる
(require 'anything)
(require 'anything-config)
(require 'anything-match-plugin)
(require 'anything-complete)
(require 'shell-command)
(define-key shell-command-minibuffer-map "\C-o" 'anything-complete-shell-history)
*Messages*バッファにエラーは発生しておらず、何を確認すればよいか解らないです。
大変申し訳ないのですが、どのように対処すれば良いか教えて頂けないでしょうか。
(shell-command-completion-mode)
をrequireの後に入れてください。
これがあると、さきほどの設定が有効になり、M-!で補完もきくようになります。
rubukitch様
ようやく動作致しました。
しつこい質問にも丁寧に答えて頂きまして、ありがとうございました!
おかげ様で望んでいた状態に設定できて快適です。
最初は僕の環境ですとCommand attempted to use minibuffer while in minibufferという
エラーが発生して動かなかったのですが、ご指摘の設定に加えて
(setq enable-recursive-minibuffers t)を追加したところ動作致しました。
最終的に.emacsに追加した記述は以下になります。
---
(require 'shell-history)
(require 'anything)
(require 'anything-config)
(require 'anything-match-plugin)
(require 'anything-complete)
(require 'shell-command)
(shell-command-completion-mode)
(setq enable-recursive-minibuffers t)
(define-key shell-command-minibuffer-map "\C-o" 'anything-complete-shell-history)
---
それでは失礼します。
rubikitch様
ありがとうございます。
御陰様で.zsh_historyに書き込まれる事は確認できました。
ちなみに履歴のロードは出来ないのでしょうか。
選択範囲に対してC-uM-|からperlで正規表現による
置換処理を良くするのですが、毎回同じ正規表現を書くのが苦痛なので、
ヒストリから選択できるととても嬉しいです。
もう少し自分でも調べてみます。