summaryrefslogtreecommitdiffstats
path: root/src/testdir/test94.in
blob: 447fd2bee411e504bccfef8839aa0bab4db866fb (plain)
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
Test for Visual mode and operators

Tests for the two kinds of operations: Those executed with Visual mode
followed by an operator and those executed via Operator-pending mode. Also
part of the test are mappings, counts, and repetition with the . command.

Test cases:
- Visual modes (v V CTRL-V) followed by an operator; count; repeating
- Visual mode maps; count; repeating
  - Simple
  - With an Ex command (custom text object)
- Operator-pending mode maps
  - Simple
  - With Ex command moving the cursor
  - With Ex command and Visual selection (custom text object)
- Patch 7.3.879: Properly abort Ex command in Operator-pending mode

STARTTEST
:so small.vim
:set belloff=all
:set enc=utf-8 nocp viminfo+=nviminfo
:
:" User functions
:function MoveToCap()
:  call search('\u', 'W')
:endfunction
:function SelectInCaps()
:  let [line1, col1] = searchpos('\u', 'bcnW')
:  let [line2, col2] = searchpos('.\u', 'nW')
:  call setpos("'<", [0, line1, col1, 0])
:  call setpos("'>", [0, line2, col2, 0])
:  normal! gv
:endfunction
:
:" Visual modes followed by operator
/^apple
lvld.l3vd.:
/^line 1
Vcnewlinej.j2Vd.:
/^xxxx
jlc  l.l2c----l.:
:
:" Visual mode maps (movement and text object)
:vnoremap W /\u/s-1<CR>
:vnoremap iW :<C-U>call SelectInCaps()<CR>
/^Kiwi
vWcNol.fD2vd.:
/^Jambu
llviWc-l.l2vdl.:
:
:" Operator-pending mode maps (movement and text object)
:onoremap W /\u/<CR>
:onoremap <Leader>W :<C-U>call MoveToCap()<CR>
:onoremap iW :<C-U>call SelectInCaps()<CR>
/^Pineapple
cW-l.l2.l.:
/^Juniper
g?\WfD.:
/^Lemon
yiWPlciWNewfr.:
:
:" Patch 7.3.879: Properly abort Operator-pending mode for "dv:<Esc>" etc.
/^zzzz
dV:
dv:
:set noma | let v:errmsg = ''
d:
:set ma | put = v:errmsg =~# '^E21' ? 'ok' : 'failed'
dv:dV::set noma | let v:errmsg = ''
d::set ma | put = v:errmsg =~# '^E21' ? 'failed' : 'ok'
:
:$put =''
:$put ='characterwise visual mode: replace last line'
:$put ='a'
:let @" = 'x'
:let v:errmsg = ''
v$p
:$put ='---'
:$put ='v:errmsg='.v:errmsg
:
:$put =''
:$put ='characterwise visual mode: delete middle line'
:$put ='a'
:$put ='b'
:$put ='c'
kkv$d
:$put ='---'
:
:$put =''
:$put ='characterwise visual mode: delete middle two line'
:$put ='a'
:$put ='b'
:$put ='c'
kkvj$d
:$put ='---'
:
:$put =''
:$put ='characterwise visual mode: delete last line'
:$put ='a'
:$put ='b'
:$put ='c'
v$d
:$put ='---'
:
:$put =''
:$put ='characterwise visual mode: delete last two line'
:$put ='a'
:$put ='b'
:$put ='c'
kvj$d
:$put ='---'
:
:" Select mode maps
:snoremap <lt>End> <End>
:snoremap <lt>Down> <Down>
:snoremap <lt>Del> <Del>
:
:$put =''
:$put ='characterwise select mode: delete middle line'
:$put ='a'
:$put ='b'
:$put ='c'
kkgh<End><Del>
:$put ='---'
:
:$put =''
:$put ='characterwise select mode: delete middle two line'
:$put ='a'
:$put ='b'
:$put ='c'
kkgh<Down><End><Del>
:$put ='---'
:
:$put =''
:$put ='characterwise select mode: delete last line'
:$put ='a'
:$put ='b'
:$put ='c'
gh<End><Del>
:$put ='---'
:
:$put =''
:$put ='characterwise select mode: delete last two line'
:$put ='a'
:$put ='b'
:$put ='c'
kgh<Down><End><Del>
:$put ='---'
:
:$put =''
:$put ='linewise select mode: delete middle line'
:$put ='a'
:$put ='b'
:$put ='c'
kkgH<Del>
:$put ='---'
:
:$put =''
:$put ='linewise select mode: delete middle two line'
:$put ='a'
:$put ='b'
:$put ='c'
kkgH<Down><Del>
:$put ='---'
:
:$put =''
:$put ='linewise select mode: delete last line'
:$put ='a'
:$put ='b'
:$put ='c'
gH<Del>
:$put ='---'
:
:$put =''
:$put ='linewise select mode: delete last two line'
:$put ='a'
:$put ='b'
:$put ='c'
kgH<Down><Del>
:$put ='---'
:
:$put =''
:$put ='v_p: replace last character with line register at middle line'
:$put ='aaa'
:$put ='bbb'
:$put ='ccc'
:-2yank
k$vp
:$put ='---'
:
:$put =''
:$put ='v_p: replace last character with line register at middle line selecting newline'
:$put ='aaa'
:$put ='bbb'
:$put ='ccc'
:-2yank
k$v$p
:$put ='---'
:
:$put =''
:$put ='v_p: replace last character with line register at last line'
:$put ='aaa'
:$put ='bbb'
:$put ='ccc'
:-2yank
$vp
:$put ='---'
:
:$put =''
:$put ='v_p: replace last character with line register at last line selecting newline'
:$put ='aaa'
:$put ='bbb'
:$put ='ccc'
:-2yank
$v$p
:$put ='---'
:
:$put =''
:$put ='gv in exclusive select mode after operation'
:$put ='zzz '
:$put ='äà '
:set selection=exclusive
kv3lyjv3lpgvcxxx
:$put ='---'
:
:$put =''
:$put ='gv in exclusive select mode without operation'
:$put ='zzz '
:set selection=exclusive
0v3lgvcxxx
:$put ='---'
:/^start:/+2,$w! test.out
:q!
ENDTEST

start:

apple banana cherry

line 1 line 1
line 2 line 2
line 3 line 3
line 4 line 4
line 5 line 5
line 6 line 6

xxxxxxxxxxxxx
xxxxxxxxxxxxx
xxxxxxxxxxxxx
xxxxxxxxxxxxx

KiwiRaspberryDateWatermelonPeach
JambuRambutanBananaTangerineMango

PineappleQuinceLoganberryOrangeGrapefruitKiwiZ
JuniperDurianZ
LemonNectarineZ

zzzz
zzzz