【问题标题】:emacs "Find File:" default pathemacs“查找文件:”默认路径
【发布时间】:2011-09-21 18:47:03
【问题描述】:

我在 Windows 上使用 emacs。我想知道如何更改 emacs 中的默认“查找文件:”路径,即当我们按“Cx Cf”时,我希望默认文件路径指向我的 Documents 目录而不是“c:\emacs-**\ bin/"。

【问题讨论】:

    标签: emacs settings emacs23


    【解决方案1】:

    在访问文件的缓冲区中,访问新文件时看到的默认路径 (C-x C-f) 是包含当前缓冲区文件的目录。

    为了用更合理的方式覆盖值“c:\emacs-**\bin/”,请在 .emacs 文件中设置 default-directory 变量:

    (setq default-directory "/path/to/documents/directory/")
    

    请注意,路径值应以斜杠(或 Windows 上的反斜杠)结尾。

    但是,您可能还需要考虑更改 HOME 环境变量的值,因为默认情况下,这是变量 default-directory 在启动时指向的值(除非设置为如上所示的其他值)。

    【讨论】:

    • 您通常仍应在 NTEmacs 的文件路径中使用正斜杠。它知道该怎么做。
    • @phils:我认为斜杠而不是反斜杠的原因是反斜杠也是字符串中的转义字符,因此您总是必须这样编写路径名:“c:\\foo\ \bar\\" 变得相当丑陋。
    • 这个答案对我(和其他人)不起作用。请参阅@loudandclear 答案下的讨论。
    • @styrofoamfly 答案确实有效,具体取决于您所追求的。如果您希望C-x C-f总是首先查看特定的默认目录,我同意将该快捷方式绑定到您自己的自定义函数可能是有意义的。但是,如果您在启动 C-x C-f 后第一次执行 Emacs 标准行为 except 时对它感到满意(它使用您不喜欢的目录),那么我的回答将是帮助你。
    【解决方案2】:

    变量 'default-directory' 是“当前”目录(用于当前缓冲区)。命令“cd”更改目录,访问任何文件或目录(例如使用 Dired)更改了该缓冲区的“默认目录”。

    您可以在给定目录中启动 Emacs,方法是在命令行中传递该目录。您也可以使用 Windows 快捷方式来执行此操作。您可以在 Dired 中使用快捷方式访问该目录。

    快捷方式信息示例:

    目标: C:\Emacs\bin\runemacs.exe "C:\my\favorite\folder"

    开始于: C:\my\favorite\folder

    【讨论】:

      【解决方案3】:

      应该这样做:

      (global-set-key (kbd "C-x C-f")  (lambda () (interactive)
                                           (cd "somePathHere")
                                           (call-interactively 'find-file)))
      

      (将 somePathHere 替换为您的文档目录的路径)

      【讨论】:

      • @sabotero 有人做了-1,因为这是一个糟糕、不优雅的解决方案。 Emacs 具有解决 OP 问题的机制,即默认目录。将键重新映射到新功能并不是解决这个简单任务的方法。
      • 这是一个明智的答案。 OP 大概希望 C-x C-f 始终从某个目录开始。设置default-directory不会 这样做,因为它是缓冲区本地的,并且会在您读取或写入不同目录时立即更改。您必须将钩子添加到find-filedired 和任何其他设置它的东西。并且更改每个缓冲区中的设置几乎不是更改键绑定行为的“优雅”方式!如果您希望键绑定做一些不同的事情,将其重新绑定到自定义包装器非常简单、万无一失并且不会干扰其他任何事情。
      • 虽然,如果你将一个函数绑定到一个键,你至少应该给它一个名字。如果你愿意,你可以使用defun inline(不过最好在顶层定义它,这样帮助系统可以找到定义)。
      • 接受的答案在 Windows 中对我不起作用。这个答案有效。
      【解决方案4】:

      您必须将环境变量 HOME 重新定义为新的默认目录。

      【讨论】:

      • 没有。 HOME 用于很多事情,而不仅仅是您的 Emacs 默认目录。弄乱它可能会使许多事情变得不可预测。 -1
      • 有效评论。但是由于 Emacs 现在似乎使用了自己的目录,这意味着 HOME 变量还没有定义。在“我的文档”上定义它不会有什么坏处。如果他在 Linux 上,我不会这么说
      • 好吧,我承认我不知道 Windows 上的情况。
      猜你喜欢
      • 2018-08-15
      • 1970-01-01
      • 1970-01-01
      • 2014-02-04
      • 2014-01-11
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 2021-11-09
      相关资源
      最近更新 更多