2009-09-16 16 views
17

diredまたはdiredのようなバッファ内で解凍(または圧縮)したいと思います。このようなものはありますか? Nautilusのファイルマネージャと同様のもの、つまりファイルを選択してからキーストロークを押して、これらのファイルを新しいアーカイブファイルにしたいと思います。Emacs内で解凍/解凍するには

ありがとうございました

答えて

26

、あなただけの今、変数diredでZキーが.zipファイルを認識し、変数'dired-compress-file-suffixes

(eval-after-load "dired-aux" 
    '(add-to-list 'dired-compress-file-suffixes 
       '("\\.zip\\'" ".zip" "unzip"))) 

に追加する必要がありますzipアーカイブを解凍します。すでにサポートされているのはgunzip,bunzip2,uncompressおよびdictunzipです。

あなたがファイルをマークし、あなたはzがマークされたファイルのセットを圧縮するためにバインドするために、以下を使用することができます.zipアーカイブにそれらを追加したい場合は、次の

(eval-after-load "dired" 
    '(define-key dired-mode-map "z" 'dired-zip-files)) 
(defun dired-zip-files (zip-file) 
    "Create an archive containing the marked files." 
    (interactive "sEnter name of zip file: ") 

    ;; create the zip file 
    (let ((zip-file (if (string-match ".zip$" zip-file) zip-file (concat zip-file ".zip")))) 
    (shell-command 
    (concat "zip " 
      zip-file 
      " " 
      (concat-string-list 
       (mapcar 
       '(lambda (filename) 
        (file-name-nondirectory filename)) 
       (dired-get-marked-files)))))) 

    (revert-buffer) 

    ;; remove the mark on all the files "*" to " " 
    ;; (dired-change-marks 42 ?\040) 
    ;; mark zip file 
    ;; (dired-mark-files-regexp (filename-to-regexp zip-file)) 
) 

(defun concat-string-list (list) 
    "Return a string which is a concatenation of all elements of the list separated by spaces" 
    (mapconcat '(lambda (obj) (format "%s" obj)) list " ")) 
+0

は「Z」はそれを行いません。 - の - ボックス? (または 'm'でマークしてから 'Z'を押す)。私はしばらく前に私のために働いたことを思い出します。私はここでそれを見た: http://xahlee.org/emacs/file_management.html – hatmatrix

+1

'Z'はファイルを圧縮し、それらはそれぞれ個別に圧縮されます。それらをアーカイブ/ジップに追加することはありません。 –

+0

連結文字列リストが存在しないようです: 連結:シンボルの関数定義がvoid:連結列リスト –

16

diredでディレクトリを開きます。あなたが縮めるファイルにmとマークしてください。それからちょうどあなたがシェルと同じように、あなたはファイルをマークし、& unzipを実行できるのdiredからアーカイブ全体を抽出するには

! zip foo.zip * <RET> 

を入力します。

zip-archiveモードでは、zipファイルをdired風にブラウズできます。最近のバージョンのGNU emacsに付属していて、拡張子が.zipのファイルを訪問するときにデフォルトで使用されます。このモードでは、個々のファイルをバッファに抽出し、そこからC-x C-sで保存することができます。あなたは.zipファイルを解凍するにはオプション...

を持って