54

/home/.bashrc他の場所にある実際の.bashrcファイルを指すシンボリックリンクがある/some/other/path/.bashrcとします。これはgitリポジトリの下にあります。

/home/.bashrcEmacsで開くと、次のプロンプトが表示されます。

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

y実際のファイルを編集したいので、私は通常、と入力します。ただし、後で、buffer-file-nameEmacsを実行する/some/other/path/.bashrcと、ではなくが返されます/home/.bashrc)。

私がこのファイルにアクセスした方法はシンボリックリンクを介していたことをEmacsに覚えてもらいたい。

言い換えれば、シンボリックリンクをEmacsに対して透過的にしたいと思います。その理由の一部は、現在のファイルのパスに依存するEmacsマクロがいくつかあり、これらのマクロは、にあるファイルで/some/other/pathはなくにあるファイルを操作していると見なしているためです/home/

これどうやってするの?

4

4 に答える 4

54

プロンプトが表示されたら

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

タイプn。シンボリック リンクをたどってシンボリック リンクが指すファイルを直接開く代わりに、必要に応じて emacs はシンボリック リンク自体を使用します。

警告: これを行うと、emacs のバージョン管理機能が宛先のリポジトリを検出して対話することができなくなります (存在する場合)。

デフォルトの動作を変更したい場合は、vc-follow-symlinksカスタマイズ変数のドキュメントを確認してください。( C-h v vc-follow-symlinks)

于 2013-03-13T16:44:21.170 に答える
54

完全を期すために、質問がある人のために

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

しかし、必ずしもOPが望むものを望んでいるわけではありませんC-h v vc-follow-symlinks.

vc-follow-symlinksで定義された変数ですvc-hooks.el。その値はaskです

ドキュメント: バージョン管理下にあるファイルへのシンボリック リンクにアクセスした場合の対処方法。リンクを介してそのようなファイルを編集すると、バージョン管理システムがバイパスされます。これは危険であり、おそらくあなたが望むものではありません.

この変数が t の場合、VC はリンクをたどって実際のファイルにアクセスし、エコー領域でそのことを知らせます。「ask」の場合、VC はリンクをたどるかどうかの確認を求めます。nil の場合、リンクが表示され、警告が表示されます。

この変数はカスタマイズできます。

結論は、毎回プロンプトが表示されるのを避けるために、.emacsセットで次のいずれかを行うことができるということです

(setq vc-follow-symlinks t)

常にシンボリックリンクをたどる(そして「実際の」ファイルを直接編集する)、または

(setq vc-follow-symlinks nil)

シンボリックリンク自体にあるかのようにファイルを常に編集します(これはうまくいくようです-シンボリックリンクなどは削除されません-しかし、ファイルでバージョン管理関連のものを使用することはできません)。私は前者を好みます(OPとは異なります)。

于 2015-06-17T18:52:25.300 に答える
8

vcEmacs のパッケージを知らない、または気にしない場合は、

(setq vc-handled-backends nil)

vcこれは、シンボリックリンクの追跡に関するこの迷惑なメッセージだけでなく、完全に無効にします.

find-file-visit-truename次に、シンボリックリンクをたどるファイルを検索するかどうかに応じて、おそらくカスタマイズする必要があります。

于 2017-08-03T01:11:36.147 に答える