Làm thế nào để thay đổi thư mục làm việc hiện tại?


11

Làm thế nào để thay đổi thư mục làm việc hiện tại của emacs?

thiết lập default-directorykhông ảnh hưởng đến thư mục làm việc hiện tại của quá trình emacs, có thể được xác minh thông qua lsof -p pid.


1
Emacs, là "một loại HĐH" không thực sự có một thư mục làm việc hiện tại. Vì vậy, những gì bạn thấy là cwd của quá trình phần lớn là tình cờ và không thực sự được ghi lại. Nhìn vào mã C của Emacs, tôi có ấn tượng rằng hiện tại không có cách nào để làm những gì bạn muốn. Do đó M-x report-emacs-bug, bạn có thể yêu cầu nó như một tính năng mới.
Stefan

1
Giả sử bạn đang dùng Linux, bạn có thể buộc cwd thay đổi bằng cách làm việc ở cấp độ hệ điều hành, xem unix.stackexchange.com/questions/281994/ Lỗi để biết chi tiết.
TTimo

Câu trả lời:


4

Tôi nghĩ rằng cách duy nhất Emacs đưa ra để kiểm soát cwdquá trình là --chdirđối số dòng lệnh. Khi quá trình được bắt đầu, hiện tại không có cách nào để sửa đổi nó.


15

M-x cd

Điều này sẽ giải quyết vấn đề của bạn.


1
Theo các tài liệu, cdsẽ "Biến DIR trở thành thư mục mặc định của bộ đệm hiện tại." Tôi sẽ cho rằng đó là giá trị trên mỗi bộ đệm và sẽ không áp dụng cho các bộ đệm hiện có khác hoặc cho các bộ đệm mới được tạo.
mojo

@mojo có lẽ, nhưng nếu bạn làm điều đó với bộ đệm mặc định khi tất cả các bộ đệm khác của bạn bị đóng thì đó là tất cả những gì bạn còn lại. Vì vậy, nó vẫn còn khá thực tế
Keldon Alleyne

5

C-h f cd:

cdlà một chức năng Lisp tương tác được biên dịch trong files.el.

(cd DIR)

Hãy DIRtrở thành thư mục mặc định bộ đệm hiện tại.

Nếu môi trường của bạn bao gồm một CDPATHbiến, hãy thử từng danh sách thư mục đó (cách nhau bởi các lần xuất hiện path-separator) khi giải quyết tên thư mục tương đối. Dấu phân cách đường dẫn là dấu hai chấm trong các hệ thống giống như GNU và GNU.

Và vui lòng giải thích tại sao thay đổi default-directorycũng không thay đổi "thư mục hiện tại" cho bạn : (setq default-directory "/my/favorite/dir").


Ý tôi là cwd của quá trình emacs, là một mục trong khối điều khiển quy trình và có thể dễ dàng kiểm tra thông qua = lsof -p pid =. = Default-thư mục = là một điều nội bộ đối với emacs. Tại sao tôi cần thay đổi cwd là vì tmux sử dụng cwd của một quá trình tiền cảnh làm thư mục bắt đầu của một cửa sổ / khung mới.
FunkyBaby

Tôi hiểu rồi. Sau đó, câu hỏi của bạn là (và vẫn là, với tôi) không rõ ràng. Việc thay đổi thư mục làm việc hiện tại của quy trình Emacs có nghĩa là gì? Bạn muốn thay đổi nó sau khi quá trình tồn tại? Nhiều hơn một lần?
vẽ

nghĩa đen là thay đổi = cwd = của emacs. "Nhiều hơn một lần"? ý bạn là như thế nào. = cwd = không được thiết kế để trở thành một thứ cố định. Trong c, người đàn ông 2 chdir. Trong trăn, os.chdir. Tôi muốn biết làm thế nào để làm điều đó trong elisp (cho emacs).
FunkyBaby

Xem câu trả lời của @ Stefan.
vẽ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.