#emacs #copy #dired #ido-mode #ido
#emacs #Копировать #dired #ido-режим #ido
Вопрос:
Я использую emacs с dired,
(require 'dired-details)
(dired-details-install)
и ido,
(setq ido-enable-flex-matching t)
(setq ido-everywhere t)
(ido-mode 1)
(setq ido-use-filename-at-point 'guess)
(setq ido-create-new-buffer 'always)
(а также recentf, как описано здесь)
Однако, когда я нахожусь в dired и выполняю копирование (Shift-C) после выбора нескольких файлов и перехода в новый каталог, куда они должны быть вставлены… У меня есть два нерабочих варианта: 1) либо я нажимаю на каталог и перехожу на следующий уровень в каталог, который мне не нужен. 2) Я нажимаю на файл, и ido жалуется
Помеченная копия: целью должен быть каталог:
Как я могу заставить dired вставить выбранные файлы в новое место назначения? Любая помощь приветствуется, спасибо.
Ответ №1:
Попробуйте C-j, как только вы окажетесь в целевом каталоге в ido. У меня работает.
Ответ №2:
Основная проблема здесь заключается в том, что, хотя есть a, к read-file-name-function
которому ido
можно подключиться, в read-directory-name-function
нет ido-mode
, dired
не имеет явной поддержки для этой функции read-file-name
, и в ido-mode
вызове, который я мог бы выяснить, нет ничего, что могло бы зацепиться.
Все, что я могу предложить, это просто отключить ido
с помощью C-f
. Вызов read-file-name
dired настолько многоуровневый, что было бы даже не особенно элегантно исправлять:
* read-file-name("Copy <file> to: " "<dir>/" "<dir>/<file>")
apply(read-file-name ("Copy <file> to: " "<dir>/" "<dir>/<file>"))
dired-mark-pop-up(nil copy ("<file>") read-file-name "Copy <file> to: " "<dir>/" "<dir>/<file>")
dired-mark-read-file-name("Copy %s to: " "<dir>/" copy nil ("<file>") "<dir>/<file>")
dired-do-create-files(copy dired-copy-file "Copy" nil 67 nil nil)
dired-do-copy(nil)
Комментарии:
1. Спасибо, Николас, за понимание. Я думаю, мне просто нужно нажать C-f для отключения при выполнении этих файловых операций.