現在の作業ディレクトリを変更するにはどうすればよいですか?


11

emacsの現在の作業ディレクトリを変更する方法?

set default-directoryはemacsプロセスの現在の作業ディレクトリには影響しませんlsof -p pid。これはを介して確認できます。


1
Emacsは「一種のOS」であるため、実際には単一の現在の作業ディレクトリはありません。したがって、プロセスのcwdとして表示されるものは、ほとんど偶発的なものであり、実際には文書化されていません。EmacsのCコードを見ると、現在、あなたがやりたいことを行う方法はないという印象を受けます。したがってM-x report-emacs-bug、それを新しい機能として要求する場合があります。
ステファン

1
Linuxを使用している場合、OSレベルで作業することでcwdを強制的に変更できます。詳細については、unix.stackexchange.com / questions / 281994 /…を参照してください。
TTimo 2018

回答:


4

Emacsがcwdプロセスの制御を提供する唯一の方法は--chdirコマンドライン引数だと思います。プロセスが開始されると、現在それを変更する方法はありません。


15

M-x cd

これで問題が解決するはずです。


1
ドキュメントによると、cd「DIRを現在のバッファのデフォルトディレクトリにする」。これはバッファごとの値であり、他の既存のバッファや新しく作成されたバッファには適用されないと思います。
mojo

@mojoかもしれませんが、他のすべてのバッファーが閉じているときにデフォルトのバッファーでそれを行う場合は、とにかくそれだけです。したがって、それはまだかなり実用的です
ケルドンアレイン

5

C-h f cd

cdはインタラクティブなコンパイル済みLisp関数ですfiles.el

(cd DIR)

作るDIRカレントバッファのデフォルトディレクトリになります。

環境にCDPATH変数が含まれている場合はpath-separator、相対ディレクトリ名を解決するときに、ディレクトリのリスト(の出現で区切られている)のそれぞれを試してください 。パス区切り文字は、GNUおよびGNUのようなシステムではコロンです。

また、変更default-directoryしても「現在のディレクトリ」も変更されない理由を説明してください:(setq default-directory "/my/favorite/dir")


私はemacsプロセスのcwdを意味します。これはプロセス制御ブロックのエントリであり、= lsof -p pid =で簡単に確認できます。= default-directory =は、emacsにとって内部的なものです。cwdを変更する必要があるのは、tmuxがフォアグラウンドプロセスのcwdを新しいウィンドウ/ペインの開始ディレクトリとして使用するためです。
FunkyBaby 2017年

そうですか。それからあなたの質問は(そして私にとってはまだ)不明確でした。Emacsプロセスの現在の作業ディレクトリを変更するとはどういう意味ですか?プロセスが存在した後で変更したいですか?一回以上?
ドリュー、

文字通りemacsの= cwd =を変更しています。"一回以上"?それはどういう意味ですか = cwd =は固定的なものとして設計されていません。Cでは、男2 chdir。Pythonでは、os.chdir。elisp(emacs)でそれを行う方法を知りたいです。
FunkyBaby 2017年

@Stefanの回答を参照してください。
ドリュー、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.