forked from aniani/vim
257 lines
4.7 KiB
Plaintext
257 lines
4.7 KiB
Plaintext
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 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
|