Emacs elisp配置文件无法识别default-directory

时间:2013-02-16 19:40:23

标签: emacs elisp

我的~/.emacs下的emacs配置文件只有一个声明:

(setq default-directory "/var/www/")

我想做的是C-x C-f并直接进入我的apache目录。但我尝试使用C-x C-f,我当前的目录是HOME

文件被加载,因为我使用了这个:(shell)并且shell被打开了。谁知道我的错误在哪里?我只想在htdocs中设置启动目录。

3 个答案:

答案 0 :(得分:3)

default-directory没有做你想象的那样。 C-h v 默认目录

default-directory is a variable defined in `buffer.c'.
Its value is "/"
Local in buffer stackoverflow.com/questions/14914353; global value is nil

  Automatically becomes buffer-local when set in any fashion.
  This variable is safe as a file local variable if its value
  satisfies the predicate `stringp'.

Documentation:
Name of default directory of current buffer.  Should end with slash.
To interactively change the default directory, use command `cd'.

它是缓冲区本地(即缓冲区特定)变量,意味着它的值 根据当前活动的缓冲区而有所不同。所以当你认为你已经把它设置为 “/ var / www”,您只是访问该目录中已有的文件。

如果要从“/ var / www”打开文件,则需要自己创建命令 将“/ var / www”绑定到default-directory

答案 1 :(得分:1)

以防万一有人想知道如何做到这一点:

正如@Pacha所说,当emacs启动时,会显示欢迎屏幕,它会将您的工作目录更改为command-line-default-directory

因此,例如,如果您希望默认目录为“〜/”,请将其添加到.emacs中,您应该正常运行。

(setq command-line-default-directory "~/")
(setq default-directory "~/")

答案 2 :(得分:0)

解决了它,这是一个非常奇怪的问题。

每当我尝试从默认缓冲区(*GNU Emacs*)打开文件时,它会将默认目录更改为~/,但是当我尝试从另一个缓冲区打开文件时,它会打开我在变量中指定的那个。