16835dc61SBram Moolenaar" Test for gn command 26835dc61SBram Moolenaar 36835dc61SBram Moolenaarfunc Test_gn_command() 4add8dce3SBram Moolenaar noautocmd new 5037c54f2SBram Moolenaar " replace a single char by itself quoted: 66835dc61SBram Moolenaar call setline('.', 'abc x def x ghi x jkl') 76835dc61SBram Moolenaar let @/ = 'x' 86835dc61SBram Moolenaar exe "norm! cgn'x'\<esc>.." 96835dc61SBram Moolenaar call assert_equal("abc 'x' def 'x' ghi 'x' jkl", getline('.')) 106835dc61SBram Moolenaar sil! %d_ 11add8dce3SBram Moolenaar 126835dc61SBram Moolenaar " simple search match 136835dc61SBram Moolenaar call setline('.', 'foobar') 146835dc61SBram Moolenaar let @/ = 'foobar' 156835dc61SBram Moolenaar exe "norm! gncsearchmatch" 166835dc61SBram Moolenaar call assert_equal('searchmatch', getline('.')) 176835dc61SBram Moolenaar sil! %d _ 18add8dce3SBram Moolenaar 196835dc61SBram Moolenaar " replace a multi-line match 206835dc61SBram Moolenaar call setline('.', ['', 'one', 'two']) 216835dc61SBram Moolenaar let @/ = 'one\_s*two\_s' 226835dc61SBram Moolenaar exe "norm! gnceins\<CR>zwei" 236835dc61SBram Moolenaar call assert_equal(['','eins','zwei'], getline(1,'$')) 246835dc61SBram Moolenaar sil! %d _ 25add8dce3SBram Moolenaar 266835dc61SBram Moolenaar " test count argument 276835dc61SBram Moolenaar call setline('.', ['', 'abcdx | abcdx | abcdx']) 286835dc61SBram Moolenaar let @/ = '[a]bcdx' 296835dc61SBram Moolenaar exe "norm! 2gnd" 306835dc61SBram Moolenaar call assert_equal(['','abcdx | | abcdx'], getline(1,'$')) 316835dc61SBram Moolenaar sil! %d _ 32add8dce3SBram Moolenaar 336835dc61SBram Moolenaar " join lines 346835dc61SBram Moolenaar call setline('.', ['join ', 'lines']) 356835dc61SBram Moolenaar let @/ = '$' 366835dc61SBram Moolenaar exe "norm! 0gnd" 376835dc61SBram Moolenaar call assert_equal(['join lines'], getline(1,'$')) 386835dc61SBram Moolenaar sil! %d _ 39add8dce3SBram Moolenaar 406835dc61SBram Moolenaar " zero-width match 416835dc61SBram Moolenaar call setline('.', ['', 'zero width pattern']) 426835dc61SBram Moolenaar let @/ = '\>\zs' 436835dc61SBram Moolenaar exe "norm! 0gnd" 446835dc61SBram Moolenaar call assert_equal(['', 'zerowidth pattern'], getline(1,'$')) 456835dc61SBram Moolenaar sil! %d _ 46add8dce3SBram Moolenaar 476835dc61SBram Moolenaar " delete first and last chars 486835dc61SBram Moolenaar call setline('.', ['delete first and last chars']) 496835dc61SBram Moolenaar let @/ = '^' 506835dc61SBram Moolenaar exe "norm! 0gnd$" 516835dc61SBram Moolenaar let @/ = '\zs' 526835dc61SBram Moolenaar exe "norm! gnd" 536835dc61SBram Moolenaar call assert_equal(['elete first and last char'], getline(1,'$')) 546835dc61SBram Moolenaar sil! %d _ 55add8dce3SBram Moolenaar 566835dc61SBram Moolenaar " using visual mode 576835dc61SBram Moolenaar call setline('.', ['', 'uniquepattern uniquepattern']) 586835dc61SBram Moolenaar exe "norm! /[u]niquepattern/s\<cr>vlgnd" 596835dc61SBram Moolenaar call assert_equal(['', ' uniquepattern'], getline(1,'$')) 606835dc61SBram Moolenaar sil! %d _ 61add8dce3SBram Moolenaar 626835dc61SBram Moolenaar " backwards search 636835dc61SBram Moolenaar call setline('.', ['my very excellent mother just served us nachos']) 646835dc61SBram Moolenaar let @/ = 'mother' 656835dc61SBram Moolenaar exe "norm! $cgNmongoose" 666835dc61SBram Moolenaar call assert_equal(['my very excellent mongoose just served us nachos'], getline(1,'$')) 676835dc61SBram Moolenaar sil! %d _ 68add8dce3SBram Moolenaar 696835dc61SBram Moolenaar " search for single char 706835dc61SBram Moolenaar call setline('.', ['','for (i=0; i<=10; i++)']) 716835dc61SBram Moolenaar let @/ = 'i' 726835dc61SBram Moolenaar exe "norm! cgnj" 736835dc61SBram Moolenaar call assert_equal(['','for (j=0; i<=10; i++)'], getline(1,'$')) 746835dc61SBram Moolenaar sil! %d _ 75add8dce3SBram Moolenaar 766835dc61SBram Moolenaar " search hex char 776835dc61SBram Moolenaar call setline('.', ['','Y']) 786835dc61SBram Moolenaar set noignorecase 796835dc61SBram Moolenaar let @/ = '\%x59' 806835dc61SBram Moolenaar exe "norm! gnd" 816835dc61SBram Moolenaar call assert_equal(['',''], getline(1,'$')) 826835dc61SBram Moolenaar sil! %d _ 83add8dce3SBram Moolenaar 846835dc61SBram Moolenaar " test repeating gdn 856835dc61SBram Moolenaar call setline('.', ['', '1', 'Johnny', '2', 'Johnny', '3']) 866835dc61SBram Moolenaar let @/ = 'Johnny' 876835dc61SBram Moolenaar exe "norm! dgn." 886835dc61SBram Moolenaar call assert_equal(['','1', '', '2', '', '3'], getline(1,'$')) 896835dc61SBram Moolenaar sil! %d _ 90add8dce3SBram Moolenaar 916835dc61SBram Moolenaar " test repeating gUgn 926835dc61SBram Moolenaar call setline('.', ['', '1', 'Depp', '2', 'Depp', '3']) 936835dc61SBram Moolenaar let @/ = 'Depp' 946835dc61SBram Moolenaar exe "norm! gUgn." 956835dc61SBram Moolenaar call assert_equal(['', '1', 'DEPP', '2', 'DEPP', '3'], getline(1,'$')) 966835dc61SBram Moolenaar sil! %d _ 97add8dce3SBram Moolenaar 986835dc61SBram Moolenaar " test using look-ahead assertions 996835dc61SBram Moolenaar call setline('.', ['a:10', '', 'a:1', '', 'a:20']) 1006835dc61SBram Moolenaar let @/ = 'a:0\@!\zs\d\+' 1016835dc61SBram Moolenaar exe "norm! 2nygno\<esc>p" 1026835dc61SBram Moolenaar call assert_equal(['a:10', '', 'a:1', '1', '', 'a:20'], getline(1,'$')) 1036835dc61SBram Moolenaar sil! %d _ 104add8dce3SBram Moolenaar 105add8dce3SBram Moolenaar " test using nowrapscan 106add8dce3SBram Moolenaar set nowrapscan 107add8dce3SBram Moolenaar call setline(1, 'foo bar baz') 108add8dce3SBram Moolenaar exe "norm! /bar/e\<cr>" 109add8dce3SBram Moolenaar exe "norm! gnd" 110add8dce3SBram Moolenaar call assert_equal(['foo baz'], getline(1,'$')) 111add8dce3SBram Moolenaar sil! %d_ 112add8dce3SBram Moolenaar 11322ab547dSBram Moolenaar " search upwards with nowrapscan set 11422ab547dSBram Moolenaar call setline('.', ['foo', 'bar', 'foo', 'baz']) 11522ab547dSBram Moolenaar set nowrapscan 11622ab547dSBram Moolenaar let @/ = 'foo' 11722ab547dSBram Moolenaar $ 11822ab547dSBram Moolenaar norm! dgN 11922ab547dSBram Moolenaar call assert_equal(['foo', 'bar', '', 'baz'], getline(1,'$')) 120bdb65792SBram Moolenaar sil! %d_ 121bdb65792SBram Moolenaar 122bdb65792SBram Moolenaar " search using the \zs atom 123bdb65792SBram Moolenaar call setline(1, [' nnoremap', '' , 'nnoremap']) 124bdb65792SBram Moolenaar set wrapscan&vim 125bdb65792SBram Moolenaar let @/ = '\_s\zsnnoremap' 126bdb65792SBram Moolenaar $ 127bdb65792SBram Moolenaar norm! cgnmatch 128bdb65792SBram Moolenaar call assert_equal([' nnoremap', '', 'match'], getline(1,'$')) 12922ab547dSBram Moolenaar sil! %d_ 13022ab547dSBram Moolenaar 131edaad6e0SBram Moolenaar " make sure it works correctly for one-char wide search items 132edaad6e0SBram Moolenaar call setline('.', ['abcdefghi']) 133edaad6e0SBram Moolenaar let @/ = 'a' 134edaad6e0SBram Moolenaar exe "norm! 0fhvhhgNgU" 135edaad6e0SBram Moolenaar call assert_equal(['ABCDEFGHi'], getline(1,'$')) 136edaad6e0SBram Moolenaar call setline('.', ['abcdefghi']) 137edaad6e0SBram Moolenaar let @/ = 'b' 138edaad6e0SBram Moolenaar exe "norm! 0fhvhhgngU" 139edaad6e0SBram Moolenaar call assert_equal(['abcdefghi'], getline(1,'$')) 140edaad6e0SBram Moolenaar sil! %d _ 141edaad6e0SBram Moolenaar call setline('.', ['abcdefghi']) 142edaad6e0SBram Moolenaar let @/ = 'f' 143edaad6e0SBram Moolenaar exe "norm! 0vllgngU" 144edaad6e0SBram Moolenaar call assert_equal(['ABCDEFghi'], getline(1,'$')) 145edaad6e0SBram Moolenaar sil! %d _ 146edaad6e0SBram Moolenaar call setline('.', ['12345678']) 147edaad6e0SBram Moolenaar let @/ = '5' 148edaad6e0SBram Moolenaar norm! gg0f7vhhhhgnd 149edaad6e0SBram Moolenaar call assert_equal(['12348'], getline(1,'$')) 150edaad6e0SBram Moolenaar sil! %d _ 151*453c1925SBram Moolenaar call setline('.', ['12345678']) 152*453c1925SBram Moolenaar let @/ = '5' 153*453c1925SBram Moolenaar norm! gg0f2vf7gNd 154*453c1925SBram Moolenaar call assert_equal(['1678'], getline(1,'$')) 155*453c1925SBram Moolenaar sil! %d _ 156edaad6e0SBram Moolenaar 157add8dce3SBram Moolenaar set wrapscan&vim 1586835dc61SBram Moolenaarendfu 1596835dc61SBram Moolenaar 1605d24a225SBram Moolenaarfunc Test_gn_multi_line() 1615d24a225SBram Moolenaar new 1625d24a225SBram Moolenaar call setline(1, [ 1635d24a225SBram Moolenaar \ 'func Tm1()', 1645d24a225SBram Moolenaar \ ' echo "one"', 1655d24a225SBram Moolenaar \ 'endfunc', 1665d24a225SBram Moolenaar \ 'func Tm2()', 1675d24a225SBram Moolenaar \ ' echo "two"', 1685d24a225SBram Moolenaar \ 'endfunc', 1695d24a225SBram Moolenaar \ 'func Tm3()', 1705d24a225SBram Moolenaar \ ' echo "three"', 1715d24a225SBram Moolenaar \ 'endfunc', 1725d24a225SBram Moolenaar \]) 1735d24a225SBram Moolenaar /\v^func Tm\d\(\)\n.*\zs".*"\ze$ 1745d24a225SBram Moolenaar normal jgnrx 1755d24a225SBram Moolenaar call assert_equal(' echo xxxxx', getline(5)) 1765d24a225SBram Moolenaar bwipe! 1775d24a225SBram Moolenaarendfunc 1785d24a225SBram Moolenaar 1799e4d8215SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 180