วิธีเปลี่ยนไดเรกทอรีการทำงานปัจจุบัน


11

วิธีการเปลี่ยนไดเรกทอรีการทำงานปัจจุบันของ emacs?

ชุดdefault-directoryไม่ได้ส่งผลกระทบไดเรกทอรีการทำงานกระบวนการ emacs lsof -p pidปัจจุบันซึ่งสามารถตรวจสอบได้ผ่านทาง


1
Emac การเป็น "ระบบปฏิบัติการชนิดหนึ่ง" ไม่มีไดเรกทอรีการทำงานปัจจุบันจริง ๆ ดังนั้นสิ่งที่คุณเห็นว่ากระบวนการของ cwd นั้นส่วนใหญ่เกิดขึ้นโดยไม่ได้ตั้งใจและไม่ได้จัดทำเป็นเอกสารจริงๆ เมื่อมองดูรหัส C ของ Emacs ฉันได้รับความประทับใจว่าในปัจจุบันไม่มีวิธีที่จะทำสิ่งที่คุณต้องการ คุณอาจM-x report-emacs-bugและขอให้มันเป็นคุณสมบัติใหม่
สเตฟาน

1
สมมติว่าคุณอยู่บน Linux คุณสามารถบังคับให้ cwd เปลี่ยนโดยทำงานที่ระดับ OS ดูunix.stackexchange.com/questions/281994/…สำหรับรายละเอียด
TTimo

คำตอบ:


4

ฉันคิดว่าวิธีเดียวที่ Emacs เสนอให้ควบคุมcwdกระบวนการคือ--chdirอาร์กิวเมนต์บรรทัดคำสั่ง เมื่อกระบวนการเริ่มต้นขึ้นในขณะนี้ยังไม่มีวิธีแก้ไข


15

M-x cd

วิธีนี้จะช่วยแก้ปัญหาของคุณได้


1
ตามเอกสารcdจะ "ทำให้ DIR กลายเป็นไดเรกทอรีเริ่มต้นของบัฟเฟอร์ปัจจุบัน" ฉันคิดว่ามันเป็นค่าต่อบัฟเฟอร์และจะไม่ใช้กับบัฟเฟอร์อื่นที่มีอยู่หรือกับบัฟเฟอร์ที่สร้างขึ้นใหม่
mojo

@mojo บางที แต่ถ้าคุณทำเช่นนั้นด้วยบัฟเฟอร์เริ่มต้นเมื่อปิดบัฟเฟอร์อื่น ๆ ของคุณนั่นคือทั้งหมดที่คุณทิ้งไว้ ดังนั้นจึงยังใช้งานได้ดี
Keldon Alleyne

5

C-h f cd:

cdfiles.elเป็นแบบโต้ตอบรวบรวมฟังก์ชั่นเสียงกระเพื่อมใน

(cd DIR)

ทำให้DIRกลายเป็นไดเรกทอรีเริ่มต้นของบัฟเฟอร์ปัจจุบัน

หากสภาพแวดล้อมของคุณมีCDPATHตัวแปรลองแต่ละรายการของไดเรกทอรีนั้น (คั่นด้วยเหตุการณ์ที่เกิดขึ้น path-separator) เมื่อแก้ไขชื่อไดเรกทอรีสัมพัทธ์ ตัวคั่นพา ธ คือโคลอนในระบบเหมือน GNU และ GNU

และโปรดอธิบายว่าทำไมการเปลี่ยนแปลงdefault-directoryไม่ได้นอกจากนี้ยังเปลี่ยน "ไดเรกทอรีปัจจุบัน" (setq default-directory "/my/favorite/dir")สำหรับคุณ:


ฉันหมายถึง cwd ของกระบวนการ emacs ซึ่งเป็นรายการในบล็อกการควบคุมกระบวนการและสามารถตรวจสอบได้อย่างง่ายดายผ่านทาง = lsof -p pid = = default-directory = เป็นสิ่งที่อยู่ภายในของ emacs ทำไมฉันต้องเปลี่ยน cwd เป็นเพราะ tmux ใช้ cwd ของกระบวนการพื้นหน้าเป็นไดเรกทอรีเริ่มต้นของหน้าต่างใหม่ / บานหน้าต่าง
FunkyBaby

ฉันเห็น. ถ้าอย่างนั้นคำถามของคุณก็ยังไม่ชัดเจนสำหรับฉัน การเปลี่ยนไดเรกทอรีการทำงานปัจจุบันของกระบวนการ Emacs หมายถึงอะไร คุณต้องการที่จะเปลี่ยนมันหลังจากกระบวนการที่มีอยู่? มากกว่าหนึ่งครั้ง?
Drew

มันเปลี่ยนอักษร = cwd = ของ emacs "มากกว่าหนึ่งครั้ง"? คุณหมายถึงอะไร. = cwd = ไม่ได้ถูกออกแบบมาให้คงที่ ในคคน 2 chdir ใน python, os.chdir ฉันต้องการทราบวิธีการทำเช่นนั้นใน elisp (สำหรับ emacs)
FunkyBaby

ดูคำตอบของ @ Stefan
ดึง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.