1" Tests for multi-line regexps with ":s".
2
3function! Test_multiline_subst()
4  enew!
5  call append(0, ["1 aa",
6	      \ "bb",
7	      \ "cc",
8	      \ "2 dd",
9	      \ "ee",
10	      \ "3 ef",
11	      \ "gh",
12	      \ "4 ij",
13	      \ "5 a8",
14	      \ "8b c9",
15	      \ "9d",
16	      \ "6 e7",
17	      \ "77f",
18	      \ "xxxxx"])
19
20  1
21  " test if replacing a line break works with a back reference
22  /^1/,/^2/s/\n\(.\)/ \1/
23  " test if inserting a line break works with a back reference
24  /^3/,/^4/s/\(.\)$/\r\1/
25  " test if replacing a line break with another line break works
26  /^5/,/^6/s/\(\_d\{3}\)/x\1x/
27  call assert_equal('1 aa bb cc 2 dd ee', getline(1))
28  call assert_equal('3 e', getline(2))
29  call assert_equal('f', getline(3))
30  call assert_equal('g', getline(4))
31  call assert_equal('h', getline(5))
32  call assert_equal('4 i', getline(6))
33  call assert_equal('j', getline(7))
34  call assert_equal('5 ax8', getline(8))
35  call assert_equal('8xb cx9', getline(9))
36  call assert_equal('9xd', getline(10))
37  call assert_equal('6 ex7', getline(11))
38  call assert_equal('7x7f', getline(12))
39  call assert_equal('xxxxx', getline(13))
40  enew!
41endfunction
42