假设我有一个符号链接/home/.bashrc指向其他地方的实际.bashrc文件:/some/other/path/.bashrc这是在git存储库下.
如果我/home/.bashrc在Emacs中打开,它会提示我:
Symbolic link to Git-controlled source file; follow link? (y or n)
Run Code Online (Sandbox Code Playgroud)
我经常输入y,因为我想编辑实际的文件.但是,稍后,如果我做buffer-file-nameEmacs返回/some/other/path/.bashrc,而不是/home/.bashrc).
我希望Emacs能够记住我访问此文件的方式是通过符号链接.
换句话说,我希望我的符号链接对Emacs透明.部分原因是因为我有几个依赖于当前文件路径的Emacs宏,而这些宏认为我正在使用位于/some/other/path而不是位于的文件/home/.
我怎样才能做到这一点?
Dan*_*ton 48
当它提示时
Symbolic link to Git-controlled source file; follow link? (y or n)
Run Code Online (Sandbox Code Playgroud)
类型n.而不是遵循符号链接并直接打开符号链接指向的文件,emacs将根据您的需要使用符号链接本身.
警告:执行此操作可防止emacs的版本控制功能检测到目标上的存储库并与之交互(如果有).
如果您想更改默认行为,请查看vc-follow-symlinks自定义变量的文档.(C-h v vc-follow-symlinks)
Shr*_*saR 39
只是为了完整,对于有疑问的人
Symbolic link to Git-controlled source file; follow link? (y or n)
但是不一定想要OP想要的东西,这是来自C-h v vc-follow-symlinks我的Emacs版本的文档- 查看你自己的Emacs了解详细信息:
vc-follow-symlinks是一个定义的变量vc-hooks.el.它的价值是问文档:如果在版本控制下访问文件的符号链接,该怎么办.通过链接编辑这样的文件会绕过版本控制系统,这很危险,可能不是你想要的.
如果此变量为t,VC将跟随链接并访问实际文件,并在回显区域中告知您.如果是'ask',VC会要求确认它是否应该跟随链接.如果为nil,则访问该链接并显示警告.
您可以自定义此变量.
结果是,为了避免每次都被提示,你可以在你的.emacs设置中
(setq vc-follow-symlinks t)
Run Code Online (Sandbox Code Playgroud)
始终遵循符号链接(并直接编辑"实际"文件),或
(setq vc-follow-symlinks nil)
Run Code Online (Sandbox Code Playgroud)
总是编辑文件,好像它在符号链接本身(这似乎工作正常 - 它不会删除符号链接或任何东西 - 但它不会让你在文件上使用版本控制相关的东西).我更喜欢前者(与OP不同).
如果你不知道或不关心 Emacs 的vc包,就去做
(setq vc-handled-backends nil)
Run Code Online (Sandbox Code Playgroud)
这完全禁用vc以及有关跟踪符号链接的烦人消息。
然后,您可能希望find-file-visit-truename根据是否要查找文件以遵循符号链接进行自定义。
如果你有一个像我一样的用例,我想只使用热键访问某些文件而不询问,你可以使用file-truename解析文件中所有符号链接的功能,因此可以防止烦人的问题而不更改其他所有的默认值.
(global-set-key (kbd "<f7>") (lambda () (interactive)
(find-file (file-truename user-init-file))))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9990 次 |
| 最近记录: |