2008-09-12 28 views
16

Tôi đã đọc ở một vài nơi mà các chức năng hình chữ nhật trong emacs rất hữu ích. Tôi đã đọc một chút về họ, và tôi không thể hiểu tại sao. Ý tôi là, khi bạn muốn giết một đoạn, bạn đánh dấu hàng/cột đầu tiên và sau đó là đoạn cuối cùng, và đó thực sự là một hình chữ nhật, phải không? Nhưng bạn vẫn có thể sử dụng tính năng giết bình thường ...Chức năng hình chữ nhật trong các emacs

Vì vậy, bạn sẽ làm gì với chúng?

Trả lời

23

Nếu bạn có dữ liệu trong cột trong tệp văn bản có M-x delete-rectangle hoặc M-x kill-rectangle bạn có thể xóa một cột dữ liệu duy nhất. Tương tự, M-x yank-rectangle sẽ dán vào cột văn bản.

Ví dụ, lấy văn bản sau đây:

1. alligator alphorn 
2. baboon  bugle 
3. crocodile cornet 
4. dog   didgeridoo 
5. elephant  euphonium 
6. fish   flugelhorn 
7. gopher  guitar 

Chọn từ một số cá sấu đến g guitar. Phần đầu và cuối của vùng chọn đánh dấu hai góc đối diện của hình chữ nhật. Nhập M-x kill-rectangle và bạn ngay lập tức có:

1. alphorn 
2. bugle 
3. cornet 
4. didgeridoo 
5. euphonium 
6. flugelhorn 
7. guitar 

Tiếp theo đặt dấu ấn ở phần cuối của dòng trên cùng, thêm một vài khoảng trống nếu được yêu cầu và nhập M-x yank-rectangle và ta-da! Bạn đã tái ra lệnh cho cột:

1. alphorn  alligator  
2. bugle  baboon  
3. cornet  crocodile  
4. didgeridoo dog   
5. euphonium elephant  
6. flugelhorn fish   
7. guitar  gopher  
15

Tôi thích sử dụng hình chữ nhật cho 2 mục đích chính, chèn văn bản giống nhau trên mỗi dòng, hoặc giết chết một cột văn bản (tương tự như câu trả lời Dave Webb).

Có 2 phím tắt hữu ích cho các mục này, C-x r k sẽ giết hình chữ nhật và C-x r t để chèn (có các lệnh hình chữ nhật khác có tiền tố C-x r, nhưng đây là những tiền tôi sử dụng).

Vì vậy, giả sử bạn muốn lấy một số mã và định dạng để bạn có thể đăng nó trong bài đăng Chồng tràn ... bạn cần phải thêm tiền tố có 4 dấu cách. Vì vậy, hãy chuyển đến đầu dòng đầu tiên, C-SPC để đánh dấu, sau đó chuyển đến đầu dòng cuối cùng và C-x r t <SPC> <SPC> <SPC> <SPC> <RET>, và ở đó bạn có nó! Sau đó, bạn chỉ có thể sao chép và dán nó vào Stack Overflow. Tôi đã chạy vào các tình huống phức tạp hơn, nơi điều này hữu ích, nơi bạn thực sự có văn bản bạn muốn chèn vào mỗi dòng tại một địa điểm cụ thể.

Vì vậy, tình hình khác như tình hình Dave Webb, nếu bạn muốn giết một hình chữ nhật, sử dụng C-x r k mặc dù, bởi vì nó chỉ là nhanh hơn rất nhiều ;-)

Ngoài ra, theo reference card của tôi mà tôi đã in ra khi tôi đầu tiên bắt đầu, bạn có thể làm như sau:

  • C-x r r: sao chép vào một thanh ghi
  • C-x r y: yank một hình chữ nhật
  • C-x r o : mở hình chữ nhật, dịch chuyển văn bản sang phải (điều đó có nghĩa là ...)
  • C-x r c: blank ra một hình chữ nhật (tôi giả sử có nghĩa là thay thế nó với không gian, nhưng bạn sẽ phải thử nó ra để xem)
  • C-x r t: tiền tố với văn bản (như mô tả ở trên)
  • C-x r k: giết chết (như mô tả ở trên)
+0

Tôi đã bật chế độ hoàn thành một phần vì vậy đối với hình chữ nhật yank tôi có thể sử dụng M-x y-r [tab] [ret] nhưng bạn nói đúng, các phím tắt mặc định sẽ nhanh hơn. –

+1

Wow ... bạn sử dụng Emacs trong 20 năm và vẫn còn nhiều thứ mới để học. –

+1

"C-x r t TRỞ LẠI SPACE SPACE SPACE SPACE RETURN" Sự trở lại đầu tiên có vẻ là một lỗi? Tôi nhận được hiệu ứng mong muốn khi gõ: C-x r t SPACE SPACE SPACE SPACE RETURN – Lii

1

Trong emacs24 + có còn chức năng cho dòng đánh số:

(rectangle-number-lines START END START-AT &optional FORMAT) 

Insert numbers in front of the region-rectangle. 

START-AT, if non-nil, should be a number from which to begin 
counting. FORMAT, if non-nil, should be a format string to pass 
to `format' along with the line count. When called interactively 
with a prefix argument, prompt for START-AT and FORMAT. 

Nó bị ràng buộc với C-x r N theo mặc định.

Các vấn đề liên quan