Câu trả lời:
:%s/\n\(\(A\.$\)\@!.*\)/\1/
Thay thế một mẫu phù hợp:
một nhóm chứa
A.
trực tiếp theo cuối dòng, sau đóvới:
và làm điều này trên toàn cầu.
:help \@!
trong Vim để biết thêm thông tin về phần đó. Nếu không, nó thẳng tiến, hy vọng, với lời giải thích của tôi. Một vấn đề với cách tiếp cận của bạn là nếu " A.
" xảy ra trong văn bản, mặc dù không phải là một dòng đánh dấu bị cô lập, nó sẽ được phân tách như thể ban đầu nó là một điểm đánh dấu. Trong thực tế, nó có thể không phải là một vấn đề (tôi không biết tệp "thực" của bạn trông như thế nào), nhưng nói chung nó có thể gây ra hành vi không mong muốn nếu một người không biết về điều này.
:%s///
cú pháp: đó là cú pháp "tìm kiếm và thay thế" trong Vim. :
bắt đầu lệnh, %
chỉ định toàn bộ bộ đệm là phạm vi, s
bắt đầu thay thế. /
là dấu phân cách mẫu (bất kỳ ký tự nào khác có thể được sử dụng, nhưng /
là "tiêu chuẩn"). Mẫu thứ nhất /
bắt đầu mẫu tìm kiếm, mẫu thứ hai thay thế và mẫu thứ ba kết thúc mẫu tìm kiếm. Công cụ sửa đổi Trailing có sẵn để chỉ định độ nhạy cảm trường hợp, vv \1
đại diện cho nhóm lấy trong mẫu tìm kiếm. :%s/foo/bar/
thay thế foo
bằng bar
trong tập tin.
:%s/^A\.//
. Phương thức trong câu trả lời không tự chụp các ^A\.
mẫu (thay vì sự vắng mặt của chúng), vì vậy nó không thể sửa đổi các chuỗi đó theo một cách rõ ràng.
Điều này cũng hoạt động (khi dòng đầu tiên bắt đầu với A.
)
:v/^A/-1j!