Sao chép và di chuyển văn bản
Emacs không có lệnh đặc biệt cho sao chép và di chuyển văn bản.
- di chuyển văn bản: kill và yank trở lại ở nơi khác
- sao chép văn bản: kill và yank ngay trở lại tại nơi vừa kill, rồi di chuyển đến nơi khác và yank lần nữa
Xem thêm các lệnh sao chép và di chuyển các vùng văn bản ngẫu nhiên (không phải là đối tượng văn bản – textual object) tại Đánh dấu và vùng.
Tìm và thay
Emacs có nhiều lệnh tìm và thay rất mạnh.
Tìm
C-s (isearch-forward): tìm kiếm luỹ tiến (incremental search): Emacs tìm kiếm tích luỹ số từ trong chuỗi bạn gõ vào. Để dùng việc tìm kiếm, gõ RET hoặc một lệnh nào khác. Lặp lại C-s để nhảy tới kết quả phù hợp kế tiếp; để nhảy ngược lại, gõ C-r; gõ DEL để xoá và thay đổi chuỗi đang tìm kiếm.
C-r(isearch-backward): tìm kiếm theo chiều lui. (Dùng C-r để tìm kết quả phù hợp kế tiếp và C-s để đổi chiều tìm kiếm.)
Tìm kiếm không luỹ tiến: C-s RET text RET, trong đó text là văn bản cần tìm.
Tìm kiếm theo từ (word search): C-s RET C-w word word word RET tìm kiếm một chuỗi gồm một hoặc nhiều từ, bất kể chúng được phân cách như thế nào (bằng chữ số hay kết hợp kí tự xuống dòng và khoảng trắng).
Emacs cũng có thể tìm kiếm (không) luỹ tiến với biểu thức chính quy (regular expressions).
Thay
query-replace (M-%): nhắc bạn nhập văn bản thay thế, và văn bản để thay thế cho nó, và rồi tìm và thay trong bộ đệm hiện tại. query-replace có tính tương tác: ở mỗi lần phù hợp, bạn được nhắc để quyết định sẽ làm gì với các tuỳ chọn sau:
- SPC
- Thực hiện thay thế.
- DEL
- Không thực hiện thay thế.
- RET
- Chấm dứt
query-replacemà không thực hiện thay thế. - ESC
- Giống như RET.
- .
- Thực hiện thay thế rồi chấm dứt
query-replace. - !
- Thực hiện thay thế lần này và tất cả những lần còn lại trong bộ đệm mà không hỏi (tức là không điều kiện).
Ngoài ra còn một số lệnh con cho lệnh query-replace.
Có một số lệnh thay thế khác nên xem qua, gồm replace-string (thay thế không điều kiện đơn giản), replace-regexp và query-replace-regexp (dùng biểu thức thường quy), và tags-query-replace (thay thế tất cả identifiers trong một bộ tập tin mã nguồn).
query-replacevà các lệnh thay thế khác theo mặc định khéo về chữ hoa-thường. Thí dụ nếu bạn đang thay thếfoobằngbar, nếu Emacs tìm thấyFoo, nó sẽ thay bằngBar; nếu tìm thấyFOO, nó sẽ thay bằngBAR, v.v.
Đánh dấu và vùng
Xác định vùng
Emacs có thể xử lí một vùng văn bản ngẫu nhiên cũng như các đối tượng văn bản (textual object) rõ ràng.
Vùng là văn bản nằm giữa điểm (point) và dấu (mark). Điểm thực ra là thuật ngữ Emacs gọi con trỏ. Còn dấu được thiết lập bằng lệnh C-@ (set-mark-command). Lệnh này thiết lập dấu ngay tại điểm đang đứng, và sau đó có thể di chuyển điểm để được vùng.
Mỗi bộ đệm có một điểm và dấu riêng biệt, nên có một vùng riêng biệt. (Cũng có thể không có dấu trong bộ đệm, và vì vậy không có vùng).
Vùng hoàn toàn như nhau bất kể điểm đến trước hay dấu đến trước.
Thông thường vùng không nhìn thấy (nhưng xem C-x C-x). Tuy nhiên nếu bạn chạy Emacs dưới hệ thống cửa sổ (windowing system), bạn có thể thi hành lệnh M-x transient-mark-mode để làm cho (bật/tắt) vùng thấy được.
Nhiều lệnh di chuyển điểm đi một khoảng cách (như M-< và C-s) và dấu được thiết lập tại vị trí mà chúng bắt đầu di chuyển từ đó. Bạn sẽ thấy “Mark set” ở vùng phản hồi khi điều này xảy ra.
Khi dùng Emacs dưới hệ thống cửa sổ như X, chuột có thể được dùng để quét vùng.
Có một số lệnh đặc biệt dùng để xác định vùng.
- M-@
mark-word. Thiết lập vùng chứa từ kế tiếp, hoặc từ điểm đến cuối từ hiện tại, nếu đang ở giữa từ.- M-h
mark-paragraph. Thiết lập vùng chứa đoạn hiện tại.- C-M-@
mark-sexp. Thiết lập vùng chứa cùng sexp mà lệnh C-M-f sẽ di chuyển tới.- C-M-h
mark-defun. Thiết lập vùng chứa defun hiện tại.- C-x C-p
mark-page. Thiết lập vùng chứa trang hiện tại.- C-x h
mark-whole-buffer. Thiết lập vùng chứa toàn bộ bộ đệm.
Thao tác trong vùng
- C-x C-x
exchange-point-and-mark. Tráo đổi điểm và vùng. Lặp lại nhanh lệnh này sẽ giúp dễ thấy phạm vi của vùng.- C-w
kill-region. Kill vùng. Khi đó nó sẽ vào vòng kill.- M-w
kill-ring-save. Lưu vùng hiện tại vào vòng kill mà không lấy bỏ khỏi bộ đệm. Điều này tương đương với gõ C-w C-y.- C-x C-i
indent-rigidly. Canh lề cứng vùng bởi số kí tự (cột) được cung cấp làm đối số số (mặc định là 1 cột).- C-x C-l
downcase-region. Chuyển toàn bộ văn bản trong vùng thành chữ thường. Theo mặc định lệnh này bị bất hoạt.- C-x C-u
upcase-region. Chuyển toàn bộ văn bản trong vùng thành chữ hoa. Theo mặc định lệnh này bị bất hoạt.- M-x fill-region
fill-region. Điền, nghĩa là canh thẳng lề với bờ phải không đều, tất cả các đoạn trong vùng.
Ngoài ra còn nhiều lệnh khác nữa.
Canh lề
Trong các chế độ ngôn ngữ lập trình, Emacs dùng phím TAB để tự động canh lề một dòng, tuỳ theo quy luật cho ngôn ngữ lập trình đó. Thí dụ ở C Mode (chế độ cho ngôn ngữ C) Emacs hiểu if, while, do, for, functions, switch, v.v và canh lề thích hợp. Bạn có thể thay đổi các canh lề theo ý thích cá nhân.
Chế độ
Cách chủ yếu để Emacs tuỳ biến lệnh cho các loại văn bản khác nhau là thông qua các chế độ(mode) chính (major) và phụ (minor). Mỗi bộ đệm có một chế độ chình và có thể có thêm vài hoặc không có chế độ phụ. Đôi khi Emacs tự động chọn chế độ chính, điển thình là dựa trên phần mở rộng của tên tập tin (thí dụ tập tin tận cùng bằng.csẽ tự động vào C Mode; tập tin tận cùng bằng.tclsẽ tự động vào Tcl Mode). Nhưng bạn có thể thiết lập chế độ theo ý mình cho bộ đệm hiện tại bằng cách dùng M-x majormodename-mode, thí dụ để vào chế độ dành cho Lisp, bạn gõ M-x lisp-mode.
Một số chế độ chính
- Fundamental Mode
- Chế độ căn bản mà quy chiếu theo đó để định nghĩa tất cả các chế độ chuyên biệt. Hoàn hảo cho soạn thảo bất cứ loại văn bản nào, chỉ không cung cấp các tính năng đặc biệt.
- Text Mode
- Để soạn thảo văn bản. Có các lệnh đặc biệt để kiểm tra chính tả, canh giữa cho dòng, v.v.
- Outline Mode
- Giống như Text Mode nhưng được thiết kế dùng cho các phác thảo (outline). Bổ sung folding của các mức phác thảo, v.v.
- Lisp Mode
- Để biên tập mã nguồn Common Lisp. Có liên kết tương tác đến Common Lisp interpreter trong một bộ đệm khác.
- Tcl Mode
- Để biên tập mã nguồn Tcl. Có liên kết tương tác đến Tcl interpreter trong một bộ đệm khác.
- C Mode
- Để biên tập mã nguồn C. Có canh lề đặc biệt, v.v.
Có nhiều chế độ chính khác, như HTML mode, SGML mode, TeX mode,… và một số chế độ rất đặc biệt (thí dụ các chế độ cho soạn thảo email. đọc tin Usernet, duyệt thư mục, duyệt World Wide Web, v.v).
Thông tin thêm
GNU Emacs FAQ (mirror 1: dạng Info Nodes, mirror 2)
GNU Emacs Manual (mirror 1: dạng Info Nodes)