Làm cách nào để dịch chuyển một vùng văn bản đã chọn trong Emacs theo một số khoảng trắng nhất định?


26

Tôi đang viết mã python nên việc dịch chuyển / di chuyển các dòng là rất quan trọng để tránh đi qua từng dòng riêng lẻ. Làm thế nào tôi có thể làm điều này mà không cần một tiện ích bổ sung? Có một loại lệnh thao tác gõ phím để làm điều này?


3
Đối với các câu trả lời không dành riêng cho Python, xem emacs.stackexchange.com/q/11emacs.stackexchange.com/q/18 .
Legoscia

Câu trả lời:


40

Sử dụng lệnh indent-rigidly, được ràng buộc C-x TABtheo mặc định.

Bạn có thể chỉ định số lượng khoảng trắng để thụt lề bằng cách sử dụng đối số tiền tố , chẳng hạn như C-5 C-x TAB.

Hoặc bạn có thể gọi lệnh và sau đó sử dụng mũi tên trái / phải để điều chỉnh tương tác mức độ thụt lề.


Làm thế nào để bạn thêm một đối số tiền tố?
Vass

1
Ví dụ, thử C-5 C-x TABthụt lề 5 vùng.
glucas

tuyệt vời, nhưng tại sao dòng đầu tiên không di chuyển là tốt? Tôi phải lấy phần cuối của dòng phía trên vùng chọn để tạo tập hợp các dòng tôi muốn di chuyển.
Vass

1
Bạn không cần phải chọn bất cứ thứ gì từ dòng trước, nhưng bạn muốn chọn từ đầu dòng đầu tiên bạn muốn thụt lề. Ví dụ, C-ađể di chuyển đến đầu dòng, C-SPCđể bắt đầu đánh dấu khu vực, C-n C-nđể di chuyển xuống một vài dòng, C-5 C-x TABđể thụt hai dòng đó.
glucas

1
"Sử dụng mũi tên trái / phải để điều chỉnh tương tác mức thụt lề" Thật sao? Tuyệt quá! Tôi không biết điều này và đôi khi tôi phải đoán xem tôi cần thêm hoặc xóa bao nhiêu khoảng trống. Tôi hy vọng điều này có thể giúp đỡ.
imz - Ivan Zakharyaschev

9

Nếu bạn đang sử dụng python-mode.el C-c >hoặc C-c <để dịch chuyển các khối sang trái hoặc phải


Làm thế nào đến dòng đầu tiên của lựa chọn vẫn không bị lay chuyển nếu tôi không chọn phần cuối của dòng trên nó?
Vass

Tôi không thể tái tạo hành vi này. tất cả các dòng của một lựa chọn được di chuyển. Emacs 24.4
Lompik

Nhận xét của glucas nói rằng điều này sẽ xảy ra nếu bạn không chọn từ đầu dòng
Vass

6

Các string-rectanglelệnh ( C-x r t) có thể được sử dụng để chèn bất kỳ văn bản tùy ý (số lượng có bao gồm) trong một vùng được chọn.

Giả sử bạn có khối văn bản này và bạn muốn chèn 5 khoảng trắng trước tất cả các dòng.

abc
  def
    ghi

Trước tiên, chọn vùng "0 cột" như được hiển thị bên dưới (điểm nằm trên ký tự 'a' và dấu nằm trong cùng một cột trong hàng chứa 'ghi':

▮bc
  def
▯   ghi

Bây giờ sử dụng string-rectangle, chèn văn bản bạn muốn chèn vào vùng đã chọn. Trong ví dụ này, chúng tôi sẽ chèn 5 khoảng trắng trên tất cả các hàng bao gồm và giữa các điểm và dấu.

C-x r t M-5 SPC RET

Điều đó sẽ cung cấp cho các văn bản thụt lề dưới đây.

     abc
       def
         ghi

4

C-x TAB(ràng buộc indent-rigidly). Cung cấp cho nó một đối số tiền tố để cho biết có bao nhiêu khoảng trắng bạn muốn thụt lề, phủ định loại bỏ nhiều khoảng trắng đó.


0

Tôi thấy rằng bằng cách nhấn Alt-4 và sau đó SPC, tôi sẽ nhận được kết quả mong muốn. Không chắc chắn nếu đây là cách tốt nhất, nhưng nó cũng hoạt động.

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.