Làm thế nào để mở một tệp trong một quá trình emacs hiện có từ dòng lệnh?


13

Tôi có một số tập lệnh sẽ khởi chạy tất cả các ứng dụng và tệp liên quan đến một dự án cụ thể. Nhưng, nó sẽ khởi chạy nhiều phiên bản emacs, thay vì chỉ đơn giản là khiến các emacs hiện tại mở các tệp được yêu cầu. Tôi muốn thay vì các emacs hiện tại chỉ đơn giản là mở các tệp văn bản dự án trong một bộ đệm mới.

Bất kỳ ý tưởng làm thế nào tôi có thể làm điều đó?


Hãy xem câu trả lời của tôi stackoverflow.com/a/38655619/2450748 Mặc dù 5 năm sau :)
nexayq

Câu trả lời:


20

M-x server-startbên trong phiên Emacs, sau đó sử dụng emacsclient -n file1 file2 ...để thêm tệp vào Emacs hiện có. Có các tùy chọn bổ sung mà bạn có thể muốn sử dụng, ví dụ: -cđể mở các tệp trong một cửa sổ (khung) mới.


cảm ơn vẽ nguệch ngoạc. Đó là những gì tôi cần biết. Tôi chưa kiểm tra 'câu trả lời đúng', vì tôi nghe nói rằng bạn nên luôn giữ nó mở một chút để cho người khác cơ hội đóng góp. Nhưng tôi đã đặt câu trả lời của bạn vào một số kịch bản.
bev

Thông thường, bạn muốn đặt (server-start)tệp .emacs của mình, thay vì khởi động máy chủ theo cách thủ công. Tôi sử dụng (and window-system (server-start))để tránh khởi động máy chủ nếu tôi đang chạy emacs trong một thiết bị đầu cuối.
cjm

Trong Emacs hiện đại, nó chỉ hữu ích trong một thiết bị đầu cuối; xem -ttùy chọn.
geekizard

@cjm - thực sự tôi khởi động máy chủ trong tệp .emacs của mình. Tôi chỉ không sử dụng nó :-)
bev

5

Đặt (server-start)trong .emacstập tin của bạn .

Thêm cái này vào ~/.bashrc

alias myedit='emacsclient --alternate-editor="" --no-wait $*' #quotes intentionaly left blank

sau đó sử dụng myeditnhư trình soạn thảo của bạn. Bạn sẽ phải sử dụng -ctùy chọn để hiển thị một cửa sổ.

Vì vậy, bạn có thể làm điều này:

myedit -c a-file
run-script #that uses myedit

hoặc là

run-script #that uses myedit
myedit -c

Richard, cảm ơn vì đầu vào. Tôi vẫn đang bối rối một vài điều với kịch bản của bạn. Đầu tiên, vì emacsclient không có tùy chọn -c, tôi cho rằng đó là một điều bash, nhưng không biết. Thứ hai, tại sao không đặt emacs làm trình soạn thảo thay thế? Cảm ơn
bev

# $ emacsclient --help .... Các lựa chọn sau được chấp nhận: ... -c, --create-frame Tạo khung mới thay vì cố gắng sử dụng khung Emacs hiện tại ... -a EDITOR, --alternate -editor = EDITOR Editor để dự phòng nếu máy chủ không chạy Nếu EDITOR là chuỗi trống, hãy khởi động Emacs ở chế độ daemon và thử kết nối lại
ctrl-alt-delor

Bạn không cần (và trên thực tế, có thể không muốn) sử dụng các tham số vị trí trong định nghĩa của bí danh. Xem xét làm thế nào alias foo='echo bar $*'mở rộng trong set quux; foo baz. Nếu bạn muốn sử dụng các tham số vị trí, hãy thử dưới dạng hàm shell:myedit() { emacsclient … "$@"; }
Chris Johnsen
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.