Tôi muốn chọn hoặc đánh dấu một khối trong emacs mà không cần sử dụng chuột nhưng thực hiện từ bàn phím như chế độ trực quan của vim. Cách dễ nhất để làm điều này từ bàn phím là gì?
Tôi muốn chọn hoặc đánh dấu một khối trong emacs mà không cần sử dụng chuột nhưng thực hiện từ bàn phím như chế độ trực quan của vim. Cách dễ nhất để làm điều này từ bàn phím là gì?
Câu trả lời:
Hãy xem vùng-hình chữ nhật trong emacs.
Tóm lại, bạn bắt đầu lựa chọn như bình thường với Control- Space, sau đó giết vùng bằng Control- x r kvà dán (hoặc kéo ) khối đã giết bằng Control- x r y.
Nếu tôi hiểu câu hỏi một cách chính xác, ban đầu nó không phải là về các vùng hình chữ nhật.
C-Spc
đặt dấu ở vị trí hiện tại.
Cho dù con trỏ của bạn ở đâu sau đó, văn bản giữa dấu cuối cùng và vị trí hiện tại sẽ được "chọn" (bạn có thể đánh dấu điều này bằng cách kích hoạt transient-mark-mode
, nhưng điều này cũng có nghĩa là các dấu phải bị xóa khi bạn không muốn đánh dấu).
Bạn có thể thao tác trên vùng đó bằng các lệnh như:
C-w
. . Vùng giết chóc. Thao tác này sẽ xóa và đưa khu vực vào vòng tiêu diệt.
C-y
. . Yank. Điều này sẽ chèn đoạn mã cuối cùng từ vòng tiêu diệt.
M-y
. . Vòng tiêu diệt chu kỳ. Ngay sau đó C-y
, nó thay thế phần bị giật bởi các đoạn mã khác trong vòng giết.
M-w
. . Lưu vùng vào vòng giết. Thích C-w
, nhưng không xóa.
Đây chỉ là cách sử dụng cơ bản. Dấu hiệu cũng có những công dụng khác. Tôi giới thiệu hướng dẫn ( C-h t
).
C-s
C-r
là thường được sử dụng trong bối cảnh này để đi tìm điểm cuối / điểm bắt đầu của khu vực. (Đặc biệt hữu ích trong macro.)
M-x indent-region
thôi.
indent-region
hoạt động tốt, nhưng c-indent-line-or-region
(một, liên kết với phím tab ) thì không. Chức năng cuối cùng không hoạt động trên các vùng được đánh dấu , mà trên những vùng đã chọn , tức là vùng được đánh dấu giống như khi bạn chọn nó bằng chuột.
C-Spc
hai lần vào nơi bạn đánh dấu. Điều đó sẽ kích hoạt tạm thời chế độ đánh dấu thoáng qua (cho đến khi bạn hủy (với C-g
)). Sau đó di chuyển điểm để xem vùng đã chọn xuất hiện.
Emacs 24.4 hiện có chế độ hình chữ nhật đánh dấu. Cx không gian để gọi nó.
Xem bài: "Làm việc với các phép chọn hình chữ nhật" , đặc biệt là phần nhận xét. Xem thêm phần của tài liệu chế độ CUA có tiêu đề "Hỗ trợ hình chữ nhật CUA". Ngoài ra còn có một video hay trên vimeo .
Mặc dù C-SPC
là một cách phổ biến để bắt đầu đánh dấu một thứ gì đó từ bất kỳ điểm nào của bạn, nhưng thường có những cách nhanh hơn / dễ dàng hơn mà không liên quan đến việc di chuyển rõ ràng đến điểm bắt đầu / kết thúc ...
M-h
- một phương tiện quan trọng để đánh dấu đoạn văn . Một "đoạn văn" thường có nghĩa là một khối mã.
C-M-h
và C-M-@
- để đánh dấu giới tính và làm mờ tương ứng. Điều này hoạt động với một số ngôn ngữ, không chỉ nói ngọng.
giữ phím shift - một cách khéo léo khác để đánh dấu trong quá trình di chuyển. Ví dụ: M-S-f
chọn chuyển tiếp toàn bộ từ. Đây là
shift-select-mode
và nó được bật theo mặc định trong Emacs 24+. Trên một số bàn phím (không phải chiclet), bạn có thể nhấn giữ C-S-
bằng một ngón út.
Bạn có thể nhấn liên tục bất kỳ mục nào trong số này để mở rộng vùng chọn.
(LƯU Ý: sử dụng C-g
thường xuyên để hủy đánh dấu trong khi thử nghiệm.)
Có một số gói tiện ích bổ sung giúp cải thiện việc lựa chọn khu vực và mọi thứ. Đây là tất cả chơi tốt với nhau và phù hợp với các trường hợp sử dụng khác nhau. Sử dụng tất cả!
Mở rộng-Vùng : Mở rộng vùng làm tăng vùng đã chọn theo đơn vị ngữ nghĩa. Chỉ cần tiếp tục nhấn phím cho đến khi nó chọn những gì bạn muốn. C-=
là một ràng buộc được đề xuất cho nó. Nhấn vào nó một vài lần để có được những gì bạn cần.
Easy-Kill : Sử dụngM-w
và ghi nhớ để chọn các loại nội dung khác nhau, như từ, giới tính, danh sách, v.v.
Zop-to-Char : Giống như zap-to-char , nhưng cung cấp lựa chọn tốt và các hành động theo hướng menu khác.
diff-hl : Đánh dấu các vùng đã thay đổi không cam kết. Sử dụngdiff-hl-mark-hunk
để chọn / đánh dấu một phần nhỏ.
... và trong trường hợp bạn đang sử dụng Ubuntu và C-spckhông phù hợp với bạn: bạn cần xóa liên kết khóa "phương thức nhập tiếp theo" IBus, như trong
chạy
ibus-setup
và thay đổi liên kết khóa cho "phương thức nhập tiếp theo" thành một thứ khác (hoặc xóa hoàn toàn bằng cách nhấp vào nút "..." và sau đó nhấp vào nút "Xóa").
Trích dẫn lấy từ câu trả lời cho một câu hỏi SO.
Để mở rộng câu trả lời của Edin Salkovic, nếu bạn sử dụng chế độ CUA, bạn có thể sử dụng để bắt đầu lựa chọn khối trực quan. Có rất nhiều phím tắt để kiểm soát lựa chọn khối được mô tả trong tài liệu của CUA .
Với Emacs 25, chỉ cần nhấn C- Spacevà sau đó di chuyển con trỏ của bạn đến bất cứ nơi nào bạn muốn để đánh dấu / chọn vùng văn bản mà bạn quan tâm. Sau đó, bạn có thể cần các lệnh sau:
mark-defun