5

В Dired копирование выполняется как "скопировать помеченные файлы в другое место". Есть ли способ сделать это в обратном направлении?

То есть, в сценарии, который я представляю, у меня возникнет вопрос, что копировать (путь), и он будет скопирован / вставлен в текущий каталог. (Например, «давайте соберем все необходимое для выполнения команды в одном месте».)

3 ответа3

2

Как упоминает Аурелиен, единственным преимуществом, которое вы получаете, находясь в определенном буфере Dired, кажется . означает "здесь", так что переход на оболочку cp - это почти все, что вы можете сделать.

Другое преимущество, которое приходит мне в голову, если у вас есть другой видимый буфер с задержкой (Cx 2..), когда вы перемещаете / копируете / ссылаетесь из буфера, в котором вы находитесь (из которого вы выбираете все свои файлы, поэтому), emacs предоставляет вам несколько целей по умолчанию в качестве пунктов назначения, которые доступны со стрелкой <down> при появлении запроса в минибуфере.

Скажем, у вас есть 2 открытых буфера: ~/here/ и ~/elsewhere/someplace/ , затем выберите несколько файлов в ~/here/ , нажмите C в этом буфере, а затем даст вам вариант по умолчанию для копирования содержимого в ~/elsewhere/someplace/ . То же самое для отдельных файлов, вы получите каталог по умолчанию, и каталог по умолчанию + имя файла (например , ~/here/some long annoying filename you'd like to edit.any → ~/ в ~/elsewhere/someplace/some long annoying filename you'd like to edit.any . любой ).

Просто нажмите ↓ еще раз для получения дополнительных значений по умолчанию.

2

Mx copy-file RET предложит указать исходный файл, а затем по умолчанию указать текущий каталог. Вы можете связать это с ключом.

Или, если этого недостаточно, дайте мне знать, и я напишу команду и опубликую ее.

Эх, у меня было немного времени, так что вот команда:

(defun dired-copy-file-here (file)
  (interactive "fCopy file: ")
  (copy-file file default-directory))
(eval-after-load "dired"
  '(define-key dired-mode-map "\M-c" 'dired-copy-file-here))
0

Вы можете сделать что-то вроде

M-!

выполнить команду оболочки, а затем

cp -r what_to_copy(path) ./

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .