patch 8.0.0060
Problem:    When using an Ex command for 'keywordprg' it is escaped as with a
            shell command. (Romain Lafourcade)
Solution:   Escape for an Ex command. (closes #1175)
diff --git a/src/testdir/test_normal.vim b/src/testdir/test_normal.vim
index f896046..20cbaa0 100644
--- a/src/testdir/test_normal.vim
+++ b/src/testdir/test_normal.vim
@@ -1222,7 +1222,7 @@
 func! Test_normal23_K()
   " Test for K command
   new
-  call append(0, ['version8.txt', 'man'])
+  call append(0, ['version8.txt', 'man', 'aa%bb', 'cc|dd'])
   let k = &keywordprg
   set keywordprg=:help
   1
@@ -1237,6 +1237,24 @@
   call assert_match('\*version8\.0\*', getline('.'))
   helpclose
 
+  set keywordprg=:new
+  set iskeyword+=%
+  set iskeyword+=\|
+  2
+  norm! K
+  call assert_equal('man', fnamemodify(bufname('%'), ':t'))
+  bwipe!
+  3
+  norm! K
+  call assert_equal('aa%bb', fnamemodify(bufname('%'), ':t'))
+  bwipe!
+  4
+  norm! K
+  call assert_equal('cc|dd', fnamemodify(bufname('%'), ':t'))
+  bwipe!
+  set iskeyword-=%
+  set iskeyword-=\|
+
   " Only expect "man" to work on Unix
   if !has("unix")
     let &keywordprg = k