Как я распаковал/разархивировал в Emacs

Ответ на этот вопрос должен на самом деле зависеть от домена, для которого реализовано решение.
, Если Вы, оказывается, моделируете физический поиск в физическом стоге сена, у Вас могли бы быть классы

  • Пространство
  • Солома
  • Игла
  • Ищущий

, Пространство
знает, какие объекты расположены, в которых координатах
реализации законы природы (преобразовывает энергию, обнаруживает коллизии, и т.д.)

Игла , , Солома
расположена в Пространстве
, реагируют на силы

, Ищущий
взаимодействует с пространством:
        двигает рукой, применяет магнитное поле, шаг скрутки записей, применяет рентгеновские лучи, ищет иглу ...

Thus    seeker.find(needle, space)     or    seeker.find(needle, space, strategy)

стог сена просто, оказывается, находится в пространстве, где Вы ищете иглу. При абстракции далеко пространства как своего рода виртуальная машина (думайте: матрица), Вы могли получить вышеупомянутое со стогом сена вместо пространства (решение 3/3b) :

seeker.find(needle, haystack)         or        seeker.find(needle, haystack, strategy)

, Но матрица был Домен, который должен только быть заменен стогом сена, если Ваша игла не могла бы быть больше нигде.

И с другой стороны, это была просто энология. Интересно это открывает ум для полностью новых направлений:
1. Почему Вы освобождали иглу во-первых? Можно ли изменить процесс, таким образом, Вы не освободили бы его?
2. Необходимо ли найти потерянную иглу, или можно ли просто получить другой и забыть ли о первом? (Тогда это было бы хорошо, если игла, расторгнутая через некоторое время)
3. Если Вы регулярно освобождаете свои иглы, и необходимо найти их снова тогда, Вы могли бы хотеть к [1 141]

  • , делают иглы, которые в состоянии оказаться, например, они регулярно спрашивают себя: я потерян? Если ответ да, они отправляют свое вычисленное на GPS положение кому-то или начинают подавать звуковой сигнал или безотносительно:
    needle.find(space) или needle.find(haystack)       (решение 1)

  • устанавливают стог сена с камерой на каждой соломе, впоследствии можно попросить, чтобы улей стога сена возражал, если это видело иглу в последнее время:
    haystack.find (игла) (решение 2)

  • , который RFID присоединения отмечает к Вашим иглам, таким образом, можно легко триангулировать их

, Что все только, чтобы сказать в реализации создание иглы и стога сена и большую часть времени матрицы на некотором уровне.

Так решают согласно Вашему домену:

  • действительно ли это - цель стога сена содержать иглы? Тогда пойдите для решения 2.
  • , естественно, что игла теряется просто где-нибудь? Тогда пойдите для решения 1.
  • , игла теряется в стоге сена случайно? Тогда пойдите для решения 3. (или рассмотрите другую стратегию восстановления)
21
задан Damien Cassou 16 September 2009 в 06:48
поделиться

2 ответа

У вас есть варианты ...

Чтобы распаковать файл .zip, вам просто нужно добавить к переменной 'dired-compress-file-suffixes

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

Теперь клавиша Z в dired распознает расширение .zip и распакует архив .zip. Уже поддерживаются gunzip , bunzip2 , uncompress и dictunzip .

Если вы хотите пометить файлы и добавить их в. zip, вы можете использовать следующее, чтобы привязать z к заархивированию набора отмеченных файлов:

(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 " ")) 
31
ответ дан 29 November 2019 в 06:56
поделиться

Чтобы заархивировать файлы, откройте каталог в dired. Отметьте файлы, которые вы хотите заархивировать, с помощью m . Затем введите

! zip foo.zip * <RET>

. Чтобы извлечь весь архив из dired, вы можете пометить файл и запустить & unzip , как в оболочке.

Режим zip-архива позволит вам просматривать zip-файлы в стиле dired. Он должен поставляться с последними версиями GNU emacs и будет использоваться по умолчанию при посещении файла с расширением .zip. В этом режиме вы можете извлекать отдельные файлы в буфер,

21
ответ дан 29 November 2019 в 06:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: