Thiết lập Emacs trên Windows để bắt đầu một phiên bản duy nhất và mở các tệp trong phiên bản hiện có


18

Tôi đặc biệt quan tâm đến trải nghiệm Windows đầy đủ bao gồm:

  • Tự động khởi động máy chủ nếu chưa bắt đầu
  • Cách gọi emacs để nó sử dụng máy chủ (ví dụ: từ dòng lệnh hoặc công cụ của bên thứ ba)
  • Hỗ trợ menu ngữ cảnh (ví dụ nhấp chuột phải vào tệp và cho phép nó được gửi đến emacs để xem và chỉnh sửa)

Là hỗ trợ như vậy có sẵn ra khỏi hộp bất cứ nơi nào?

Câu trả lời:


21

Tự động khởi động máy chủ nếu chưa bắt đầu

Điều này sẽ giống nhau cho bất kỳ bản dựng Emacs. Thêm đoạn mã này vào .emacshoặc .emacs.d/init.el.

(require 'server)
(unless (server-running-p)
  (server-start)) 

Và sau đó chỉ cần bắt đầu emacs bằng cách chạy chương trình runemacs.exethực thi đi kèm với bản dựng.

Cách gọi emacs để nó sử dụng máy chủ (ví dụ: từ dòng lệnh hoặc công cụ của bên thứ ba)

Bản dựng Windows của Emacs đi kèm với một emacsclientw.exetệp thực thi trong bin/thư mục. Sử dụng đường dẫn đầy đủ để thực thi đó là trình soạn thảo bạn chọn trên bất kỳ công cụ bên thứ ba nào bạn cần định cấu hình.

Hỗ trợ menu ngữ cảnh (ví dụ nhấp chuột phải vào tệp và cho phép nó được gửi đến emacs để xem và chỉnh sửa)

  1. Nhấp chuột phải vào một tập tin, chọn Open With -> Select Default Program.
  2. Trong cửa sổ bật lên, điều hướng đến emacsclientw.exetệp thực thi của bạn được đề cập ở trên và chọn nó.
  3. Nếu bạn không muốn Emacs là mặc định, hãy thực hiện lại bước 1 và 2, chọn một chương trình khác làm mặc định.

emacsclientw.exe bây giờ sẽ luôn là một tùy chọn trong menu ngữ cảnh.


Cảm ơn - điểm tuyệt vời về máy chủ, tôi đã không nghĩ.
cristobalito

Liên quan đến emacsclient.exe, không nên là emacsclientw.exe? Ngoài ra, tôi nghĩ rằng bạn phải chạy cái này với cờ -a để chỉ định một trình soạn thảo thay thế nếu máy chủ không chạy.
cristobalito

Để máy chủ hoạt động đúng với cấu hình của tôi, tôi cũng phải thêm một biến môi trường EMACS_SERVER_FILEtrỏ vào .emacs.d\serverthư mục của tôi .
Ryan

@Ryan Tôi đã có thể làm việc này mà không cần biến môi trường - chỉ cần đảm bảo rằng máy chủ đang chạy.
cristobalito

Hmm, đối với tôi đánh giá (server-running-p)lợi nhuận :othertrên Windows (ngay cả sau khi thử cài đặt EMACS_SERVER_FILEenv var.
Kaushal Modi

5

Tự động khởi động máy chủ nếu chưa bắt đầu

Tôi khuyên bạn nên thiết lập một biến môi trường cho ALTERNATE_EDITORtới runemacs.exe. Bằng cách này, bạn luôn có thể gọi emacsclient ngay cả khi không có máy chủ. Chỉ cần thêm (máy chủ bắt đầu) vào tệp init của bạn. Khi một máy chủ không tồn tại emacsclient gọi ALTERNATE_EDITORđó là emacs trong trường hợp của chúng tôi. Vì emace khởi động một máy chủ trong tệp init, mọi cuộc gọi mới tới emacsclient sẽ ngay lập tức.

Cách gọi emacs để nó sử dụng máy chủ (ví dụ: từ dòng lệnh hoặc công cụ của bên thứ ba)

Sử dụng emacsclientw.exe -c -n "your_file"để mở your_file. Đối -csố tạo ra một khung đồ họa mới và -ncho phép bạn đóng khung mà không mất trạng thái máy chủ. Bạn thậm chí có thể gọi nó mà không cần tên tệp để mở *Scratch*bộ đệm. Hoạt động từ một phím tắt máy tính để bàn cũng. Sử dụng emacsclient.exe(lưu ý w bị thiếu) sẽ bật lên một dấu nhắc lệnh trong vài giây mỗi khi bạn gọi nó.

Thêm vào menu ngữ cảnh

Emacswiki có một trang rất hay về việc thêm Emacs vào menu ngữ cảnh ở đây . Nó liên quan đến việc chỉnh sửa nút đăng ký HKEY_CLASSES_ROOT\*để thêm một hành động để mở bằng emacs.


5

Những người khác đã trả lời phần máy chủ. Đây là những gì tôi làm, để có được các tiện ích tương tự UNIX / GNU / Linux như grepdiff:

  1. Cài đặt Cygwin (hoạt động một lần).
  2. Tải cygwin-mount.el.
  3. Tải setup-cygwin.el.

Tuy nhiên, hãy lưu ý rằng có các phiên bản khác nhau của Cygwin. Tôi sử dụng một phiên bản cũ hơn (dunno cái nào - khó nói, AFAICT). Cho dù bạn sẽ có vấn đề với các phiên bản gần đây.

Xem thêm:


Lưu ý: Không sử dụng EMACS của Cygwin. Cài đặt bản dựng GNU từ ftp.gnu.org/gnu/emacs/windows
M Smith

Tôi không khuyên bạn nên cài đặt Cygwin, vì có thể có các tác dụng phụ không mong muốn (như phá vỡ các cổng cửa sổ gnu khác như emacs, gcc, ...), vì chỉ cần có một số công cụ gnu. Thay vào đó cài đặt các cổng GnuWin32 . Bạn có thể cài đặt toàn bộ gói hoặc các công cụ được lựa chọn của bạn.
Seki

@Seki - Vâng, Eli Zaretskii nói điều tương tự như bạn. Tất cả những gì tôi có thể nói là tôi không có vấn đề gì (và tôi có nghi ngờ nghiêm trọng về việc bạn tuyên bố nó phá vỡ Emacs ). Nhưng (a) Tôi đang sử dụng một bản phát hành Cygwin cũ và (b) Tôi không sử dụng hầu hết các tiện ích UNIX / GNU Linux do Cygwin cung cấp.
vẽ

@drew: có lẽ quá mức khi nói về việc "phá vỡ" emacs, "gây ra hành vi kỳ lạ" sẽ tốt hơn. Ví dụ, Cygwin Make sẽ phanh công cụ MinGW nếu bạn không kiểm tra cẩn thận đường dẫn của mình để biết các công cụ Cygwin không được tính đến hoặc mặc định nếu không có tồn tại khác. Nó không bị giới hạn trong Make, nhiều công cụ khác không thể trộn lẫn và đôi khi nó rất tinh vi để chỉ ra vấn đề. Vì vậy, trong ngắn hạn, hoặc bạn có một cổng Emacs riêng và tốt hơn là có các công cụ GNU gốc hoặc bạn có thể sử dụng toàn bộ bản phân phối Cygwin bao gồm cả emacs của nó.
Seki

@Seki: Vì vậy, dường như điểm chính của bạn là Cygwin và MingGW không chơi tốt với nhau. Điều đó không gây ngạc nhiên cho tôi. (FWIW, tôi không có gì chống lại việc sử dụng MingGW thay vì Cygwin. Đối với tôi, việc cài đặt Cygwin thật đơn giản và tôi không sử dụng đủ để gặp phải sự cố.)
Drew
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.