Одним из способов было бы установить initial-default-directory
в nil
, но тогда вы не будете иметь каталог по умолчанию на всех, даже не ваш домашний каталог:
(setq insert-default-directory nil)
Если вы хотите, чтобы ваш домашний каталог, чтобы показать как по умолчанию, это невозможно сделать так легко. При интерактивном вызове find-file
это приводит к вызову read-file-name
, который имеет довольно сложное поведение по умолчанию.
Использование setq-default
на default-directory
не помогает, поскольку его значение задается при посещении файла буфера, который вы сейчас видите.
Единственный вариант я вижу, использует свою собственную версию find-file
так:
(defun my-find-file-read-args (prompt mustmatch)
(list (read-file-name prompt "~/" nil mustmatch)
t))
(defun my-find-file (filename &optional wildcards)
"Edit file FILENAME.
Like `find-file` but always uses ~ as the default directory"
(interactive
(my-find-file-read-args "Find file: "
(confirm-nonexistent-file-or-buffer)))
(let ((value (find-file-noselect filename nil nil wildcards)))
(if (listp value)
(mapcar 'switch-to-buffer (nreverse value))
(switch-to-buffer value))))
(global-set-key (kbd "C-x C-f") 'my-find-file)
Вы знаете, что, когда вы входите в путь к файлу, вы можете просто ввести '/ ~ /' в любой точке на игнорировать все, что предшествует этой точке, и начать поиск с '~ /'? (И аналогично с '//', чтобы добраться до корня файловой системы.) – phils
Я, спасибо. Тем не менее, я хотел бы сохранить каталог, в котором я запускал Emacs, а не только домашний каталог. –