Làm thế nào để xử lý dòng tiếp theo trong macro bàn phím?


12

Tôi đã tạo một macro bàn phím để nối các dòng trong bộ đệm bằng cách sử dụng:

F3 C-n M-x join-line RET F4.

Nó hoạt động tốt, ngoại trừ khi các dòng quá dài và bắt đầu quấn - điều này làm cho macro này phụ thuộc vào chiều rộng của khung. next-linedường như không đi đến dòng thực tế tiếp theo, nhưng đến phần quấn gói của dòng hiện tại.

Làm thế nào để giải quyết vấn đề đó?

Câu trả lời:


13

Bạn có hai ba lựa chọn:

  1. Sử dụng next-logical-linethay vì next-linekhi xác định macro:

    Di chuyển con trỏ theo chiều dọc xuống ARGdòng. Điều này giống hệt với next-line, ngoại trừ việc nó luôn di chuyển bằng các dòng logic thay vì các dòng trực quan, bỏ qua giá trị của biến line-move-visual.

  2. Đặt line-move-visualthành nil:

    (setq line-move-visual nil)

    Điều này làm cho next-linehành vi như next-logical-linemặc định.

  3. Bật cắt ngắn dòng bằng cách làm

    M-x toggle-truncate-lines RET

    trước khi ghi macro.


Hoàn hảo! Cảm ơn. Tôi tự hỏi trong tình huống nào bạn thích next-linehành vi hiện tại next-logical-linecủa mình hơn, mặc dù ...
Sébastien Le Callonnec

@ SébastienLeCallonnec Tôi đoán có một trường hợp sử dụng cho tất cả mọi thứ ... và thật tốt khi biết rằng Emacs xử lý tất cả;)
itjeyd

1
@ SébastienLeCallonnec Erm ... khi viết bằng ngôn ngữ tự nhiên? Trong tình huống không định hướng, nhấn <down>hoặc C-nthường được dự kiến ​​sẽ khiến bạn đi xuống một dòng, không nhảy qua ranh giới đường. Hãy nghĩ rằng không phải mọi người dùng đều đến từ notepad (nơi không có đường bao quanh) ... Imo, ngoại lệ là các tình huống có next-logical-linehành vi được mong đợi và trong những tình huống này, tôi thường có xu hướng vô hiệu hóa visual-line-modehoàn toàn. Và +1 @itsjeyd, thật tuyệt khi có thể có được hành vi tùy thuộc vào tình huống.
T. Verron

2
@ T.Verron Hội chợ đủ. Tôi đoán tôi luôn luôn có thể rebind C-nđể next-logical-line. ;)
Sébastien Le Callonnec

0

C-aC-ecả hai đều có một đối số tiền tố cho phép bạn bỏ qua các dòng. Ví dụ, C-2 C-asẽ nhảy đến đầu dòng tiếp theo và C-2 C-esẽ nhảy đến cuối dòng tiếp theo. Một đối số tiền tố của 3 di chuyển hai dòng, và như vậy. Bạn cũng có thể sử dụng các đối số phủ định để di chuyển đến các dòng trước đó.

Rõ ràng những thứ này không được sử dụng nhiều khi bạn cần con trỏ ở cùng một cột, nhưng tôi thấy hầu hết các macro của tôi liên quan đến việc bắt đầu hoặc kết thúc một dòng, vì vậy chúng rất thuận tiện.

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.