Hiệu quả sử dụng vòng đánh dấu


29

Tôi đã sử dụng nhãn hiệu để chọn các vùng của bộ đệm. Ví dụ: tôi biết trình tự C-<space> C-s foocó thể được sử dụng để chọn tất cả văn bản giữa điểm hiện tại và điểm sau khi tìm kiếm foo.

Gần đây tôi đã phát hiện ra sự tồn tại của vòng đánh dấu, vì vậy tôi có thể C-<space> C-<space>để lại dấu, di chuyển điểm trong bộ đệm và sau đó C-u C-<space>nhảy lại.

Có bất kỳ đề xuất, hướng dẫn hoặc mẹo để điều hướng hiệu quả bằng cách sử dụng vòng đánh dấu?


2
Cảm ơn đã đặt câu hỏi. Một ý nghĩ xảy ra với tôi là tạo ra một ràng buộc nhanh hơn cho "thêm một dấu", ví dụ (global-set-key (kbd "s-m") '(lambda () (interactive) (push-mark))).
Joe Corneli

Câu trả lời:


22

Helm có một giao diện để duyệt các vòng đánh dấu cục bộ và toàn cầu : helm-all-mark-rings.

Xem hướng dẫn nhỏ để biết mô tả ngắn gọn và ảnh chụp màn hình.

Và nếu bạn thích Ivy / Swiper / Couns , hãy xem counsel-mark-ring.


Tuyệt vời. Một điều có thể cải thiện điều này là một hành động để xóa dấu khỏi vòng đánh dấu ...
Joe Corneli

12

Khi bạn đặt set-mark-command-repeat-popthành tthông qua

(setq set-mark-command-repeat-pop t)

bạn có thể tiếp tục nhấn C-SPCsau lần gọi đầu tiên C-u C-SPCđể nhảy đến các vị trí trước đó được lưu trong vòng đánh dấu.


10

Tôi thấy dễ dàng hơn khi sử dụng các thanh ghi để đánh dấu các vị trí: C-x r <space>và sau đó là một chữ cái để đánh dấu C-x r jvà một chữ cái để nhảy trở lại. Tôi có thể duy trì một số điểm, rất hữu ích khi xen kẽ giữa nhiều bộ đệm


2
Tôi luôn thấy mình dừng lại để quyết định bức thư hay nhất để gán đăng ký của mình cho ...
nispio

@nispio một thời gian trước tôi đã triển khai tiện ích mở rộng git@github.com: atykhonov / iregister.el.git Một trong những ý tưởng là: cho phép bỏ qua quyết định đăng ký sử dụng. Có thể tiện ích mở rộng sẽ không hữu ích cho bạn nhưng bạn có thể mượn ý tưởng trong đó tập lệnh tùy chỉnh của bạn chỉ có thể sử dụng bất kỳ đăng ký miễn phí nào và sau đó nó sẽ cho phép duyệt các thanh ghi đã sử dụng và khôi phục.
Andriy Tykhonov

9

C-x C-xcho exchange-mark-and-pointcó công dụng tương tự C-u C-space. Nó cho phép bạn nảy giữa một điểm và dấu cuối cùng. Có một chút kỳ lạ khi nảy lên transient-mark-modekhi nó kích hoạt nhãn hiệu và chọn vùng.


C-x C-xvới chế độ đánh dấu tạm thời là tuyệt vời để chọn điều cuối cùng bạn đã chọn (hữu ích với chế độ iedit) hoặc kéo dài.
Rune Kaagaard

8

Ngoài những lời khuyên khác mà bạn có ở đây, tôi nghĩ tôi nên đề cập đến việc C-sthiết lập dấu ấn cho bạn, vì vậy không cần phải làm điều đó một cách rõ ràng. Ngoài ra, nhiều lệnh "di chuyển một quãng đường dài tiềm năng" ( beginning-of-bufferend-of-bufferví dụ) cũng đặt dấu nơi bạn bắt đầu. Cùng với các cách khác để làm việc với nhãn hiệu (pop, trao đổi điểm và đánh dấu, v.v.), đó là một cách khá mạnh mẽ để làm việc với bộ đệm, một khi bạn hiểu cách thức hoạt động của nó. Cũng lưu ý rằng nếu bạn kéo văn bản vào bộ đệm, điểm và dấu bao quanh văn bản được kéo.


5

(Câu hỏi của bạn khá mở, vì vậy câu hỏi có thể bị đóng vì chủ yếu dựa trên quan điểm.)

Những gì tôi sử dụng: Đa lệnh của Icicles (bị ràng buộc ) để đi vòng quanh các dấu trong bất kỳ bộ đệm ( ) và ( ) nào để ngắt giữa các dấu toàn cầu ( ). icicle-goto-markerC-- C-SPCmark-ringicicle-goto-global-markerC-- C-x C-SPCglobal-mark-ring

Các dòng văn bản nơi đánh dấu được đặt được sử dụng làm ứng cử viên hoàn thành. Bạn có thể nhập một số văn bản (ví dụ: chuỗi con, biểu thức chính) để thu hẹp các ứng cử viên vào các dòng phù hợp. Bạn có thể xoay vòng giữa các dòng phù hợp, truy cập bất kỳ dòng nào bạn thích. Nếu bạn cũng sử dụng thư viện crosshairs.elthì vị trí của điểm đánh dấu bạn truy cập được tô sáng tạm thời bằng dấu thập, vì vậy bạn có thể nhanh chóng xem vị trí của nó.

Đây là một phần của chuỗi doc cho icicle-goto-marker:

Go to a marker in this buffer, choosing it by the line that includes it.
If `crosshairs.el' is loaded, then the target position is highlighted.

By default, candidates are sorted in marker order, that is, with
respect to their buffer positions.  Use `C-M-,' or `C-,' to change the
sort order.

During completion you can use these keys:

`C-RET'   - Goto marker named by current completion candidate
`C-down'  - Goto marker named by next completion candidate
`C-up'    - Goto marker named by previous completion candidate
`C-next'  - Goto marker named by next apropos-completion candidate
`C-prior' - Goto marker named by previous apropos-completion candidate
`C-end'   - Goto marker named by next prefix-completion candidate
`C-home'  - Goto marker named by previous prefix-completion candidate
`<S-delete>' - Delete marker named by current completion candidate

Use `mouse-2', `RET', or `S-RET' to choose a candidate as the final
destination, or `C-g' to quit.
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.