diff --git a/src/insexpand.c b/src/insexpand.c
index 36228e9..21b53d1 100644
--- a/src/insexpand.c
+++ b/src/insexpand.c
@@ -4512,11 +4512,6 @@
     static int
 get_normal_compl_info(char_u *line, int startcol, colnr_T curs_col)
 {
-    int		i;
-    int		char_len;
-    size_t	fuzzy_len;
-    char_u	*fuzzy_pattern;
-
     if ((compl_cont_status & CONT_SOL) || ctrl_x_mode_path_defines())
     {
 	if (!compl_status_adding())
@@ -4630,39 +4625,6 @@
     }
 
     compl_patternlen = STRLEN(compl_pattern);
-
-    if ((get_cot_flags() & COT_FUZZYCOLLECT) != 0)
-    {
-	// Adjust size to avoid buffer overflow
-	fuzzy_len = (size_t)compl_length * 5 + 10;
-	// Allocate enough space
-	fuzzy_pattern = alloc(fuzzy_len);
-	if (fuzzy_pattern == NULL)
-	{
-	    compl_patternlen = 0;
-	    return FAIL;
-	}
-	// Use 'very magic' mode for simpler syntax
-	STRCPY(fuzzy_pattern, "\\v");
-	i = 2; // Start from 2 to skip "\\v"
-	while (i < compl_length + 2)
-	{
-	    // Append "\\k*" before each character
-	    STRNCAT(fuzzy_pattern, "\\k*", fuzzy_len - STRLEN(fuzzy_pattern) - 1);
-	    // Get length of current multi-byte character
-	    char_len = mb_ptr2len(compl_pattern + i);
-	    // Concatenate the character safely
-	    STRNCAT(fuzzy_pattern, compl_pattern + i, char_len);
-	    // Move to the next character
-	    i += char_len;
-	}
-	// Append "\\k*" at the end to match any characters after the pattern
-	STRNCAT(fuzzy_pattern, "\\k*", fuzzy_len - STRLEN(fuzzy_pattern) - 1);
-	vim_free(compl_pattern);
-	compl_pattern = fuzzy_pattern;
-	compl_patternlen = STRLEN(compl_pattern);
-    }
-
     return OK;
 }
 
diff --git a/src/option.h b/src/option.h
index 67d0b04..630d7bf 100644
--- a/src/option.h
+++ b/src/option.h
@@ -527,7 +527,6 @@
 #define COT_NOINSERT	    0x040   // FALSE: select & insert, TRUE: noinsert
 #define COT_NOSELECT	    0x080   // FALSE: select & insert, TRUE: noselect
 #define COT_FUZZY	    0x100   // TRUE: fuzzy match enabled
-#define COT_FUZZYCOLLECT    0x200   // TRUE: fuzzy collect enabled
 #ifdef BACKSLASH_IN_FILENAME
 EXTERN char_u	*p_csl;		// 'completeslash'
 #endif
diff --git a/src/optionstr.c b/src/optionstr.c
index 9adb77d..417f785 100644
--- a/src/optionstr.c
+++ b/src/optionstr.c
@@ -118,7 +118,7 @@
 				NULL};
 static char *(p_fcl_values[]) = {"all", NULL};
 #endif
-static char *(p_cot_values[]) = {"menu", "menuone", "longest", "preview", "popup", "popuphidden", "noinsert", "noselect", "fuzzy", "fuzzycollect", NULL};
+static char *(p_cot_values[]) = {"menu", "menuone", "longest", "preview", "popup", "popuphidden", "noinsert", "noselect", "fuzzy", NULL};
 #ifdef BACKSLASH_IN_FILENAME
 static char *(p_csl_values[]) = {"slash", "backslash", NULL};
 #endif
diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim
index 61c8ac7..48589ce 100644
--- a/src/testdir/test_ins_complete.vim
+++ b/src/testdir/test_ins_complete.vim
@@ -2586,37 +2586,6 @@
   call feedkeys("A\<C-X>\<C-N>\<Esc>0", 'tx!')
   call assert_equal('hello help hero h', getline('.'))
 
-  set completeopt=fuzzycollect
-  call setline(1, ['xyz  yxz  x'])
-  call feedkeys("A\<C-X>\<C-N>\<Esc>0", 'tx!')
-  call assert_equal('xyz  yxz  xyz', getline('.'))
-  " can fuzzy get yxz when use Ctrl-N twice
-  call setline(1, ['xyz  yxz  x'])
-  call feedkeys("A\<C-X>\<C-N>\<C-N>\<Esc>0", 'tx!')
-  call assert_equal('xyz  yxz  yxz', getline('.'))
-
-  call setline(1, ['one two o'])
-  call feedkeys("A\<C-X>\<C-N>\<Esc>0", 'tx!')
-  call assert_equal('one two one', getline('.'))
-
-  call setline(1, ['你好 你'])
-  call feedkeys("A\<C-X>\<C-N>\<Esc>0", 'tx!')
-  call assert_equal('你好 你好', getline('.'))
-  call setline(1, ['你的 我的 的'])
-  call feedkeys("A\<C-X>\<C-N>\<Esc>0", 'tx!')
-  call assert_equal('你的 我的 你的', getline('.'))
-  " can fuzzy get multiple-byte word when use Ctrl-N twice
-  call setline(1, ['你的 我的 的'])
-  call feedkeys("A\<C-X>\<C-N>\<C-N>\<Esc>0", 'tx!')
-  call assert_equal('你的 我的 我的', getline('.'))
-
-  "respect noinsert
-  set completeopt=fuzzycollect,menu,menuone,noinsert
-  call setline(1, ['one two o'])
-  call feedkeys("A\<C-X>\<C-N>", 'tx')
-  call assert_equal('one', g:word)
-  call assert_equal('one two o', getline('.'))
-
   " clean up
   set omnifunc=
   bw!
diff --git a/src/version.c b/src/version.c
index 1f334ca..dd5b254 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    549,
+/**/
     548,
 /**/
     547,
