Geçerli çalışma dizini nasıl değiştirilir?


11

emacs geçerli çalışma dizini nasıl değiştirilir?

set default-directory, emacs işleminin geçerli çalışma dizinini etkilemez; bu, üzerinden doğrulanabilir lsof -p pid.


1
Emacs, "bir tür işletim sistemi" olmak için tek bir güncel çalışma dizinine sahip değildir. Yani sürecin cwd'si olarak gördüğünüz şey büyük ölçüde kazaradır ve gerçekten belgelenmemiştir. Emacs'ın C koduna baktığımda, şu anda istediğinizi yapmanın bir yolu olmadığı izlenimini edindim. Dolayısıyla M-x report-emacs-bugyeni bir özellik olarak talep edebilirsiniz.
Stefan

1
Linux'ta olduğunuzu varsayarak, işletim sistemi düzeyinde çalışarak cwd'yi değiştirmeye zorlayabilirsiniz , ayrıntılar için bkz. Unix.stackexchange.com/questions/281994/… .
TTimo

Yanıtlar:


4

Emacs'ın cwdsüreci kontrol etmenin tek yolunun --chdirkomut satırı argümanı olduğunu düşünüyorum. İşlem başladıktan sonra şu anda değiştirmenin bir yolu yoktur.


15

M-x cd

Bu probleminizi çözmeli.


1
Dokümanlara göre cd, "DIR'yi geçerli arabellek varsayılan dizini haline getir" Bu arabellek başına bir değer olduğunu ve diğer mevcut arabelleklere veya yeni oluşturulanlara uygulanmayacağını varsayarım.
mojo

@mojo belki, ama bunu diğer arabellekleriniz kapalıyken varsayılan arabellek ile yaparsanız, yine de bıraktığınız şey budur. Bu yüzden hala oldukça pratik
Keldon Alleyne

5

C-h f cd:

cdetkileşimli derlenmiş Lisp fonksiyonudur files.el.

(cd DIR)

Make DIRakım tamponunun varsayılan dizin haline gelir.

Ortamınız bir CDPATHdeğişken içeriyorsa , path-separatorgöreceli bir dizin adını çözümlerken bu dizin listelerinin her birini (oluşumlarıyla ayrılmış olarak ) deneyin . Yol ayırıcı GNU ve GNU benzeri sistemlerde kolondur.

Değişen Ve neden açıklayınız default-directoryde sizin için "geçerli dizin" değişmez: (setq default-directory "/my/favorite/dir").


Yani, işlem kontrol bloğunda bir giriş olan emacs işleminin cwd'sini kastediyorum ve = lsof -p pid = ile kolayca kontrol edilebilir. = Default-directory = emacs için dahili bir şeydir. Neden cwd değiştirmek gerekir tmux yeni bir pencere / bölmenin başlangıç ​​dizini olarak ön plan işleminin cwd kullanıyor olmasıdır.
FunkyBaby

Anlıyorum. O zaman sorunuz net değildi (ve hala bana göre). Emacs işleminin geçerli çalışma dizinini değiştirmek ne anlama geliyor? İşlem bittikten sonra değiştirmek ister misiniz? Birden fazla?
Drew

kelimenin tam anlamıyla emacs = cwd = değerini değiştiriyor. "Birden fazla"? Bununla ne demek istiyorsun. = cwd = sabit bir şey olarak tasarlanmamıştır. C, adam 2 chdir. Python'da, os.chdir. Bunu elisp'te (emacs için) nasıl yapacağımı bilmek istiyorum.
FunkyBaby

@ Stefan'ın cevabına bakınız.
Drew
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.