Emacs和符号链接

假设我在/home/.bashrc有一个符号链接,指向其他地方的实际.bashrc文件:位于git存储库下的/some/other/path/.bashrc

如果我在Emacs中打开/home/.bashrc ,它会提示我:

Symbolic link to Git-controlled source file; follow link? (y or n)

我通常输入y ,因为我想编辑实际的文件。 但是,稍后,如果我执行buffer-file-name Emacs将返回/some/other/path/.bashrc ,而不是/home/.bashrc )。

我希望Emacs 记住我通过符号链接访问这个文件的方式。

换句话说,我希望我的符号链接对Emacs是透明的。 其中一部分原因是因为我有几个Emacs宏,这些宏依赖于当前文件的路径,而这些宏认为我正在处理位于/some/other/path的文件,而不是在/home/

我怎样才能做到这一点?


当它提示

Symbolic link to Git-controlled source file; follow link? (y or n)

键入n 。 如果不遵循符号链接并直接打开符号链接指向的文件,emacs将根据需要使用符号链接本身。

警告:这样做会阻止emacs的版本控制功能检测目标中的存储库并与之交互(如果有的话)。

如果您想更改默认行为,请查看vc-follow-symlinks自定义变量的文档。 ( Ch v vc-follow-symlinks


只是为了完整性,对于有疑问的人

Symbolic link to Git-controlled source file; follow link? (y or n)

但不一定需要OP想要的内容,这是来自Ch v vc-follow-symlinks的文档(从我的Emacs版本开始 - 查看您自己的Emacs的详细信息):

vc-follow-symlinks是一个在vc-hooks.el定义的变量。 它的价值是问

文档:如果在版本控制下访问文件的符号链接,该怎么做。 通过链接编辑这样的文件绕过版本控制系统,这是危险的,可能不是你想要的。

如果这个变量是t,VC跟随链接并访问真实文件,在回声区域中告诉你它。 如果是“询问”,VC会询问是否应该按照链接进行确认。 如果为零,则访问链接并显示警告。

你可以自定义这个变量。

结果是为了避免每次都提示,你可以在你的.emacs设置

(setq vc-follow-symlinks t)

始终遵循符号链接(并直接编辑“实际”文件),或者

(setq vc-follow-symlinks nil)

总是编辑文件,就好像它在符号链接本身一样(这似乎工作正常 - 它不会删除符号链接或任何东西 - 但它不会让您在文件上使用版本控制相关的东西)。 我更喜欢前者(不像OP)。


如果您有像我一样的用例,我只想用热键访问某些文件而不询问,则可以使用file-truename函数来解析file-truename所有符号链接,因此可以在不更改缺省值的情况下防止恼人的问题一切。

(global-set-key (kbd "<f7>") (lambda () (interactive)
  (find-file (file-truename user-init-file))))
链接地址: http://www.djcxy.com/p/38557.html

上一篇: Emacs and symbolic links

下一篇: How do I make emacs save its backup files alongside symbolic links?