Điều này trả lời cho câu hỏi chung của bạn, nhưng không đặc biệt cho trường hợp sử dụng mà bạn đề cập (di chuyển các đoạn mã xung quanh).
Emacs bây giờ có cái mà nó gọi là một vùng không liền kề , đó là loại lựa chọn mà bạn đang hỏi về. Vanilla Emacs không cung cấp bất kỳ cách đặc biệt nào để tạo một vùng không liền kề, ngoại trừ nếu đó là một hình chữ nhật . Nhưng thư viện Zones thì có.
Khu vực thư viện cho phép bạn xác định nhiều vùng trong bộ đệm của mình. Một danh sách các khu vực là một khu vực không liên tục . Bạn cũng có thể nghĩ về nó như nhiều vùng, tùy thuộc vào cách bạn muốn sử dụng nó. Bạn có thể có nhiều danh sách vùng được xác định bất cứ lúc nào, mỗi danh sách được gán cho một biến vùng khác nhau và bạn có thể chuyển đổi giữa chúng.
Nếu bạn cũng sử dụng thư viện Bookmark + thì bạn có thể lưu danh sách các vùng liên tục và khôi phục chúng trong các phiên Emacs sau này. Bookmark + cũng cho phép bạn gán các thẻ tùy ý cho một dấu trang. Điều này có nghĩa là bạn có thể gắn thẻ danh sách các vùng.
Các vùng trong danh sách vùng đã cho thường nằm trong cùng một vùng đệm, nhưng chúng không cần. Trong đó, một danh sách khu vực là tổng quát hơn một khu vực không liên tục. Nó cũng chung chung hơn ở mỗi khu vực có thể chứa thông tin bổ sung, ngoài các giới hạn khu vực và nó có thể có một định danh.
Có một số cách để tạo ra một khu vực. Một trong những cách dễ nhất là sử dụng C-x n a
: nó xác định một vùng từ vùng hoạt động và thêm nó vào vùng hiện tại. ( C-x n n
( narrow-to-region
) cũng làm điều này, ngoài việc thu hẹp.)
Đây là một số điều bạn có thể làm với một tập hợp (danh sách) các vùng:
- Sắp xếp chúng.
- Liên kết (kết hợp) các khu vực liền kề hoặc chồng chéo (bao gồm sắp xếp chúng).
- Giao nhau với họ.
- Thu hẹp bộ đệm vào một vùng trong danh sách. Chu kỳ giữa các hẹp. Xem nhiều thu hẹp .
- Chọn một vùng trong danh sách là vùng hoạt động. Chu kỳ giữa các vùng.
- Tìm kiếm chúng (chúng được tự động thống nhất trước). Đối với điều này, bạn cần thư viện Isearch + .
- Truy vấn thay thế chúng.
- Làm nổi bật và làm nổi bật chúng. (Đối với điều này, bạn cần thư viện Nổi bật hoặc thư viện
facemenu+.el
.
Xem thêm Thu hẹp gián tiếp , cho phép bạn tạo bộ đệm gián tiếp là bản sao của một bộ đệm nhất định và được thu hẹp thành các phần khác nhau của nó.