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
下一篇: How do I make emacs save its backup files alongside symbolic links?