Trong Emacs tôi có thể chạy shell bằng các lệnh sau -
M-x term
M-x shell
M-x eshell
Sự khác biệt giữa ba là gì?
Trong Emacs tôi có thể chạy shell bằng các lệnh sau -
M-x term
M-x shell
M-x eshell
Sự khác biệt giữa ba là gì?
Câu trả lời:
shell
là lựa chọn lâu đời nhất trong số 3 sự lựa chọn này. Nó sử dụng Emacs comint-mode
để chạy một subshell (ví dụ bash
). Trong chế độ này, bạn đang sử dụng Emacs để chỉnh sửa một dòng lệnh. Quá trình con không thấy bất kỳ đầu vào nào cho đến khi bạn nhấn Enter. Emacs đang hành động như một thiết bị đầu cuối câm. Nó không hỗ trợ mã màu, nhưng không phải là những thứ như di chuyển con trỏ xung quanh, vì vậy bạn không thể chạy các ứng dụng dựa trên lời nguyền.
term
là một trình giả lập thiết bị đầu cuối được viết bằng Emacs Lisp. Trong chế độ này, các phím bạn nhấn được gửi trực tiếp đến quy trình con; bạn đang sử dụng bất kỳ khả năng chỉnh sửa dòng nào mà trình bày trình bày, không phải của Emacs. Nó cũng cho phép bạn chạy các chương trình sử dụng các khả năng của thiết bị đầu cuối tiên tiến như di chuyển con trỏ (ví dụ: bạn có thể chạy nano
hoặc less
bên trong Emacs).
eshell
là một shell được thực hiện trực tiếp trong Emacs Lisp. Bạn không chạy bash
hoặc bất kỳ shell nào khác dưới dạng quy trình con. Kết quả là, cú pháp không hoàn toàn giống như bash
hoặc sh
. Nó cho phép những thứ như chuyển hướng đầu ra của một quá trình trực tiếp đến bộ đệm Emacs (thử echo hello >#<buffer results>
).
Theo trang Xahlee :
shell
là giao diện emacs tiêu chuẩn cho giao diện dòng lệnh của Hệ điều hành.
term
(thuật ngữ ansi khá giống với thuật ngữ ngày nay. Chúng là các gói khác nhau, nhưng hiện tại cả hai đều được định nghĩa trong term.el) là một trình giả lập đầu cuối. Nó hoạt động như một ứng dụng thiết bị đầu cuối chuyên dụng, chẳng hạn như {xterm, gnome-terminal, puTTY}. Nó tương thích với nhiều ứng dụng shell hơn giao diện shell của emacs, nhưng các phím emacs tiêu chuẩn như con trỏ di chuyển không hoạt động ở đây (vì nó đang mô phỏng một thiết bị đầu cuối.)
eshell
là một vỏ được viết hoàn toàn bằng emacs lisp. Lưu ý: nó không phải là trình giả lập bash. Eshell là một shell của chính nó, nhưng tương tự như bash hoặc các shell khác.
Bạn nên sử dụng loại nào?
Nó phụ thuộc vào sở thích của bạn.
shell
tốt cho việc sử dụng chung các lệnh shell unix cổ điển / tiêu chuẩn, chẳng hạn như {grep, du, ls, sort, cat, head, tail, uname, Tiết}.
term & ansi-term
là tốt nếu bạn muốn chạy các công cụ như ssh hoặc giao diện tương tác dòng lệnh khác (như {python, ruby, lisp} shell) hoặc ứng dụng GUI dựa trên văn bản như {vim, synaptic, đấm}.
eshell
đặc biệt tốt trên Microsoft Windows, nơi bash không được cài đặt, hoặc, nếu bạn là một lập trình viên không thể thiếu, bởi vì eshell có quyền truy cập trực tiếp vào lac lisp.
which grep
trong eshll nói "eshell / grep là một" chức năng Lisp được biên dịch trong `em- unix.el ', vì grep trong hệ thống của bạn có thể được thực thi trong eshell, như tôi đã nói eshell rất hữu ích trong MS mà rất nhiều công cụ nhỏ như grep chưa được cài đặt.
eshell
cũng sẽ có chúng nếu bạn cài đặt các chương trình đó.