Tôi đang trong quá trình làm đẹp một số mã nguồn bằng vim. {1}
Tôi đã tạo một vài macro vim thực hiện các bước riêng lẻ: xóa khoảng trống theo dõi, xóa các dòng trống sau {
, loại bỏ các dòng trống trước đó {
, loại công cụ đó.
Bây giờ, tôi muốn tạo một macro thực thi tất cả các macro riêng lẻ theo trình tự. Tuy nhiên, một khi macro đệ quy đầu tiên chấm dứt (vì nó không còn có thể tìm thấy bất kỳ kết quả khớp nào -> lỗi khớp), macro "trình bao bọc" của tôi cũng chấm dứt.
Có cách nào để làm cho vim macro tiếp tục sau khi một subacro tạo ra lỗi không?
{1} Tôi biết về các bộ chuyển đổi tự động. Tôi thậm chí có thể sử dụng chúng cho vấn đề hiện tại của tôi. Tôi chỉ đề cập đến việc định dạng lại nguồn cho ví dụ. Không đăng bất kỳ câu trả lời về làm đẹp nguồn này hoặc đó. Câu hỏi không phải là về định dạng lại mã theo từng se , mà là về macro vim.
Thí dụ:
- Macro 1 - khoảng trắng cắt xén -
qw/\s\+$d$@wq
- Macro 2 - xóa các dòng trống trước} -
qe/\n\n *}dd@eq
- Macro Wrapper - retabbing, Macro 1, Macro 2 -
qr:retab@w@eq
Khi tôi thực thi trình bao bọc - @r
- nó sẽ thử lại, sau đó thực thi Macro 1 cho đến khi không còn khoảng trắng theo dõi nào nữa, sau đó chấm dứt ( không thực hiện Macro 2).
Làm rõ:
Những gì tôi đang tìm kiếm là làm thế nào để gọi một subacro để khi subacro đó kết thúc, macro gọi tiếp tục?