我已经在Emacs上提出了同样的问题。如果不允许,我很抱歉,我会删除这个问题。
如果我:
~
)~/Projects/ruby-play
C-x C-f
目录中查找文件
C-x C-f
文件查找器中的默认目录为~/Projects/ruby-play
。
我希望看到的默认目录仍为~
。
我是否应该使用package / hook / Elisp函数来实现这一目标?
非常感谢!
答案 0 :(得分:2)
一种方法是将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)