Trong cuốn sách (rất hay) của mình "Pratical Vim", Drew Neil chỉ ra cách thu thập tất cả các dòng có chứa từ "TODO" vào một sổ đăng ký để sử dụng chúng sau này.
Để làm như vậy, anh ta chỉ cần sử dụng một lệnh toàn cầu: :g/TODO/yank A
(Vốn A
cho phép xảy ra các dòng đến thanh ghi có tên a
).
Tôi nghĩ đó là một mẹo khá hay nhưng tôi cần cải thiện nó: Tôi đang cố gắng chèn số dòng trước nội dung của nó. Tôi nghĩ rằng giải pháp sẽ là lấy số dòng và sử dụng nó trong phần cuối của lệnh tôi đã đề cập trước đó. Vấn đề là tôi không biết làm thế nào để có được số dòng này.
Vì vậy, câu hỏi của tôi là: Làm thế nào trong một lệnh toàn cầu tôi có thể có được số dòng phù hợp và làm thế nào tôi có thể sử dụng số này?
Chỉ cần rõ ràng ở đây là một ví dụ. Hãy xem xét tệp này:
1 //TODO: Hey this is a todo
2 int main(void){
3 //TODO: and this is another one
4 printf("Hello world");
5
6 return 0;
7 }
Khi tôi gõ :g/TODO/yank A
và tôi đặt nội dung của thanh ghi vào một tệp tôi nhận được:
//TODO: Hey this is a todo
//TODO: and this is another one
Những gì tôi muốn nhận được là:
1 //TODO: Hey this is a todo
3 //TODO: and this is another one
Phần thưởng cho yank cũng bao gồm việc thụt dòng, sẽ rất tuyệt nếu tôi có thể loại bỏ nó trực tiếp khỏi lệnh toàn cầu.
getpos()
vàgetline()
ra lệnh. Ngoài ra, khi bạn trả lời câu hỏi phần thưởng, bạn xứng đáng có một chiếc bánh quy nhảy múa ;)