Tính hữu dụng của `exchange-point-and-mark` là gì?


16

Các exchange-point-and-marklệnh được liên kết với C-x C-x, nhưng tôi không thể nghĩ ra bất kỳ trường hợp sử dụng mà có thể làm nó xứng đáng như vậy một nổi bật ràng buộc.

Làm cách nào tôi có thể sử dụng exchange-point-and-markđể cải thiện kỹ thuật chỉnh sửa của mình?

Câu trả lời:


19

Có hai trường hợp tôi có thể nghĩ đến: kích hoạt lại khu vực và điều chỉnh kích thước của khu vực.

Tôi thường sử dụng ràng buộc này để kích hoạt lại khu vực sau khi thực hiện một số lệnh tắt nó hoặc thực hiện một cái gì đó đặt dấu và di chuyển điểm mà không kích hoạt khu vực.

Ví dụ, làm một Cs và tìm kiếm một cái gì đó. Nhấn RET để thoát khỏi tìm kiếm, sau đó Cx Cx để đánh dấu mọi thứ từ nơi bạn bắt đầu tìm kiếm.

Một ví dụ khác mà tôi làm rất nhiều khi tôi muốn đưa một số elisp mẫu vào câu trả lời StackExchange:

  1. Đánh dấu bit của mã tôi muốn sao chép.
  2. Nhấn Cu Cx TAB để thụt mã theo 4 khoảng trắng. Bằng cách đó, nó sẽ được hiển thị dưới dạng mã ở đây trên trang web. Bước này vô hiệu hóa khu vực.
  3. Nhấn Cx Cx để kích hoạt lại vùng, sau đó Mw để sao chép nó vào bảng tạm để tôi có thể dán nó vào câu trả lời StackExchange của mình.

Trường hợp khác là khi bạn đang đánh dấu một khu vực và muốn mở rộng / thu nhỏ nó. Trong trường hợp đó, thật thuận tiện để có thể nhảy đến "đầu kia" của khu vực, di chuyển nó, sau đó nhảy trở lại. Nếu khu vực này đã hoạt động thì nhấn Cx Cx sẽ để nó hoạt động, cho phép bạn di chuyển một trong hai đầu.


17

Hỏi Emacs: C-h r i exchange-point-and-mark REThoặc, tốt hơn , C-h r i C-x C-x RET. Điều này sẽ đưa bạn đến thông tin hiển thị dưới đây.

Đây là những gì hướng dẫn sử dụng Emacs, nút Thiết lập nút nói trong câu trả lời cho câu hỏi của bạn:

C-x C-xlà hữu ích khi bạn hài lòng với vị trí của điểm nhưng muốn di chuyển đầu kia của khu vực (nơi có dấu) . Sử dụng C-x C-xlần thứ hai, nếu cần thiết, đặt dấu ở vị trí mới và quay lại vị trí ban đầu. Thông thường, nếu nhãn hiệu không hoạt động, lệnh này trước tiên sẽ kích hoạt lại nhãn hiệu bất cứ nơi nào nó được đặt lần cuối, để đảm bảo rằng vùng được tô sáng. Tuy nhiên, nếu bạn gọi nó bằng một đối số tiền tố, nó sẽ để lại dấu không hoạt động và vùng không được tô sáng; bạn có thể sử dụng điều này để nhảy đến điểm theo cách tương tự C-u C-<SPC>.

Và đây là những gì nó nói về nó trong nút Diseac Transient Mark :

Tắt [ transient-mark-mode] tắt công tắc Emacs sang một chế độ hoạt động thay thế:

  • Đặt dấu, với các lệnh như C-<SPC>hoặc C-x C-x, không làm nổi bật vùng. Do đó, bạn không thể biết bằng cách xem vị trí của nhãn hiệu; bạn phải nhớ.

    Giải pháp thông thường cho vấn đề này là đặt dấu và sau đó sử dụng nó sớm, trước khi bạn quên nó ở đâu. Bạn cũng có thể kiểm tra vị trí của nhãn hiệu bằng cách sử dụngC-x C-x , nơi trao đổi vị trí của điểm và dấu - xem Cài đặt Dấu .

Trong khi chế độ Đánh dấu tạm thời tắt, bạn có thể kích hoạt tạm thời bằng C-<SPC> C-<SPC>hoặc C-u C-x C-x.

và:

C-u C-x C-x Trao đổi điểm và đánh dấu, kích hoạt nhãn hiệu và tạm thời bật chế độ Đánh dấu tạm thời, cho đến khi dấu hiệu này bị vô hiệu hóa tiếp theo. (Đây là C-x C-xlệnh exchange-point-and-mark, với một đối số tiền tố.)


8

Tôi sử dụng điều này khi tôi mất một lựa chọn do một số thao tác đã loại bỏ nó và tôi muốn khôi phục lựa chọn. Một kịch bản như vậy sẽ là:

  1. Chọn hình chữ nhật.
  2. Giết nó.
  3. Hoàn tác giết chết hình chữ nhật.
  4. C-x C-x để khôi phục lựa chọn vào hình chữ nhật.

Điều này xảy ra khi tôi muốn tạo một bản sao lưu ad hoc của một khu vực được chọn và thử nghiệm trên bản sao, chẳng hạn như, tôi muốn thực hiện một số tìm kiếm và thay thế, nhưng tôi không thể nghĩ ra cách nào để làm theo cách không phá hủy một số văn bản có nghĩa là vẫn còn, vì vậy sau đó tôi sẽ hoàn nguyên nó từ bản sao.


8

Các câu trả lời khác tập trung vào tính hữu ích C-x C-xkhi transient-mark-modehoạt động. Nhưng C-x C-xcó trước transient-mark-mode, và là hữu ích độc lập với nó.

Vai trò chính của C-x C-xlà hoán đổi điểm và đánh dấu. Điều này hữu ích khi bạn đang chỉnh sửa hai điểm trong một bộ đệm và vì một số lý do không muốn chia cửa sổ hiện tại. Thực hiện một số chỉnh sửa, đặt dấu, di chuyển đến một số điểm khác trong bộ đệm, thực hiện một số chỉnh sửa C-x C-x, thực hiện một số chỉnh sửa tại địa điểm cũ C-x C-x, thực hiện thêm một số chỉnh sửa, quảng cáo. (Nếu bạn không có kế hoạch quay lại điểm thứ hai, C-u C-SPCcó thể trực quan hơn. Tra cứu vòng đánh dấu trong hướng dẫn sử dụng Emacs.)

Khi transient-mark-modebị vô hiệu hóa, C-x C-xcó một mục đích quan trọng khác: nó cho phép bạn tìm ra khu vực đó ở đâu. C-x C-x, thoáng nhìn vào điểm, C-x C-xmột lần nữa.

(Và trong trường hợp bạn đang tự hỏi - vâng, một số người trong chúng ta vẫn thích sử dụng Emacs với transient-mark-modengười khuyết tật.)

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.