diff --git a/src/buffer.c b/src/buffer.c
index c35477f..07b89e3 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -6077,10 +6077,10 @@
     int
 sign_in_group(signlist_T *sign, char_u *group)
 {
-    return ((group != NULL && STRCMP(group, "*") == 0) ||
-	    (group == NULL && sign->group == NULL) ||
-	    (group != NULL && sign->group != NULL &&
-				STRCMP(group, sign->group->sg_name) == 0));
+    return ((group != NULL && STRCMP(group, "*") == 0)
+	    || (group == NULL && sign->group == NULL)
+	    || (group != NULL && sign->group != NULL
+				 && STRCMP(group, sign->group->sg_name) == 0));
 }
 
 /*
@@ -6207,6 +6207,7 @@
     linenr_T
 buf_delsign(
     buf_T	*buf,		// buffer sign is stored in
+    linenr_T	atlnum,		// sign at this line, 0 - at any line
     int		id,		// sign id
     char_u	*group)		// sign group
 {
@@ -6220,7 +6221,9 @@
     for (sign = buf->b_signlist; sign != NULL; sign = next)
     {
 	next = sign->next;
-	if ((id == 0 || sign->id == id) && sign_in_group(sign, group))
+	if ((id == 0 || sign->id == id) &&
+		(atlnum == 0 || sign->lnum == atlnum) &&
+		sign_in_group(sign, group))
 
 	{
 	    *lastp = next;
@@ -6230,8 +6233,14 @@
 	    if (sign->group != NULL)
 		sign_group_unref(sign->group->sg_name);
 	    vim_free(sign);
+	    update_debug_sign(buf, lnum);
 	    // Check whether only one sign needs to be deleted
-	    if (group == NULL || (*group != '*' && id != 0))
+	    // If deleting a sign with a specific identifer in a particular
+	    // group or deleting any sign at a particular line number, delete
+	    // only one sign.
+	    if (group == NULL
+		    || (*group != '*' && id != 0)
+		    || (*group == '*' && atlnum != 0))
 		break;
 	}
 	else
@@ -6272,17 +6281,18 @@
 
 /*
  * Return the sign at line 'lnum' in buffer 'buf'. Returns NULL if a sign is
- * not found at the line.
+ * not found at the line. If 'groupname' is NULL, searches in the global group.
  */
     static signlist_T *
 buf_getsign_at_line(
     buf_T	*buf,		// buffer whose sign we are searching for
-    linenr_T	lnum)		// line number of sign
+    linenr_T	lnum,		// line number of sign
+    char_u	*groupname)	// sign group name
 {
     signlist_T	*sign;		// a sign in the signlist
 
     FOR_ALL_SIGNS_IN_BUF(buf, sign)
-	if (sign->lnum == lnum)
+	if (sign->lnum == lnum && sign_in_group(sign, groupname))
 	    return sign;
 
     return NULL;
@@ -6312,11 +6322,12 @@
     int
 buf_findsign_id(
     buf_T	*buf,		// buffer whose sign we are searching for
-    linenr_T	lnum)		// line number of sign
+    linenr_T	lnum,		// line number of sign
+    char_u	*groupname)	// sign group name
 {
     signlist_T	*sign;		// a sign in the signlist
 
-    sign = buf_getsign_at_line(buf, lnum);
+    sign = buf_getsign_at_line(buf, lnum, groupname);
     if (sign != NULL)
 	return sign->id;
 
@@ -6401,16 +6412,16 @@
 }
 
 /*
- * Delete all signs in all buffers.
+ * Delete all the signs in the specified group in all the buffers.
  */
     void
-buf_delete_all_signs(void)
+buf_delete_all_signs(char_u *groupname)
 {
     buf_T	*buf;		/* buffer we are checking for signs */
 
     FOR_ALL_BUFFERS(buf)
 	if (buf->b_signlist != NULL)
-	    buf_delete_signs(buf, (char_u *)"*");
+	    buf_delete_signs(buf, groupname);
 }
 
 /*
diff --git a/src/evalfunc.c b/src/evalfunc.c
index d94bf8d..13e6d6e 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -11600,12 +11600,12 @@
     {
 	// Delete the sign in all the buffers
 	FOR_ALL_BUFFERS(buf)
-	    if (sign_unplace(sign_id, group, buf) == OK)
+	    if (sign_unplace(sign_id, group, buf, 0) == OK)
 		rettv->vval.v_number = 0;
     }
     else
     {
-	if (sign_unplace(sign_id, group, buf) == OK)
+	if (sign_unplace(sign_id, group, buf, 0) == OK)
 	    rettv->vval.v_number = 0;
     }
     vim_free(group);
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 6a79451..b5ad3b3 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -7895,7 +7895,7 @@
  * Unplace the specified sign
  */
     int
-sign_unplace(int sign_id, char_u *sign_group, buf_T *buf)
+sign_unplace(int sign_id, char_u *sign_group, buf_T *buf, linenr_T atlnum)
 {
     if (sign_id == 0)
     {
@@ -7908,16 +7908,30 @@
 	linenr_T	lnum;
 
 	// Delete only the specified signs
-	lnum = buf_delsign(buf, sign_id, sign_group);
+	lnum = buf_delsign(buf, atlnum, sign_id, sign_group);
 	if (lnum == 0)
 	    return FAIL;
-	update_debug_sign(buf, lnum);
     }
 
     return OK;
 }
 
 /*
+ * Unplace the sign at the current cursor line.
+ */
+    static void
+sign_unplace_at_cursor(char_u *groupname)
+{
+    int		id = -1;
+
+    id = buf_findsign_id(curwin->w_buffer, curwin->w_cursor.lnum, groupname);
+    if (id > 0)
+	sign_unplace(id, groupname, curwin->w_buffer, curwin->w_cursor.lnum);
+    else
+	EMSG(_("E159: Missing sign number"));
+}
+
+/*
  * ":sign" command
  */
     void
@@ -8047,14 +8061,8 @@
 		sign_list_placed(NULL, NULL);
 	    }
 	    else if (idx == SIGNCMD_UNPLACE)
-	    {
 		/* ":sign unplace": remove placed sign at cursor */
-		id = buf_findsign_id(curwin->w_buffer, curwin->w_cursor.lnum);
-		if (id > 0)
-		    sign_unplace(id, NULL, curwin->w_buffer);
-		else
-		    EMSG(_("E159: Missing sign number"));
-	    }
+		sign_unplace_at_cursor(NULL);
 	    else
 		EMSG(_(e_argreq));
 	    return;
@@ -8063,7 +8071,7 @@
 	if (idx == SIGNCMD_UNPLACE && arg[0] == '*' && arg[1] == NUL)
 	{
 	    /* ":sign unplace *": remove all placed signs */
-	    buf_delete_all_signs();
+	    buf_delete_all_signs(NULL);
 	    return;
 	}
 
@@ -8084,7 +8092,7 @@
 		{
 		    /* ":sign unplace {id}": remove placed sign by number */
 		    FOR_ALL_BUFFERS(buf)
-			sign_unplace(id, NULL, buf);
+			sign_unplace(id, NULL, buf, 0);
 		    return;
 		}
 	    }
@@ -8183,7 +8191,8 @@
 	}
 	else if (idx == SIGNCMD_JUMP)
 	{
-	    /* ":sign jump {id} file={fname}" */
+	    // ":sign jump {id} file={fname}"
+	    // ":sign jump {id} group={group} file={fname}"
 	    if (lnum >= 0 || sign_name != NULL || buf == NULL)
 		EMSG(_(e_invarg));
 	    else if ((lnum = buf_findsign(buf, id, group)) > 0)
@@ -8225,7 +8234,7 @@
 	    {
 		if (buf != NULL)
 		    // ":sign unplace * file={fname}"
-		    sign_unplace(0, group, buf);
+		    sign_unplace(0, group, buf, 0);
 		else
 		    // ":sign unplace * group=*": remove all placed signs
 		    FOR_ALL_BUFFERS(buf)
@@ -8238,14 +8247,26 @@
 		    // ":sign unplace {id} file={fname}"
 		    // ":sign unplace {id} group={group} file={fname}"
 		    // ":sign unplace {id} group=* file={fname}"
-		    sign_unplace(id, group, buf);
+		    sign_unplace(id, group, buf, 0);
 		else
-		    // ":sign unplace {id} group={group}":
-		    // ":sign unplace {id} group=*":
-		    //     remove all placed signs in this group.
-		    FOR_ALL_BUFFERS(buf)
-			if (buf->b_signlist != NULL)
-			    sign_unplace(id, group, buf);
+		{
+		    if (id == -1)
+		    {
+			// ":sign unplace group={group}":
+			// ":sign unplace group=*":
+			// remove sign in the current line in specified group
+			sign_unplace_at_cursor(group);
+		    }
+		    else
+		    {
+			// ":sign unplace {id} group={group}":
+			// ":sign unplace {id} group=*":
+			//     remove all placed signs in this group.
+			FOR_ALL_BUFFERS(buf)
+			    if (buf->b_signlist != NULL)
+				sign_unplace(id, group, buf, 0);
+		    }
+		}
 	    }
 	}
 	    /* idx == SIGNCMD_PLACE */
@@ -8581,13 +8602,14 @@
 	{
 	    char *place_arg[] =
 	    {
-		"line=", "name=", "file=", "buffer=", NULL
+		"line=", "name=", "group=", "priority=", "file=",
+		"buffer=", NULL
 	    };
 	    return (char_u *)place_arg[idx];
 	}
     case EXP_UNPLACE:
 	{
-	    char *unplace_arg[] = { "file=", "buffer=", NULL };
+	    char *unplace_arg[] = { "group=", "file=", "buffer=", NULL };
 	    return (char_u *)unplace_arg[idx];
 	}
     case EXP_SIGN_NAMES:
diff --git a/src/netbeans.c b/src/netbeans.c
index 9b6b522..c8084df 100644
--- a/src/netbeans.c
+++ b/src/netbeans.c
@@ -1251,12 +1251,12 @@
 		    /* delete signs from the lines being deleted */
 		    for (i = del_from_lnum; i <= del_to_lnum; i++)
 		    {
-			int id = buf_findsign_id(buf->bufp, (linenr_T)i);
+			int id = buf_findsign_id(buf->bufp, (linenr_T)i, NULL);
 			if (id > 0)
 			{
 			    nbdebug(("    Deleting sign %d on line %d\n",
 								      id, i));
-			    buf_delsign(buf->bufp, id, NULL);
+			    buf_delsign(buf->bufp, 0, id, NULL);
 			}
 			else
 			{
diff --git a/src/proto/buffer.pro b/src/proto/buffer.pro
index 7566384..ecc8301 100644
--- a/src/proto/buffer.pro
+++ b/src/proto/buffer.pro
@@ -69,23 +69,21 @@
 void switch_to_win_for_buf(buf_T *buf, win_T **save_curwinp, tabpage_T **save_curtabp, bufref_T *save_curbuf);
 void restore_win_for_buf(win_T *save_curwin, tabpage_T *save_curtab, bufref_T *save_curbuf);
 int find_win_for_buf(buf_T *buf, win_T **wp, tabpage_T **tp);
-void buf_addsign(buf_T *buf, int id, char_u *group, int prio, linenr_T lnum, int typenr);
-linenr_T buf_change_sign_type(buf_T *buf, int markId, char_u *group, int typenr);
-int buf_getsigntype(buf_T *buf, linenr_T lnum, int type);
-linenr_T buf_delsign(buf_T *buf, int id, char_u *group);
-int buf_findsign(buf_T *buf, int id, char_u *group);
-#ifdef FEAT_SIGNS
 void init_signs(void);
 int sign_group_get_next_signid(buf_T *buf, char_u *groupname);
 int sign_in_group(signlist_T *sign, char_u *group);
 dict_T *sign_get_info(signlist_T *sign);
+void buf_addsign(buf_T *buf, int id, char_u *groupname, int prio, linenr_T lnum, int typenr);
+linenr_T buf_change_sign_type(buf_T *buf, int markId, char_u *group, int typenr);
+int buf_getsigntype(buf_T *buf, linenr_T lnum, int type);
+linenr_T buf_delsign(buf_T *buf, linenr_T atlnum, int id, char_u *group);
+int buf_findsign(buf_T *buf, int id, char_u *group);
 signlist_T *buf_getsign_with_id(buf_T *buf, int id, char_u *group);
-#endif
-int buf_findsign_id(buf_T *buf, linenr_T lnum);
+int buf_findsign_id(buf_T *buf, linenr_T lnum, char_u *groupname);
 int buf_findsigntype_id(buf_T *buf, linenr_T lnum, int typenr);
 int buf_signcount(buf_T *buf, linenr_T lnum);
 void buf_delete_signs(buf_T *buf, char_u *group);
-void buf_delete_all_signs(void);
+void buf_delete_all_signs(char_u *groupname);
 void sign_list_placed(buf_T *rbuf, char_u *sign_group);
 void sign_mark_adjust(linenr_T line1, linenr_T line2, long amount, long amount_after);
 void set_buflisted(int on);
diff --git a/src/proto/ex_cmds.pro b/src/proto/ex_cmds.pro
index 00d0217..0b9d687 100644
--- a/src/proto/ex_cmds.pro
+++ b/src/proto/ex_cmds.pro
@@ -54,24 +54,23 @@
 void ex_exusage(exarg_T *eap);
 void ex_viusage(exarg_T *eap);
 void ex_helptags(exarg_T *eap);
+int sign_define_by_name(char_u *name, char_u *icon, char_u *linehl, char_u *text, char_u *texthl);
+int sign_undefine_by_name(char_u *name);
+int sign_place(int *sign_id, char_u *sign_group, char_u *sign_name, buf_T *buf, linenr_T lnum, int prio);
+int sign_unplace(int sign_id, char_u *sign_group, buf_T *buf, linenr_T atlnum);
 void ex_sign(exarg_T *eap);
+void sign_getlist(char_u *name, list_T *retlist);
+void sign_get_placed(buf_T *buf, linenr_T lnum, int sign_id, char_u *sign_group, list_T *retlist);
 void sign_gui_started(void);
 int sign_get_attr(int typenr, int line);
 char_u *sign_get_text(int typenr);
 void *sign_get_image(int typenr);
 char_u *sign_typenr2name(int typenr);
 void free_signs(void);
-void free_signs(void);
 char_u *get_sign_name(expand_T *xp, int idx);
 void set_context_in_sign_cmd(expand_T *xp, char_u *arg);
 void ex_smile(exarg_T *eap);
 void ex_drop(exarg_T *eap);
 char_u *skip_vimgrep_pat(char_u *p, char_u **s, int *flags);
 void ex_oldfiles(exarg_T *eap);
-int sign_define_by_name(char_u *name, char_u *icon, char_u *linehl, char_u *text, char_u *texthl);
-int sign_undefine_by_name(char_u *name);
-void sign_getlist(char_u *name, list_T *retlist);
-int sign_place(int *sign_id, char_u *group, char_u *sign_name, buf_T *buf, linenr_T lnum, int prio);
-int sign_unplace(int id, char_u *group, buf_T *buf);
-void sign_get_placed(buf_T *buf, linenr_T lnum, int id, char_u *group, list_T *retlist);
 /* vim: set ft=c : */
diff --git a/src/testdir/test_signs.vim b/src/testdir/test_signs.vim
index 57e2831..5917fc6 100644
--- a/src/testdir/test_signs.vim
+++ b/src/testdir/test_signs.vim
@@ -28,8 +28,8 @@
   let a=execute('sign list Sign1')
   call assert_equal("\nsign Sign1 text=x ", a)
 
-  " Split the window to the bottom to verify sign jump will stay in the current window
-  " if the buffer is displayed there.
+  " Split the window to the bottom to verify sign jump will stay in the
+  " current window if the buffer is displayed there.
   let bn = bufnr('%')
   let wn = winnr()
   exe 'sign place 41 line=3 name=Sign1 buffer=' . bn 
@@ -211,19 +211,20 @@
   call assert_equal('"sign undefine Sign1 Sign2', @:)
 
   call feedkeys(":sign place 1 \<C-A>\<C-B>\"\<CR>", 'tx')
-  call assert_equal('"sign place 1 buffer= file= line= name=', @:)
+  call assert_equal('"sign place 1 buffer= file= group= line= name= priority=',
+	      \ @:)
 
   call feedkeys(":sign place 1 name=\<C-A>\<C-B>\"\<CR>", 'tx')
   call assert_equal('"sign place 1 name=Sign1 Sign2', @:)
 
   call feedkeys(":sign unplace 1 \<C-A>\<C-B>\"\<CR>", 'tx')
-  call assert_equal('"sign unplace 1 buffer= file=', @:)
+  call assert_equal('"sign unplace 1 buffer= file= group=', @:)
 
   call feedkeys(":sign list \<C-A>\<C-B>\"\<CR>", 'tx')
   call assert_equal('"sign list Sign1 Sign2', @:)
 
   call feedkeys(":sign jump 1 \<C-A>\<C-B>\"\<CR>", 'tx')
-  call assert_equal('"sign jump 1 buffer= file=', @:)
+  call assert_equal('"sign jump 1 buffer= file= group=', @:)
 
   sign undefine Sign1
   sign undefine Sign2
@@ -449,7 +450,6 @@
 
   edit Xsign
   let bnum = bufnr('%')
-  let fname = fnamemodify('Xsign', ':p')
 
   " Error case
   call assert_fails("call sign_place(5, [], 'sign1', 'Xsign',
@@ -466,6 +466,10 @@
   let s = sign_getplaced('Xsign')
   call assert_equal(1, len(s[0].signs))
   call assert_equal(s[0].signs[0].group, '')
+  let s = sign_getplaced(bnum, {'group' : ''})
+  call assert_equal([{'id' : 5, 'group' : '', 'name' : 'sign1', 'lnum' : 10,
+	      \ 'priority' : 10}], s[0].signs)
+  call assert_equal(1, len(s[0].signs))
   let s = sign_getplaced(bnum, {'group' : 'g2'})
   call assert_equal('g2', s[0].signs[0].group)
   let s = sign_getplaced(bnum, {'group' : 'g3'})
@@ -584,126 +588,75 @@
   sign place 5 group=g1 line=10 name=sign1 file=Xsign
   sign place 5 group=g2 line=10 name=sign1 file=Xsign
 
-  " Test for :sign place group={group} file={fname}
+  " Tests for the ':sign place' command
+
+  " :sign place file={fname}
   let a = execute('sign place file=Xsign')
   call assert_equal("\n--- Signs ---\nSigns for Xsign:\n    line=10  id=5  name=sign1 priority=10\n", a)
 
+  " :sign place group={group} file={fname}
   let a = execute('sign place group=g2 file=Xsign')
   call assert_equal("\n--- Signs ---\nSigns for Xsign:\n    line=10  id=5  group=g2  name=sign1 priority=10\n", a)
 
+  " :sign place group=* file={fname}
   let a = execute('sign place group=* file=Xsign')
   call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
 	      \ "    line=10  id=5  group=g2  name=sign1 priority=10\n" .
 	      \ "    line=10  id=5  group=g1  name=sign1 priority=10\n" .
 	      \ "    line=10  id=5  name=sign1 priority=10\n", a)
 
+  " Error case: non-existing group
   let a = execute('sign place group=xyz file=Xsign')
   call assert_equal("\n--- Signs ---\nSigns for Xsign:\n", a)
 
   call sign_unplace('*')
-
-  " Test for :sign place group={group} buffer={nr}
   let bnum = bufnr('Xsign')
   exe 'sign place 5 line=10 name=sign1 buffer=' . bnum
   exe 'sign place 5 group=g1 line=11 name=sign1 buffer=' . bnum
   exe 'sign place 5 group=g2 line=12 name=sign1 buffer=' . bnum
 
+  " :sign place buffer={fname}
   let a = execute('sign place buffer=' . bnum)
   call assert_equal("\n--- Signs ---\nSigns for Xsign:\n    line=10  id=5  name=sign1 priority=10\n", a)
 
+  " :sign place group={group} buffer={fname}
   let a = execute('sign place group=g2 buffer=' . bnum)
   call assert_equal("\n--- Signs ---\nSigns for Xsign:\n    line=12  id=5  group=g2  name=sign1 priority=10\n", a)
 
+  " :sign place group=* buffer={fname}
   let a = execute('sign place group=* buffer=' . bnum)
   call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
 	      \ "    line=10  id=5  name=sign1 priority=10\n" .
 	      \ "    line=11  id=5  group=g1  name=sign1 priority=10\n" .
 	      \ "    line=12  id=5  group=g2  name=sign1 priority=10\n", a)
 
+  " Error case: non-existing group
   let a = execute('sign place group=xyz buffer=' . bnum)
   call assert_equal("\n--- Signs ---\nSigns for Xsign:\n", a)
 
+  " :sign place
+  let a = execute('sign place')
+  call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
+	      \ "    line=10  id=5  name=sign1 priority=10\n", a)
+
+  " :sign place group={group}
+  let a = execute('sign place group=g1')
+  call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
+	      \ "    line=11  id=5  group=g1  name=sign1 priority=10\n", a)
+
+  " :sign place group=*
   let a = execute('sign place group=*')
   call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
 	      \ "    line=10  id=5  name=sign1 priority=10\n" .
 	      \ "    line=11  id=5  group=g1  name=sign1 priority=10\n" .
 	      \ "    line=12  id=5  group=g2  name=sign1 priority=10\n", a)
 
-  " Test for :sign unplace
-  sign unplace 5 group=g2 file=Xsign
-  call assert_equal([], sign_getplaced(bnum, {'group' : 'g2'})[0].signs)
-
-  exe 'sign unplace 5 group=g1 buffer=' . bnum
-  call assert_equal([], sign_getplaced(bnum, {'group' : 'g1'})[0].signs)
-
-  sign unplace 5 group=xy file=Xsign
-  call assert_equal(1, len(sign_getplaced(bnum, {'group' : '*'})[0].signs))
-
-  " Test for removing all the signs. Place the signs again for this test
-  sign place 5 group=g1 line=11 name=sign1 file=Xsign
-  sign place 5 group=g2 line=12 name=sign1 file=Xsign
-  sign place 6 line=20 name=sign1 file=Xsign
-  sign place 6 group=g1 line=21 name=sign1 file=Xsign
-  sign place 6 group=g2 line=22 name=sign1 file=Xsign
-  sign unplace 5 group=* file=Xsign
-  let a = execute('sign place group=*')
-  call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
-	      \ "    line=20  id=6  name=sign1 priority=10\n" .
-	      \ "    line=21  id=6  group=g1  name=sign1 priority=10\n" .
-	      \ "    line=22  id=6  group=g2  name=sign1 priority=10\n", a)
-
-  " Remove all the signs from the global group
-  sign unplace * file=Xsign
-  let a = execute('sign place group=*')
-  call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
-	      \ "    line=21  id=6  group=g1  name=sign1 priority=10\n" .
-	      \ "    line=22  id=6  group=g2  name=sign1 priority=10\n", a)
-
-  " Remove all the signs from a particular group
-  sign place 5 line=10 name=sign1 file=Xsign
-  sign place 5 group=g1 line=11 name=sign1 file=Xsign
-  sign place 5 group=g2 line=12 name=sign1 file=Xsign
-  sign unplace * group=g1 file=Xsign
-  let a = execute('sign place group=*')
-  call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
-	      \ "    line=10  id=5  name=sign1 priority=10\n" .
-	      \ "    line=12  id=5  group=g2  name=sign1 priority=10\n" .
-	      \ "    line=22  id=6  group=g2  name=sign1 priority=10\n", a)
-
-  " Remove all the signs from all the groups in a file
-  sign place 5 group=g1 line=11 name=sign1 file=Xsign
-  sign place 6 line=20 name=sign1 file=Xsign
-  sign place 6 group=g1 line=21 name=sign1 file=Xsign
-  sign unplace * group=* file=Xsign
-  let a = execute('sign place group=*')
-  call assert_equal("\n--- Signs ---\n", a)
-
-  " Remove a particular sign id in a group from all the files
-  sign place 5 group=g1 line=11 name=sign1 file=Xsign
-  sign unplace 5 group=g1
-  let a = execute('sign place group=*')
-  call assert_equal("\n--- Signs ---\n", a)
-
-  " Remove a particular sign id in all the groups from all the files
-  sign place 5 line=10 name=sign1 file=Xsign
-  sign place 5 group=g1 line=11 name=sign1 file=Xsign
-  sign place 5 group=g2 line=12 name=sign1 file=Xsign
-  sign place 6 line=20 name=sign1 file=Xsign
-  sign place 6 group=g1 line=21 name=sign1 file=Xsign
-  sign place 6 group=g2 line=22 name=sign1 file=Xsign
-  sign unplace 5 group=*
-  let a = execute('sign place group=*')
-  call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
-	      \ "    line=20  id=6  name=sign1 priority=10\n" .
-	      \ "    line=21  id=6  group=g1  name=sign1 priority=10\n" .
-	      \ "    line=22  id=6  group=g2  name=sign1 priority=10\n", a)
-
-  " Remove all the signs from all the groups in all the files
-  sign place 5 line=10 name=sign1 file=Xsign
-  sign place 5 group=g1 line=11 name=sign1 file=Xsign
-  sign unplace * group=*
-  let a = execute('sign place group=*')
-  call assert_equal("\n--- Signs ---\n", a)
+  " Test for ':sign jump' command with groups
+  sign jump 5 group=g1 file=Xsign
+  call assert_equal(11, line('.'))
+  call assert_equal('Xsign', bufname(''))
+  sign jump 5 group=g2 file=Xsign
+  call assert_equal(12, line('.'))
 
   " Error cases
   call assert_fails("sign place 3 group= name=sign1 buffer=" . bnum, 'E474:')
@@ -714,6 +667,357 @@
   enew  | only
 endfunc
 
+" Place signs used for ":sign unplace" command test
+func Place_signs_for_test()
+  call sign_unplace('*')
+
+  sign place 3 line=10 name=sign1 file=Xsign1
+  sign place 3 group=g1 line=11 name=sign1 file=Xsign1
+  sign place 3 group=g2 line=12 name=sign1 file=Xsign1
+  sign place 4 line=15 name=sign1 file=Xsign1
+  sign place 4 group=g1 line=16 name=sign1 file=Xsign1
+  sign place 4 group=g2 line=17 name=sign1 file=Xsign1
+  sign place 5 line=20 name=sign1 file=Xsign2
+  sign place 5 group=g1 line=21 name=sign1 file=Xsign2
+  sign place 5 group=g2 line=22 name=sign1 file=Xsign2
+  sign place 6 line=25 name=sign1 file=Xsign2
+  sign place 6 group=g1 line=26 name=sign1 file=Xsign2
+  sign place 6 group=g2 line=27 name=sign1 file=Xsign2
+endfunc
+
+" Place multiple signs in a single line for test
+func Place_signs_at_line_for_test()
+  call sign_unplace('*')
+  sign place 3 line=13 name=sign1 file=Xsign1
+  sign place 3 group=g1 line=13 name=sign1 file=Xsign1
+  sign place 3 group=g2 line=13 name=sign1 file=Xsign1
+  sign place 4 line=13 name=sign1 file=Xsign1
+  sign place 4 group=g1 line=13 name=sign1 file=Xsign1
+  sign place 4 group=g2 line=13 name=sign1 file=Xsign1
+endfunc
+
+" Tests for the ':sign unplace' command
+func Test_sign_unplace()
+  enew | only
+  " Remove all the signs
+  call sign_unplace('*')
+  call sign_undefine()
+
+  " Create two files and define signs
+  call writefile(repeat(["Sun is shining"], 30), "Xsign1")
+  call writefile(repeat(["It is beautiful"], 30), "Xsign2")
+
+  let attr = {'text' : '=>', 'linehl' : 'Search', 'texthl' : 'Error'}
+  call sign_define("sign1", attr)
+
+  edit Xsign1
+  let bnum1 = bufnr('%')
+  split Xsign2
+  let bnum2 = bufnr('%')
+
+  let signs1 = [{'id' : 3, 'name' : 'sign1', 'lnum' : 10, 'group' : '',
+	      \ 'priority' : 10},
+	      \ {'id' : 3, 'name' : 'sign1', 'lnum' : 11, 'group' : 'g1',
+	      \ 'priority' : 10},
+	      \ {'id' : 3, 'name' : 'sign1', 'lnum' : 12, 'group' : 'g2',
+	      \ 'priority' : 10},
+	      \ {'id' : 4, 'name' : 'sign1', 'lnum' : 15, 'group' : '',
+	      \ 'priority' : 10},
+	      \ {'id' : 4, 'name' : 'sign1', 'lnum' : 16, 'group' : 'g1',
+	      \ 'priority' : 10},
+	      \ {'id' : 4, 'name' : 'sign1', 'lnum' : 17, 'group' : 'g2',
+	      \ 'priority' : 10},]
+  let signs2 = [{'id' : 5, 'name' : 'sign1', 'lnum' : 20, 'group' : '',
+	      \ 'priority' : 10},
+	      \ {'id' : 5, 'name' : 'sign1', 'lnum' : 21, 'group' : 'g1',
+	      \ 'priority' : 10},
+	      \ {'id' : 5, 'name' : 'sign1', 'lnum' : 22, 'group' : 'g2',
+	      \ 'priority' : 10},
+	      \ {'id' : 6, 'name' : 'sign1', 'lnum' : 25, 'group' : '',
+	      \ 'priority' : 10},
+	      \ {'id' : 6, 'name' : 'sign1', 'lnum' : 26, 'group' : 'g1',
+	      \ 'priority' : 10},
+	      \ {'id' : 6, 'name' : 'sign1', 'lnum' : 27, 'group' : 'g2',
+	      \ 'priority' : 10},]
+
+  " Test for :sign unplace {id} file={fname}
+  call Place_signs_for_test()
+  sign unplace 3 file=Xsign1
+  sign unplace 6 file=Xsign2
+  call assert_equal(
+	      \ filter(copy(signs1),
+	      \     {idx, val -> val.id != 3 || val.group != ''}),
+	      \ sign_getplaced('Xsign1', {'group' : '*'})[0].signs)
+  call assert_equal(
+	      \ filter(copy(signs2),
+	      \     {idx, val -> val.id != 6 || val.group != ''}),
+	      \ sign_getplaced('Xsign2', {'group' : '*'})[0].signs)
+
+  " Test for :sign unplace {id} group={group} file={fname}
+  call Place_signs_for_test()
+  sign unplace 4 group=g1 file=Xsign1
+  sign unplace 5 group=g2 file=Xsign2
+  call assert_equal(
+	      \ filter(copy(signs1),
+	      \     {idx, val -> val.id != 4 || val.group != 'g1'}),
+	      \ sign_getplaced('Xsign1', {'group' : '*'})[0].signs)
+  call assert_equal(
+	      \ filter(copy(signs2),
+	      \     {idx, val -> val.id != 5 || val.group != 'g2'}),
+	      \ sign_getplaced('Xsign2', {'group' : '*'})[0].signs)
+
+  " Test for :sign unplace {id} group=* file={fname}
+  call Place_signs_for_test()
+  sign unplace 3 group=* file=Xsign1
+  sign unplace 6 group=* file=Xsign2
+  call assert_equal(
+	      \ filter(copy(signs1),
+	      \     {idx, val -> val.id != 3}),
+	      \ sign_getplaced('Xsign1', {'group' : '*'})[0].signs)
+  call assert_equal(
+	      \ filter(copy(signs2),
+	      \     {idx, val -> val.id != 6}),
+	      \ sign_getplaced('Xsign2', {'group' : '*'})[0].signs)
+
+  " Test for :sign unplace * file={fname}
+  call Place_signs_for_test()
+  sign unplace * file=Xsign1
+  call assert_equal(
+	      \ filter(copy(signs1),
+	      \     {idx, val -> val.group != ''}),
+	      \ sign_getplaced('Xsign1', {'group' : '*'})[0].signs)
+  call assert_equal(signs2, sign_getplaced('Xsign2', {'group' : '*'})[0].signs)
+
+  " Test for :sign unplace * group={group} file={fname}
+  call Place_signs_for_test()
+  sign unplace * group=g1 file=Xsign1
+  sign unplace * group=g2 file=Xsign2
+  call assert_equal(
+	      \ filter(copy(signs1),
+	      \     {idx, val -> val.group != 'g1'}),
+	      \ sign_getplaced('Xsign1', {'group' : '*'})[0].signs)
+  call assert_equal(
+	      \ filter(copy(signs2),
+	      \     {idx, val -> val.group != 'g2'}),
+	      \ sign_getplaced('Xsign2', {'group' : '*'})[0].signs)
+
+  " Test for :sign unplace * group=* file={fname}
+  call Place_signs_for_test()
+  sign unplace * group=* file=Xsign2
+  call assert_equal(signs1, sign_getplaced('Xsign1', {'group' : '*'})[0].signs)
+  call assert_equal([], sign_getplaced('Xsign2', {'group' : '*'})[0].signs)
+
+  " Test for :sign unplace {id} buffer={nr}
+  call Place_signs_for_test()
+  exe 'sign unplace 3 buffer=' . bnum1
+  exe 'sign unplace 6 buffer=' . bnum2
+  call assert_equal(
+	      \ filter(copy(signs1),
+	      \     {idx, val -> val.id != 3 || val.group != ''}),
+	      \ sign_getplaced(bnum1, {'group' : '*'})[0].signs)
+  call assert_equal(
+	      \ filter(copy(signs2),
+	      \     {idx, val -> val.id != 6 || val.group != ''}),
+	      \ sign_getplaced(bnum2, {'group' : '*'})[0].signs)
+
+  " Test for :sign unplace {id} group={group} buffer={nr}
+  call Place_signs_for_test()
+  exe 'sign unplace 4 group=g1 buffer=' . bnum1
+  exe 'sign unplace 5 group=g2 buffer=' . bnum2
+  call assert_equal(
+	      \ filter(copy(signs1),
+	      \     {idx, val -> val.id != 4 || val.group != 'g1'}),
+	      \ sign_getplaced(bnum1, {'group' : '*'})[0].signs)
+  call assert_equal(
+	      \ filter(copy(signs2),
+	      \     {idx, val -> val.id != 5 || val.group != 'g2'}),
+	      \ sign_getplaced(bnum2, {'group' : '*'})[0].signs)
+
+  " Test for :sign unplace {id} group=* buffer={nr}
+  call Place_signs_for_test()
+  exe 'sign unplace 3 group=* buffer=' . bnum1
+  exe 'sign unplace 6 group=* buffer=' . bnum2
+  call assert_equal(
+	      \ filter(copy(signs1),
+	      \     {idx, val -> val.id != 3}),
+	      \ sign_getplaced(bnum1, {'group' : '*'})[0].signs)
+  call assert_equal(
+	      \ filter(copy(signs2),
+	      \     {idx, val -> val.id != 6}),
+	      \ sign_getplaced(bnum2, {'group' : '*'})[0].signs)
+
+  " Test for :sign unplace * buffer={nr}
+  call Place_signs_for_test()
+  exe 'sign unplace * buffer=' . bnum1
+  call assert_equal(
+	      \ filter(copy(signs1),
+	      \     {idx, val -> val.group != ''}),
+	      \ sign_getplaced(bnum1, {'group' : '*'})[0].signs)
+  call assert_equal(signs2, sign_getplaced(bnum2, {'group' : '*'})[0].signs)
+
+  " Test for :sign unplace * group={group} buffer={nr}
+  call Place_signs_for_test()
+  exe 'sign unplace * group=g1 buffer=' . bnum1
+  exe 'sign unplace * group=g2 buffer=' . bnum2
+  call assert_equal(
+	      \ filter(copy(signs1),
+	      \     {idx, val -> val.group != 'g1'}),
+	      \ sign_getplaced(bnum1, {'group' : '*'})[0].signs)
+  call assert_equal(
+	      \ filter(copy(signs2),
+	      \     {idx, val -> val.group != 'g2'}),
+	      \ sign_getplaced(bnum2, {'group' : '*'})[0].signs)
+
+  " Test for :sign unplace * group=* buffer={nr}
+  call Place_signs_for_test()
+  exe 'sign unplace * group=* buffer=' . bnum2
+  call assert_equal(signs1, sign_getplaced(bnum1, {'group' : '*'})[0].signs)
+  call assert_equal([], sign_getplaced(bnum2, {'group' : '*'})[0].signs)
+
+  " Test for :sign unplace {id}
+  call Place_signs_for_test()
+  sign unplace 4
+  sign unplace 6
+  call assert_equal(
+	      \ filter(copy(signs1),
+	      \     {idx, val -> val.id != 4 || val.group != ''}),
+	      \ sign_getplaced('Xsign1', {'group' : '*'})[0].signs)
+  call assert_equal(
+	      \ filter(copy(signs2),
+	      \     {idx, val -> val.id != 6 || val.group != ''}),
+	      \ sign_getplaced('Xsign2', {'group' : '*'})[0].signs)
+
+  " Test for :sign unplace {id} group={group}
+  call Place_signs_for_test()
+  sign unplace 4 group=g1
+  sign unplace 6 group=g2
+  call assert_equal(
+	      \ filter(copy(signs1),
+	      \     {idx, val -> val.id != 4 || val.group != 'g1'}),
+	      \ sign_getplaced('Xsign1', {'group' : '*'})[0].signs)
+  call assert_equal(
+	      \ filter(copy(signs2),
+	      \     {idx, val -> val.id != 6 || val.group != 'g2'}),
+	      \ sign_getplaced('Xsign2', {'group' : '*'})[0].signs)
+
+  " Test for :sign unplace {id} group=*
+  call Place_signs_for_test()
+  sign unplace 3 group=*
+  sign unplace 5 group=*
+  call assert_equal(
+	      \ filter(copy(signs1),
+	      \     {idx, val -> val.id != 3}),
+	      \ sign_getplaced('Xsign1', {'group' : '*'})[0].signs)
+  call assert_equal(
+	      \ filter(copy(signs2),
+	      \     {idx, val -> val.id != 5}),
+	      \ sign_getplaced('Xsign2', {'group' : '*'})[0].signs)
+
+  " Test for :sign unplace *
+  call Place_signs_for_test()
+  sign unplace *
+  call assert_equal(
+	      \ filter(copy(signs1),
+	      \     {idx, val -> val.group != ''}),
+	      \ sign_getplaced('Xsign1', {'group' : '*'})[0].signs)
+  call assert_equal(
+	      \ filter(copy(signs2),
+	      \     {idx, val -> val.group != ''}),
+	      \ sign_getplaced('Xsign2', {'group' : '*'})[0].signs)
+
+  " Test for :sign unplace * group={group}
+  call Place_signs_for_test()
+  sign unplace * group=g1
+  call assert_equal(
+	      \ filter(copy(signs1),
+	      \     {idx, val -> val.group != 'g1'}),
+	      \ sign_getplaced('Xsign1', {'group' : '*'})[0].signs)
+  call assert_equal(
+	      \ filter(copy(signs2),
+	      \     {idx, val -> val.group != 'g1'}),
+	      \ sign_getplaced('Xsign2', {'group' : '*'})[0].signs)
+
+  " Test for :sign unplace * group=*
+  call Place_signs_for_test()
+  sign unplace * group=*
+  call assert_equal([], sign_getplaced('Xsign1', {'group' : '*'})[0].signs)
+  call assert_equal([], sign_getplaced('Xsign2', {'group' : '*'})[0].signs)
+
+  " Negative test cases
+  call Place_signs_for_test()
+  sign unplace 3 group=xy file=Xsign1
+  sign unplace * group=xy file=Xsign1
+  silent! sign unplace * group=* file=FileNotPresent
+  call assert_equal(signs1, sign_getplaced('Xsign1', {'group' : '*'})[0].signs)
+  call assert_equal(signs2, sign_getplaced('Xsign2', {'group' : '*'})[0].signs)
+
+  " Tests for removing sign at the current cursor position
+
+  " Test for ':sign unplace'
+  let signs1 = [{'id' : 4, 'name' : 'sign1', 'lnum' : 13, 'group' : 'g2',
+	      \ 'priority' : 10},
+	      \ {'id' : 4, 'name' : 'sign1', 'lnum' : 13, 'group' : 'g1',
+	      \ 'priority' : 10},
+	      \ {'id' : 4, 'name' : 'sign1', 'lnum' : 13, 'group' : '',
+	      \ 'priority' : 10},
+	      \ {'id' : 3, 'name' : 'sign1', 'lnum' : 13, 'group' : 'g2',
+	      \ 'priority' : 10},
+	      \ {'id' : 3, 'name' : 'sign1', 'lnum' : 13, 'group' : 'g1',
+	      \ 'priority' : 10},
+	      \ {'id' : 3, 'name' : 'sign1', 'lnum' : 13, 'group' : '',
+	      \ 'priority' : 10},]
+  exe bufwinnr('Xsign1') . 'wincmd w'
+  call cursor(13, 1)
+
+  " Should remove only one sign in the global group
+  call Place_signs_at_line_for_test()
+  sign unplace
+  call assert_equal(
+	      \ filter(copy(signs1),
+	      \     {idx, val -> val.id != 4 || val.group != ''}),
+	      \ sign_getplaced('Xsign1', {'group' : '*'})[0].signs)
+  " Should remove the second sign in the global group
+  sign unplace
+  call assert_equal(
+	      \ filter(copy(signs1),
+	      \     {idx, val -> val.group != ''}),
+	      \ sign_getplaced('Xsign1', {'group' : '*'})[0].signs)
+
+  " Test for ':sign unplace group={group}'
+  call Place_signs_at_line_for_test()
+  " Should remove only one sign in group g1
+  sign unplace group=g1
+  call assert_equal(
+	      \ filter(copy(signs1),
+	      \     {idx, val -> val.id != 4 || val.group != 'g1'}),
+	      \ sign_getplaced('Xsign1', {'group' : '*'})[0].signs)
+  sign unplace group=g2
+  call assert_equal(
+	      \ filter(copy(signs1),
+	      \     {idx, val -> val.id != 4 || val.group == ''}),
+	      \ sign_getplaced('Xsign1', {'group' : '*'})[0].signs)
+
+  " Test for ':sign unplace group=*'
+  call Place_signs_at_line_for_test()
+  sign unplace group=*
+  sign unplace group=*
+  sign unplace group=*
+  call assert_equal(
+	      \ filter(copy(signs1),
+	      \     {idx, val -> val.id != 4}),
+	      \ sign_getplaced('Xsign1', {'group' : '*'})[0].signs)
+  sign unplace group=*
+  sign unplace group=*
+  sign unplace group=*
+  call assert_equal([], sign_getplaced('Xsign1', {'group' : '*'})[0].signs)
+
+  call sign_unplace('*')
+  call sign_undefine()
+  enew  | only
+  call delete("Xsign1")
+  call delete("Xsign2")
+endfunc
+
 " Tests for auto-generating the sign identifier
 func Test_sign_id_autogen()
   enew | only
@@ -762,7 +1066,6 @@
   " Place three signs with different priority in the same line
   call writefile(repeat(["Sun is shining"], 30), "Xsign")
   edit Xsign
-  let fname = fnamemodify('Xsign', ':p')
 
   call sign_place(1, 'g1', 'sign1', 'Xsign',
 	      \ {'lnum' : 11, 'priority' : 50})
diff --git a/src/version.c b/src/version.c
index 5852ce7..1772cfd 100644
--- a/src/version.c
+++ b/src/version.c
@@ -800,6 +800,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    658,
+/**/
     657,
 /**/
     656,
