Tôi muốn thêm một dòng sau mỗi 3 dòng trong một tệp (có khoảng 1000 dòng) bằng cách sử dụng trình soạn thảo vim. Ai đó có thể giúp tôi không?Làm thế nào để thêm một dòng sau mỗi vài dòng trong vim
Cảm ơn, Alisha
Tôi muốn thêm một dòng sau mỗi 3 dòng trong một tệp (có khoảng 1000 dòng) bằng cách sử dụng trình soạn thảo vim. Ai đó có thể giúp tôi không?Làm thế nào để thêm một dòng sau mỗi vài dòng trong vim
Cảm ơn, Alisha
có một biểu thức chính quy vim cụ thể để làm điều đó
:%s/.*\n.*\n.*\n/\0\r/g
Chỉnh sửa: nếu bạn muốn bất cứ điều gì khác hơn một dòng mới, chỉ cần đặt văn bản trước \ r (đúng regex trốn thoát, nếu nó có chứa một số nhân vật regex)
tôi sẽ làm điều này:
:%s/^/\=(line(".")%4==0?"\n":"")/g
làm việc này nếu yêu cầu của bạn chuyển thành "* thêm một dòng trống mới mỗi 700 dòng * s" :) bạn chỉ cần thay đổi "4"
P.S. nếu tôi cần làm điều này, tôi sẽ không làm điều đó trong vim. sed, awk, có thể làm điều đó đơn giản hơn nhiều.
Bạn có thể giải thích hay không với tôi những gì mỗi cmd là viết tắt của? – Alisha
'^' Thể hiện sự bắt đầu của dòng. Chúng tôi đang nhận được Mod số của dòng hiện tại 4, nếu nó là đúng (bằng không) nó ses một dòng mới như là một substituition, nếu không nó không sử dụng gì "". – SergioAraujo
Bạn có thể sử dụng macro. Quá trình hoàn thành trông giống như:
qq " start recording to register q (you could use any register from a to z)
o " insert an empty line below cursor
<Esc> " switch to normal mode
jjj " move the cursor 3 lines downward
q " stop recording
Sau đó chỉ cần di chuyển đến dòng bắt đầu và gõ [email protected]
để thực hiện vĩ mô 1000 lần của bạn.
Lệnh cuối cùng sẽ giống như 'qqoĐây là dòng để thêm
@Sam Vim sẽ ngừng chạy macro ngay khi nó kết thúc tệp. –
Điều này cũng hữu ích nếu bạn muốn làm bất cứ điều gì với * kết thúc * của một dòng thay vì chèn một dòng mới trước dòng thứ 4 hoặc tương tự. – HitScan
" insert a blank line every 3 lines
:%s/\v(.*\n){3}/&\r
: .............. command
% .............. all file
s .............. replace
/.............. start pattern that we will replace
\v ............. very magic mode, see :h very-magic
(.*\n) ......... everything including the line break
{3} ............ quantifier
/.............. start new pattern to replace
& .............. corresponds to the pattern sought in (.*\n)
\r ............. add line break
vim cũng có '\ {n \}' phù hợp 'lần xuất hiện n' của một mô hình. Ví dụ tôi sử dụng điều này để chèn từ 'GO' trên mỗi dòng 100 (như gõ '. * \ N' 100 lần trở nên tẻ nhạt):'% s/\ (. * \ N \) \ {100 \}/\ 0GO \ r/g'. Hoặc bằng cách kích hoạt chế độ ma thuật ('\ v') trong regex, nó trở nên đơn giản hơn một chút để đọc:'% s/\ v (. * \ N) {100}/\ 0GO \ r/' –