Emacs: Khám phá những tính năng ẩn hữu ích mà bạn có thể chưa biết

Phần mềm15 tháng 6, 2026·6 phút đọc

Emacs là một trình soạn thảo khổng lồ với vô vàn tính năng, nhưng việc khám phá chúng thường là một thách thức. Bài viết này sẽ giới thiệu hàng loạt các tính năng "tích hợp sẵn" (batteries included) ít người biết đến, từ tra từ điển, so sánh thư mục, quản lý macro cho đến thao tác văn bản thông minh.

Emacs: Khám phá những tính năng ẩn hữu ích mà bạn có thể chưa biết

Emacs nổi tiếng là một trình soạn thảo văn bản "tất cả trong một", nhưng chính sự khổng lồ của nó lại tạo ra một vấn đề lớn: tính năng khó khám phá (discoverability). Nhiều người dùng đã dành hàng năm để làm quen với Emacs mà vẫn bỏ lỡ những công cụ hữu ích được tích hợp sẵn ngay trong gói cài đặt gốc.

Bài viết này là phần tiếp theo của series "Batteries included", nơi chúng tôi sẽ "khai quật" những tính năng ẩn nhưng cực kỳ mạnh mẽ của Emacs, giúp bạn nâng cao năng suất mà không cần cài đặt thêm bất kỳ gói phần mềm bên thứ ba nào.

Tra từ điển ngay tại con trỏ (M-x dictionary-tooltip-mode)

Nếu bạn thường xuyên làm việc với văn bản tiếng Anh, dictionary-tooltip-mode sẽ là một trợ thủ đắc lực. Khi bật chế độ này, bạn chỉ cần di chuột (con trỏ) lên một từ bất kỳ, Emacs sẽ hiển thị nghĩa của từ đó trong một cửa sổ nhỏ (tooltip).

Tính năng tra từ điển trên EmacsTính năng tra từ điển trên Emacs

Tính năng này không chỉ tra cứu từ vựng chuẩn mà còn có thể hiểu được các thuật ngữ hiện đại thông qua Wiktionary. Đừng quên kiểm tra xem tooltip-mode đã được bật chưa, mặc định thường là đã bật.

Sử dụng ký tự đại diện (Wildcards) trong Dired và Find-file

Hai lệnh phổ biến nhất là find-file (C-x C-f) và dired đều hỗ trợ ký tự đại diện (wildcards), nhưng ít người để ý đến điều này.

  • Trong find-file: Bạn có thể mở nhiều file cùng lúc bằng cách sử dụng mẫu như *.txt hoặc *foo*.
  • Trong Dired: Bạn có thể liệt kê các file cụ thể trong thư mục bằng cách cung cấp mẫu tên file khi mở Dired.

Ví dụ, bạn có thể dùng Dired với mẫu */*_region_* để tìm tất cả các file tạm chứa "region" trong các thư mục con, sau đó đánh dấu và xóa chúng một cách nhanh chóng. Đây là cách tuyệt vời để dọn dẹp các tệp tin biên dịch cũ kỹ.

So sánh nội dung và thư mục thông minh

Emacs có rất nhiều lệnh để so sánh sự khác biệt (diff), nhưng compare-windows lại là một công cụ nhẹ nhàng và cực kỳ nhanh.

Lệnh này sẽ so sánh văn bản trong hai cửa sổ bắt đầu từ vị trí con trỏ và dừng lại tại điểm khác biệt đầu tiên. Nó không quan tâm file đó đến từ đâu, chỉ so sánh nội dung thuần túy. Bạn thậm chí có thể dùng nó để so sánh nội dung của hai thư mục (dùng Dired) để xem sự khác biệt về thuộc tính file.

So sánh thư mục với DiredSo sánh thư mục với Dired

Nếu cần so sánh sâu hơn ở cấp độ thư mục, dired-compare-directories cho phép bạn đánh dấu các file khác biệt dựa trên các tiêu chí tùy chỉnh như thời gian sửa đổi (mtime) hoặc kích thước (size).

Theo dõi thay đổi chưa lưu (Highlight Changes)

Khi soạn thảo, việc biết mình đã thay đổi gì so với bản gốc trên đĩa là rất quan trọng. Chế độ highlight-changes-mode sẽ làm nổi bật các thay đổi trong bộ đệm (buffer).

Tuy nhiên, để thực sự hữu ích, bạn nên cấu hình nó chỉ hiển thị các thay đổi chưa được lưu. Một chút cấu hình với các hook before-save-hookafter-save-hook sẽ giúp tự động tắt bật chế độ này, tạo ra trải nghiệm giống như tính năng "Live Preview" của các diff tool hiện đại.

Tối ưu hóa việc tìm kiếm trợ giúp (Apropos Family)

Hầu hết người dùng Emacs đều biết đến C-h k (describe-key), nhưng gia đình lệnh apropos lại bị bỏ quên. apropos cho phép bạn tìm kiếm tất cả các hàm, biến, thư viện liên quan đến một từ khóa.

Bạn có thể gộp các lệnh apropos vào một phím tắt (ví dụ C-h a) để dễ dàng truy cập apropos-command, apropos-variable, hay customize-apropos – công cụ cực mạnh để tùy chỉnh hàng loạt tùy chọn cùng lúc.

Biến lịch sử phím bấm thành Macro (M-x kmacro-edit-lossage)

Macro bàn phím (Keyboard Macros) rất mạnh mẽ, nhưng đòi hỏi bạn phải biết trước mình sẽ thực hiện một chuỗi hành động lặp lại. Nhưng nếu bạn vừa thực hiện xong một chuỗi thao tác phức tạp và nhận ra "mình cần làm cái này thêm 200 lần nữa" thì sao?

Emacs có một lệnh mang tên khó hiểu là kmacro-edit-lossage. Lệnh này cho phép bạn xem lại lịch sử 300 lần nhấn phím gần nhất (lossage) và biến chúng thành một macro có thể chỉnh sửa và chạy lại.

Chỉnh sửa Macro từ lịch sử phím bấmChỉnh sửa Macro từ lịch sử phím bấm

Đây là tính năng cứu cánh khi bạn quên bật ghi macro trước khi thực hiện tác vụ.

Chỉnh sửa văn bản thông minh hơn

Emacs gần đây đã thêm một số lệnh chỉnh sửa văn bản mà các trình soạn thảo khác đã có từ lâu:

  • copy-from-above-command: Sao chép văn bản từ dòng không trống phía trên (tương tự C-y trong Vim).
  • duplicate-dwim: Nhân đôi dòng hoặc vùng văn bản đang chọn xuống phía dưới.

Ngoài ra, subword-modesuperword-mode giúp điều hướng con trỏ thông minh hơn trong các đoạn mã chứa CamelCase hoặc snake_case, giúp việc chỉnh sửa code nhanh hơn rất nhiều.

Thao tác hình ảnh trực tiếp

Bạn có biết rằng bạn có thể phóng to, xoay hoặc cắt hình ảnh ngay trong Emacs không? Chỉ cần đặt con trỏ lên hình ảnh và nhấn i (hoặc C- nếu dùng chuột).

Các phím tắt hữu ích bao gồm i + (phóng to), i - (thu nhỏ) và i r (xoay 90 độ). Tính năng này hoạt động trong các chế độ hiển thị hình ảnh như Org mode hoặc Elfeed mà không làm thay đổi file gốc trên đĩa.

Hiển thị tất cả văn bản ẩn (M-x visible-mode)

Emacs thường ẩn các phần văn bản để gọn gàng (folding) trong các chế độ như Org mode hay Outline mode. Tuy nhiên, các phím tắt để mở/đóng fold thường khác nhau tùy chế độ.

visible-mode là giải pháp "vũ khí hạng nặng". Nó buộc hiển thị toàn bộ văn bản ẩn trong buffer, bất kể chế độ bạn đang dùng. Đây là công cụ tuyệt vời để debug hoặc khi bạn chỉ muốn xem toàn bộ nội dung một cách nhanh chóng.

Cuộn đồng bộ nhiều cửa sổ (M-x scroll-all-mode)

Nếu bạn đang so sánh hai phiên bản của một file ở hai cửa sổ riêng biệt, scroll-all-mode sẽ giúp bạn cuộn cả hai cửa sổ cùng một lúc.

Đây là giải pháp thay thế nhẹ nhàng và trực quan hơn so với việc sử dụng ediff khi bạn chỉ muốn nhìn lướt qua sự khác biệt.

Khóa và khôi phục cửa sổ làm việc

  • M-x emacs-lock-mode: Ngăn chặn việc vô tình đóng buffer hoặc thoát Emacs, giúp bảo vệ dữ liệu quan trọng trong các buffer không liên quan đến file (như shell hoặc scratch).
  • M-x undelete-frame-mode: Nếu bạn lỡ tay đóng một cửa sổ (frame) Emacs chứa nhiều buffer đang làm việc, chế độ này cho phép bạn khôi phục lại tối đa 16 frame đã bị xóa gần nhất.

Kết luận

Emacs là một kho tàng khổng lồ, và đôi khi những viên ngọc quý nhất lại nằm sâu nhất. Hy vọng rằng những tính năng "ít người biết đến" này sẽ giúp bạn khai thác tối đa sức mạnh của trình soạn thảo này, biến công việc lập trình và viết văn bản trở nên trôi chảy hơn bao giờ hết.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗