diff --git a/src/testdir/script_util.vim b/src/testdir/script_util.vim
index 9913b1d..28d6a62 100644
--- a/src/testdir/script_util.vim
+++ b/src/testdir/script_util.vim
@@ -48,7 +48,7 @@
 " delete it afterwards.  However, if an exception is thrown the file may remain,
 " the caller should call DeleteTheScript() afterwards.
 let s:script_name = ''
-function! ExecAsScript(funcname)
+func ExecAsScript(funcname)
     " Make a script from the function passed as argument.
     let s:script_name = MakeScript(a:funcname)
 
@@ -56,9 +56,9 @@
     exec "source" s:script_name
     call delete(s:script_name)
     let s:script_name = ''
-endfunction
+endfunc
 
-function! DeleteTheScript()
+func DeleteTheScript()
     if s:script_name
 	call delete(s:script_name)
 	let s:script_name = ''
diff --git a/src/testdir/test_cursorline.vim b/src/testdir/test_cursorline.vim
index 2285ba6..f4c58de 100644
--- a/src/testdir/test_cursorline.vim
+++ b/src/testdir/test_cursorline.vim
@@ -3,26 +3,26 @@
 source check.vim
 source screendump.vim
 
-function! s:screen_attr(lnum) abort
+func s:screen_attr(lnum) abort
   return map(range(1, 8), 'screenattr(a:lnum, v:val)')
-endfunction
+endfunc
 
-function! s:test_windows(h, w) abort
+func s:test_windows(h, w) abort
   call NewWindow(a:h, a:w)
-endfunction
+endfunc
 
-function! s:close_windows() abort
+func s:close_windows() abort
   call CloseWindow()
-endfunction
+endfunc
 
-function! s:new_hi() abort
+func s:new_hi() abort
   redir => save_hi
   silent! hi CursorLineNr
   redir END
   let save_hi = join(split(substitute(save_hi, '\s*xxx\s*', ' ', ''), "\n"), '')
   exe 'hi' save_hi 'ctermbg=0 guibg=Black'
   return save_hi
-endfunction
+endfunc
 
 func Test_cursorline_highlight1()
   let save_hi = s:new_hi()
diff --git a/src/testdir/test_popup.vim b/src/testdir/test_popup.vim
index 4181ce8..f28efc9 100644
--- a/src/testdir/test_popup.vim
+++ b/src/testdir/test_popup.vim
@@ -1152,11 +1152,11 @@
   bw!
 endfunc
 
-function! GetPumPosition()
+func GetPumPosition()
   call assert_true( pumvisible() )
   let g:pum_pos = pum_getpos()
   return ''
-endfunction
+endfunc
 
 func Test_pum_getpos()
   new
diff --git a/src/testdir/test_prompt_buffer.vim b/src/testdir/test_prompt_buffer.vim
index fb4b945..9998cc5 100644
--- a/src/testdir/test_prompt_buffer.vim
+++ b/src/testdir/test_prompt_buffer.vim
@@ -220,7 +220,7 @@
   %bwipe!
 endfunc
 
-function! Test_prompt_while_writing_to_hidden_buffer()
+func Test_prompt_while_writing_to_hidden_buffer()
   call CanTestPromptBuffer()
   CheckUnix
 
diff --git a/src/testdir/test_vimscript.vim b/src/testdir/test_vimscript.vim
index 7698ce8..6292f6d 100644
--- a/src/testdir/test_vimscript.vim
+++ b/src/testdir/test_vimscript.vim
@@ -719,23 +719,23 @@
 
 XpathINIT
 
-function! NULL()
+func NULL()
     Xpath 'a'
     return 0
-endfunction
+endfunc
 
-function! ZERO()
+func ZERO()
     Xpath 'b'
     return 0
-endfunction
+endfunc
 
-function! F0()
+func! F0()
     Xpath 'c'
-endfunction
+endfunc
 
-function! F1(arg)
+func! F1(arg)
     Xpath 'e'
-endfunction
+endfunc
 
 let V0 = 1
 
@@ -6822,10 +6822,10 @@
 " Test 95:  lines of :append, :change, :insert			    {{{1
 "-------------------------------------------------------------------------------
 
-function! DefineFunction(name, body)
+func DefineFunction(name, body)
     let func = join(['function! ' . a:name . '()'] + a:body + ['endfunction'], "\n")
     exec func
-endfunction
+endfunc
 
 func Test_script_lines()
     " :append
diff --git a/src/testdir/view_util.vim b/src/testdir/view_util.vim
index 1cdce21..a4d0e56 100644
--- a/src/testdir/view_util.vim
+++ b/src/testdir/view_util.vim
@@ -19,7 +19,7 @@
 " Get text on the screen, including composing characters.
 " ScreenLines(lnum, width) or
 " ScreenLines([start, end], width)
-function! ScreenLines(lnum, width) abort
+func ScreenLines(lnum, width) abort
   redraw!
   if type(a:lnum) == v:t_list
     let start = a:lnum[0]
@@ -33,9 +33,9 @@
     let lines += [join(map(range(1, a:width), 'screenstring(l, v:val)'), '')]
   endfor
   return lines
-endfunction
+endfunc
 
-function! ScreenAttrs(lnum, width) abort
+func ScreenAttrs(lnum, width) abort
   redraw!
   if type(a:lnum) == v:t_list
     let start = a:lnum[0]
@@ -49,16 +49,16 @@
     let attrs += [map(range(1, a:width), 'screenattr(l, v:val)')]
   endfor
   return attrs
-endfunction
+endfunc
 
-function! NewWindow(height, width) abort
+func NewWindow(height, width) abort
   exe a:height . 'new'
   exe a:width . 'vsp'
   set winfixwidth winfixheight
   redraw!
-endfunction
+endfunc
 
-function! CloseWindow() abort
+func CloseWindow() abort
   bw!
   redraw!
-endfunction
+endfunc
