Làm thế nào để hành động trên các hình chữ nhật vượt quá cuối dòng?


16

Đây là những gì tài liệu của Vim nói về nó:

Chỉnh sửa ảo có nghĩa là con trỏ có thể được định vị ở nơi không có ký tự thực tế. Điều này có thể là một nửa vào một tab hoặc vượt quá cuối dòng. Hữu ích cho việc chọn một hình chữ nhật trong chế độ Visual và chỉnh sửa bảng.

Tôi muốn thấy điều này được thực hiện như một chế độ nhỏ hoặc cài đặt tích hợp.


Bạn có muốn điều này để chọn một hình chữ nhật? Nếu đó là trường hợp mặc định trong phiên bản phát triển hiện tại.
Malabarba

Không, tôi đang suy nghĩ giống như kéo / thay thế hình chữ nhật. Tôi sử dụng chế độ đánh dấu hình chữ nhật và trong khi đó là một tính năng hay thì đó không phải là thứ tôi đang tìm kiếm.
mẫu

Thật vậy, để kéo / thay thế hình chữ nhật, nó sẽ là người bạn đồng hành tự nhiên với chức năng hiện có trong chế độ hình chữ nhật. Không chắc chắn UI nên là gì, tho.
Stefan

Cảm ơn đã trả lời, Stefan. Tính năng này sẽ hữu ích nhất khi xử lý các hình chữ nhật, vì vậy có lẽ trong chế độ đánh dấu hình chữ nhật, một lệnh có thể chuyển đổi một loại chế độ chỉnh sửa ảo. Ngay bây giờ trong chế độ đánh dấu hình chữ nhật, điểm giống như ở chế độ chỉnh sửa ảo: nó có thể di chuyển qua cuối dòng C-f. Nhưng khi bạn kéo một hình chữ nhật sau khi làm điều này, hình chữ nhật xuất hiện ở điểm thay vì điểm. Nếu nó xuất hiện tại điểm, điều đó sẽ giải quyết vấn đề này.
mẫu

Câu trả lời:


10

Các extend-rectangle-to-endchức năng trong rectangle-utilsgói là những gì bạn muốn. Đó là trên melpa.

Nó chèn các khoảng trắng để làm cho lựa chọn hình chữ nhật hiện tại mở rộng để bao phủ dòng dài nhất trong vùng.

Để có được hành vi này, tôi đã có điều này trong init.el. C-x r ekhông bị ràng buộc với bất cứ điều gì khác trong vanilla emacs

(require 'rectangle-utils)
(global-set-key (kbd "C-x r e") 'extend-rectangle-to-end)

1
Để làm rõ, với gói này, bạn chọn vùng, sau đó làm M-x extend-rectangle-to-endvà sau đó C-x r M-whoặc C-x r k.
Kaushal Modi

18

Một câu trả lời khác: sử dụng M-x picture-mode. Bạn có thể giết hoặc sao chép hình chữ nhật thông qua giữa các ký tự tab, v.v., gửi chúng đến các thanh ghi, v.v.


3
Một lợi thế của việc sử dụng phương pháp này là bạn có thể kiểm soát chính xác độ rộng mà bạn muốn lựa chọn hình chữ nhật của mình. Nếu tôi có dòng 1 với 30 ký tự và dòng 2 có 5 ký tự, tôi có thể chọn hình chữ nhật rộng 15 ký tự và cao 2 dòng; không thể làm điều đó với extend-rectangle-to-endlựa chọn hình chữ nhật với đó sẽ luôn là 30x2.
Kaushal Modi

1
picture-modelà cũ và ít được biết đến. Trong số các tính năng ít được biết đến khác, nó có: ex Thoát ( C-c C-c) xóa khoảng trắng ở cuối.
vẽ

1
Thật tuyệt vời, Drew! Câu hỏi: có lý do nào để không khuyên rectangle-minor-modebạn nên "bao bọc" picture-modekhông? (lời khuyên vì tôi không thấy bất kỳ móc trong nguồn rectangle-minor-mode).
rasmus

1
Đây là lời khuyên của tôi, btw. Nó không tước khoảng trắng vì đó là loại chưa được khám phá ở đây:(defun rectangle-mark-mode-wrapped-in-picture-mode (orig-fun &rest args) (if rectangle-mark-mode (picture-mode) (and (eq major-mode 'picture-mode) (picture-mode-exit t)))) (advice-add 'rectangle-mark-mode :around #'rectangle-mark-mode-wrapped-in-picture-mode)
rasmus
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.