1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
Test Visual block mode commands
And test "U" in Visual mode, also on German sharp S.
#define BO_ALL 0x0001
#define BO_BS 0x0002
#define BO_CRSR 0x0004
STARTTEST
:so small.vim
:so mbyte.vim
:" This only works when 'encoding' is "latin1", don't depend on the environment
:set enc=latin1
/^abcde
:" Test shift-right of a block
jlllljj>wlljlll>
:" Test shift-left of a block
G$hhhhkk<
:" Test block-insert
GklkkkIxyz
:" Test block-replace
Gllllkkklllrq
:" Test block-change
G$khhhhhkkcmno
:$-4,$w! test.out
:" Test block-insert using cursor keys for movement
/^aaaa/
:exe ":norm! l\<C-V>jjjlllI\<Right>\<Right> \<Esc>"
:/^aa/,/^$/w >> test.out
/xaaa$/
:exe ":norm! \<C-V>jjjI<>\<Left>p\<Esc>"
:/xaaa$/,/^$/w >> test.out
:" Test for Visual block was created with the last <C-v>$
/^A23$/
:exe ":norm! l\<C-V>j$Aab\<Esc>"
:.,/^$/w >> test.out
:" Test for Visual block was created with the middle <C-v>$ (1)
/^B23$/
:exe ":norm! l\<C-V>j$hAab\<Esc>"
:.,/^$/w >> test.out
:" Test for Visual block was created with the middle <C-v>$ (2)
/^C23$/
:exe ":norm! l\<C-V>j$hhAab\<Esc>"
:.,/^$/w >> test.out
:" Test for Visual block insert when virtualedit=all and utf-8 encoding
:set ve=all enc=utf-8
:/\t\tline
:exe ":norm! 07l\<C-V>jjIx\<Esc>"
:.,/^$/w >> test.out
:" Test for Visual block append when virtualedit=all
:exe ":norm! 012l\<C-v>jjAx\<Esc>"
:set ve= enc=latin1
:.,/^$/w >> test.out
:" gUe must uppercase a whole word, also when � changes to SS
Gothe youtu�euu endYpk0wgUe
:" gUfx must uppercase until x, inclusive.
O- you�tu�exu -0fogUfx
:" VU must uppercase a whole line
YpkVU
:" same, when it's the last line in the buffer
YPGi111VUddP
:" Uppercase two lines
Oblah di
doh dutVkUj
:" Uppercase part of two lines
ddppi333k0i222fyllvjfuUk
:" visual replace using Enter or NL
G3o1234567892k05l2jr
G3o987652k02l2jr
G3o1234567892k05l2jr
G3o987652k02l2jr
:"
:" Test cursor position. When ve=block and Visual block mode and $gj
:set ve=block
:exe ":norm! 2k\<C-V>$gj\<Esc>"
:let cpos=getpos("'>")
:$put ='col:'.cpos[2].' off:'.cpos[3]
:"
:" block_insert when replacing spaces in front of the block with tabs
:set ts=8 sts=4 sw=4
:4,7y
Gp
:exe ":norm! f0\<C-V>2jI\<tab>\<esc>"
:/^the/,$w >> test.out
:qa!
ENDTEST
line1
line2
line3
aaaaaa
bbbbbb
cccccc
dddddd
xaaa
bbbb
cccc
dddd
yaaa
���
bbb
A23
4567
B23
4567
C23
4567
abcdefghijklm
abcdefghijklm
abcdefghijklm
abcdefghijklm
abcdefghijklm
|