Comment décompresser/décompresser dans Emacs

je voudrais lancer unzip (ou même zip) à l'intérieur de dired ou d'un tampon de type dired. Est-il quelque chose comme cela? Je voudrais quelque chose de similaire au gestionnaire de fichiers Nautilus: c'est-à-dire sélectionner des fichiers et ensuite appuyer sur une touche pour obtenir ces fichiers dans un nouveau fichier d'archive.

Merci

19
demandé sur Damien Cassou 2009-09-16 10:48:55

2 réponses

vous avez des options...

Pour décompresser un .zip fichier, il vous suffit d'ajouter à la variable 'dired-compress-file-suffixes

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

Z la clé dans dired reconnaîtra le .extension zip et décompression A.archive zip. Déjà pris en charge sont:gunzip,bunzip2,uncompress et dictunzip.

si vous voulez marquer des fichiers et les ajouter à A.vous pouvez utiliser ce qui suit pour faire z lié à zip de l'ensemble des fichiers marqués:

(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 ?0)
  ;; 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 " ")) 
28
répondu Trey Jackson 2009-09-20 14:19:00

Pour les fichiers zip, ouvrez le répertoire dans dired. Cochez les fichiers que vous souhaitez compresser avec m. Puis tapez

! zip foo.zip * <RET>

pour extraire une archive entière de dired, vous pouvez marquer un fichier et exécuter & unzip, comme vous le feriez dans un shell.

le mode zip-archive vous permettra de parcourir les fichiers zip de façon directe. Il devrait être fourni avec les versions récentes de GNU emacs et sera utilisé par défaut lorsque vous visitez un fichier avec le .extension zip. À partir de ce mode, vous pouvez extraire les fichiers individuels dans un tampon, et de là les enregistrer avec C-x C-s.

17
répondu p00ya 2009-09-16 07:13:07