diff --git a/src/Makefile b/src/Makefile
index 9ca5b1d..001f87a 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -2076,6 +2076,7 @@
 	test_filter_map \
 	test_fnamemodify \
 	test_glob2regpat \
+	test_gn \
 	test_goto \
 	test_hardcopy \
 	test_help_tagjump \
diff --git a/src/search.c b/src/search.c
index 5fc6820..1f1ba6a 100644
--- a/src/search.c
+++ b/src/search.c
@@ -4719,7 +4719,7 @@
 }
 
 /*
- * Check if the pattern is one character or zero-width.
+ * Check if the pattern is one character long or zero-width.
  * If move is TRUE, check from the beginning of the buffer, else from the
  * current cursor position.
  * Returns TRUE, FALSE or -1 for failure.
@@ -4734,10 +4734,15 @@
     int		save_called_emsg = called_emsg;
     int		flag = 0;
 
+    if (pattern == NULL)
+	pattern = spats[last_idx].pat;
+
     if (search_regcomp(pattern, RE_SEARCH, RE_SEARCH,
 					      SEARCH_KEEP, &regmatch) == FAIL)
 	return -1;
 
+    /* init startcol correctly */
+    regmatch.startpos[0].col = -1;
     /* move to match */
     if (move)
 	clearpos(&pos)
@@ -4748,22 +4753,30 @@
 	flag = SEARCH_START;
     }
 
-    if (searchit(curwin, curbuf, &pos, FORWARD, spats[last_idx].pat, 1,
+    if (searchit(curwin, curbuf, &pos, FORWARD, pattern, 1,
 			      SEARCH_KEEP + flag, RE_SEARCH, 0, NULL) != FAIL)
     {
 	/* Zero-width pattern should match somewhere, then we can check if
 	 * start and end are in the same position. */
 	called_emsg = FALSE;
-	nmatched = vim_regexec_multi(&regmatch, curwin, curbuf,
-						  pos.lnum, (colnr_T)0, NULL);
+	do
+	{
+	    regmatch.startpos[0].col++;
+	    nmatched = vim_regexec_multi(&regmatch, curwin, curbuf,
+					    pos.lnum, regmatch.startpos[0].col, NULL);
+	    if (!nmatched)
+		break;
+	} while (regmatch.startpos[0].col < pos.col);
 
 	if (!called_emsg)
+	{
 	    result = (nmatched != 0
 		&& regmatch.startpos[0].lnum == regmatch.endpos[0].lnum
 		&& regmatch.startpos[0].col == regmatch.endpos[0].col);
-
-	if (!result && inc(&pos) >= 0 && pos.col == regmatch.endpos[0].col)
-	    result = TRUE;
+	    /* one char width */
+	    if (!result && inc(&pos) >= 0 && pos.col == regmatch.endpos[0].col)
+		result = TRUE;
+	}
     }
 
     called_emsg |= save_called_emsg;
diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak
index 4e4f43b..1936798 100644
--- a/src/testdir/Make_all.mak
+++ b/src/testdir/Make_all.mak
@@ -171,6 +171,7 @@
 	    test_cscope.res \
 	    test_digraph.res \
 	    test_farsi.res \
+	    test_gn.res \
 	    test_hardcopy.res \
 	    test_history.res \
 	    test_increment.res \
diff --git a/src/testdir/test53.in b/src/testdir/test53.in
index 7c35b2e..b5f97f2 100644
--- a/src/testdir/test53.in
+++ b/src/testdir/test53.in
@@ -4,8 +4,6 @@
 
 Also test match() and matchstr()
 
-Also test the gn command and repeating it.
-
 STARTTEST
 :so small.vim
 /^start:/
@@ -53,35 +51,6 @@
 :put =match('abc', '\zs', 2, 1) " 2
 :put =match('abc', '\zs', 3, 1) " 3
 :put =match('abc', '\zs', 4, 1) " -1
-/^foobar
-gncsearchmatch/one\_s*two\_s
-:1
-gnd
-/[a]bcdx
-:1
-2gnd/join
-/$
-0gnd
-/\>\zs
-0gnd/^
-gnd$h/\zs
-gnd/[u]niquepattern/s
-vlgnd
-/mother
-:set selection=exclusive
-$cgNmongoose/i
-cgnj
-:" Make sure there is no other match y uppercase.
-/x59
-gggnd
-:" test repeating dgn
-/^Johnny
-ggdgn.
-:" test repeating gUgn
-/^Depp
-gggUgn.
-gg/a:0\@!\zs\d\+
-nygnop
 :/^start:/,/^end:/wq! test.out
 ENDTEST
 
@@ -103,32 +72,4 @@
 </b>
 </begin>
 SEARCH:
-foobar
-one
-two
-abcdx | abcdx | abcdx
-join 
-lines
-zero width pattern
-delete first and last chars
-uniquepattern uniquepattern
-my very excellent mother just served us nachos
-for (i=0; i<=10; i++)
-a:10
-
-a:1
-
-a:20
-Y
-text
-Y
---1
-Johnny
---2
-Johnny
---3
-Depp
---4
-Depp
---5
 end:
diff --git a/src/testdir/test53.ok b/src/testdir/test53.ok
index 0520697..d57d86b 100644
--- a/src/testdir/test53.ok
+++ b/src/testdir/test53.ok
@@ -42,30 +42,4 @@
 3
 -1
 SEARCH:
-searchmatch
-abcdx |  | abcdx
-join lines
-zerowidth pattern
-elete first and last char
- uniquepattern
-my very excellent mongoose just served us nachos
-for (j=0; i<=10; i++)
-a:10
-
-a:1
-1
-
-a:20
-
-text
-Y
---1
-
---2
-
---3
-DEPP
---4
-DEPP
---5
 end:
diff --git a/src/testdir/test_gn.vim b/src/testdir/test_gn.vim
new file mode 100644
index 0000000..3eca99b
--- /dev/null
+++ b/src/testdir/test_gn.vim
@@ -0,0 +1,93 @@
+" Test for gn command
+
+func Test_gn_command()
+  noa new
+  " replace a single char by itsself quoted:
+  call setline('.', 'abc x def x ghi x jkl')
+  let @/='x'
+  exe "norm! cgn'x'\<esc>.."
+  call assert_equal("abc 'x' def 'x' ghi 'x' jkl", getline('.'))
+  sil! %d_
+  " simple search match
+  call setline('.', 'foobar')
+  let @/='foobar'
+  exe "norm! gncsearchmatch"
+  call assert_equal('searchmatch', getline('.'))
+  sil! %d _
+  " replace a multi-line match
+  call setline('.', ['', 'one', 'two'])
+  let @/='one\_s*two\_s'
+  exe "norm! gnceins\<CR>zwei"
+  call assert_equal(['','eins','zwei'], getline(1,'$'))
+  sil! %d _
+  " test count argument
+  call setline('.', ['', 'abcdx | abcdx | abcdx'])
+  let @/='[a]bcdx'
+  exe "norm! 2gnd"
+  call assert_equal(['','abcdx |  | abcdx'], getline(1,'$'))
+  sil! %d _
+  " join lines
+  call setline('.', ['join ', 'lines'])
+  let @/='$'
+  exe "norm! 0gnd"
+  call assert_equal(['join lines'], getline(1,'$'))
+  sil! %d _
+  " zero-width match
+  call setline('.', ['', 'zero width pattern'])
+  let @/='\>\zs'
+  exe "norm! 0gnd"
+  call assert_equal(['', 'zerowidth pattern'], getline(1,'$'))
+  sil! %d _
+  " delete first and last chars
+  call setline('.', ['delete first and last chars'])
+  let @/='^'
+  exe "norm! 0gnd$"
+  let @/='\zs'
+  exe "norm! gnd"
+  call assert_equal(['elete first and last char'], getline(1,'$'))
+  sil! %d _
+  " using visual mode
+  call setline('.', ['', 'uniquepattern uniquepattern'])
+  exe "norm! /[u]niquepattern/s\<cr>vlgnd"
+  call assert_equal(['', ' uniquepattern'], getline(1,'$'))
+  sil! %d _
+  " backwards search
+  call setline('.', ['my very excellent mother just served us nachos'])
+  let @/='mother'
+  exe "norm! $cgNmongoose"
+  call assert_equal(['my very excellent mongoose just served us nachos'], getline(1,'$'))
+  sil! %d _
+  " search for single char
+  call setline('.', ['','for (i=0; i<=10; i++)'])
+  let @/='i'
+  exe "norm! cgnj"
+  call assert_equal(['','for (j=0; i<=10; i++)'], getline(1,'$'))
+  sil! %d _
+  " search hex char
+  call setline('.', ['','Y'])
+  set noignorecase
+  let @/='\%x59'
+  exe "norm! gnd"
+  call assert_equal(['',''], getline(1,'$'))
+  sil! %d _
+  " test repeating gdn
+  call setline('.', ['', '1', 'Johnny', '2', 'Johnny', '3'])
+  let @/='Johnny'
+  exe "norm! dgn."
+  call assert_equal(['','1', '', '2', '', '3'], getline(1,'$'))
+  sil! %d _
+  " test repeating gUgn
+  call setline('.', ['', '1', 'Depp', '2', 'Depp', '3'])
+  let @/='Depp'
+  exe "norm! gUgn."
+  call assert_equal(['', '1', 'DEPP', '2', 'DEPP', '3'], getline(1,'$'))
+  sil! %d _
+  " test using look-ahead assertions
+  call setline('.', ['a:10', '', 'a:1', '', 'a:20'])
+  let @/='a:0\@!\zs\d\+'
+  exe "norm! 2nygno\<esc>p"
+  call assert_equal(['a:10', '', 'a:1', '1', '', 'a:20'], getline(1,'$'))
+  sil! %d _
+endfu
+
+" vim: tabstop=2 shiftwidth=0 expandtab
diff --git a/src/version.c b/src/version.c
index b15681b..233b6b5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -759,6 +759,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2100,
+/**/
     2099,
 /**/
     2098,
