Повторное использование буфера Emacs при переходе в предыдущий каталог

748
z33m

Я следую этому совету вики, чтобы настроить Emacs так, чтобы я мог двигаться вперед и назад в режиме dired без создания новых буферов.

Использование aключа вместе с (put 'dired-find-alternate-file 'disabled nil)настройкой позволяет мне перемещаться в каталоги без новых буферов.

Но крючок для ^ключа, упомянутого в вики, у меня не работает. Переход к предыдущему каталогу с по- ^прежнему открывает новые буферы.

Вот настройки, которые я использую в своем .emacs.d/init.el

; dired settings (require 'dired-x) (setq dired-omit-files "^\\.?#\\|^\\.$\\|^\\.\\.$\\|^\\.") (add-hook 'dired-mode-hook (lambda () (dired-omit-mode 1))) (setq dired-listing-switches "-aBhl --group-directories-first") (put 'dired-find-alternate-file 'disabled nil) (add-hook 'dired-mode-hook (lambda () (define-key dired-mode-map (kbd "^") (lambda () (interactive) (find-alternate-file ".."))))) 
3
Ваш код для сочетания клавиш выглядит хорошо - если он открывает новый буфер, комбинация клавиш, вероятно, не распознается по какой-то причине - если вы выполните `Ch k ^`, вы, вероятно, увидите, что функция по умолчанию `dired -up-directory` все еще вызывается. Есть какие-либо сообщения об ошибках? Я получаю ошибки при попытке загрузить `dired-x` -` Последовательность ключей * O начинается с ключа без префикса * ` lawlist 10 лет назад 0
Я считаю, что это так. Сочетание клавиш «define-key» по какой-то причине не распознается. Если я наберу `Mx find-alternate-file`, а затем` ..`, он вернется без создания нового буфера. Также `Ch k ^` показывает, что `^` связан с `dired-up-directory`. Я не получаю никаких ошибок, хотя. z33m 10 лет назад 0

1 ответ на вопрос

2
Drew

Просто используйте Dired + . Используйте C-M-Rдля переключения, использовать ли буферы Dired повторно. Поместите это в файл инициализации, если вы хотите использовать по умолчанию:

 (diredp-make-find-file-keys-reuse-dirs) 

Это также заботится о ^. В итоге, не нужно ничего кодировать - просто загрузите Dired + .

Я установил dired + поверх менеджера пакетов. Похоже, что версия dired +, которая устанавливается, не имеет этой функции. Могу ли я получать устаревшие версии из архивов пакетов? Я добавил мармелад в список `package-archives ' z33m 10 лет назад 0
@ z33m - Не знаю, в чем проблема. Эта функция была в `dired + .el` с 2010/01/21, как показывает журнал изменений в файле. Посетите файл и посмотрите, не нашли ли вы эту функцию. Означает ли `Ch f` для этого имени функции, что оно не определено после загрузки` dired + .el`? Обратите внимание, что эта функция не является * командой * - вы не можете вызвать ее с помощью `Mx`. Но вы можете оценить пол, который я написал, используя `M-:` (или используя `Cx Ce` на нем, скажем, в` * scratch * `или в вашем файле инициализации). Drew 10 лет назад 0
да, я пытался запустить его с `Mx`. Я добавил эту команду в мой файл init.el и теперь он работает. Спасибо! z33m 10 лет назад 0

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