diff --git a/plugins/cargo/.gitignore b/plugins/cargo/.gitignore
deleted file mode 100644
index 42d7ecdd691c3c2ed2e1c3af1395072c13e655f1..0000000000000000000000000000000000000000
--- a/plugins/cargo/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-_cargo
diff --git a/plugins/cargo/cargo.plugin.zsh b/plugins/cargo/cargo.plugin.zsh
index 95e63dd3c142bd4123620a1d816589cefa82f64f..7082d2d55712d6a4aafbd5c1e4700fab2d9b5928 100644
--- a/plugins/cargo/cargo.plugin.zsh
+++ b/plugins/cargo/cargo.plugin.zsh
@@ -1,4 +1,8 @@
 if (( $+commands[rustup] && $+commands[cargo] )); then
+  # remove old generated completion file
+  command rm -f "${0:A:h}/_cargo"
+
+  # generate new completion file
   ver="$(cargo --version)"
   ver_file="$ZSH_CACHE_DIR/cargo_version"
   comp_file="$ZSH_CACHE_DIR/completions/_cargo"
diff --git a/plugins/deno/.gitignore b/plugins/deno/.gitignore
deleted file mode 100644
index cba5b03e83173187d61097d12ce77ae3482fd1e4..0000000000000000000000000000000000000000
--- a/plugins/deno/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-_deno
diff --git a/plugins/deno/deno.plugin.zsh b/plugins/deno/deno.plugin.zsh
index e22c4e4c8621649ef859832f9f710f57e4c84e42..34adddc37eed93f365544a97fa483b1e492e322f 100644
--- a/plugins/deno/deno.plugin.zsh
+++ b/plugins/deno/deno.plugin.zsh
@@ -12,6 +12,9 @@ alias dup='deno upgrade'
 
 # COMPLETION FUNCTION
 if (( $+commands[deno] )); then
+  # remove old generated completion file
+  command rm -f "${0:A:h}/_deno"
+
   ver="$(deno --version)"
   ver_file="$ZSH_CACHE_DIR/deno_version"
   comp_file="$ZSH_CACHE_DIR/completions/_deno"
diff --git a/plugins/fnm/.gitignore b/plugins/fnm/.gitignore
deleted file mode 100644
index 0b2bc9ab701422af31912f511926e82f9379fdba..0000000000000000000000000000000000000000
--- a/plugins/fnm/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-_fnm
-
diff --git a/plugins/fnm/fnm.plugin.zsh b/plugins/fnm/fnm.plugin.zsh
index efb81a6fa658d6961e6ac6b53b955661ca7f863d..c161b27cd5056af8a9b3cbaea9edc3d4f3093e31 100644
--- a/plugins/fnm/fnm.plugin.zsh
+++ b/plugins/fnm/fnm.plugin.zsh
@@ -1,4 +1,7 @@
 if (( $+commands[fnm] )); then
+  # remove old generated completion file
+  command rm -f "${0:A:h}/_fnm"
+
   ver="$(fnm --version)"
   ver_file="$ZSH_CACHE_DIR/fnm_version"
   comp_file="$ZSH_CACHE_DIR/completions/_fnm"
diff --git a/plugins/gh/.gitignore b/plugins/gh/.gitignore
deleted file mode 100644
index fa1244ab5f4170c2cbe2956a50b294706b251b04..0000000000000000000000000000000000000000
--- a/plugins/gh/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-_gh
diff --git a/plugins/gh/gh.plugin.zsh b/plugins/gh/gh.plugin.zsh
index a346ccf6556ea25aa94b8cceae1aa461f9baf90a..3e4cdee5ea961e8f5acf2fbd18a477f21c77db20 100644
--- a/plugins/gh/gh.plugin.zsh
+++ b/plugins/gh/gh.plugin.zsh
@@ -1,5 +1,8 @@
 # Autocompletion for the GitHub CLI (gh).
 if (( $+commands[gh] )); then
+  # remove old generated completion file
+  command rm -f "${0:A:h}/_gh"
+
   ver="$(gh --version)"
   ver_file="$ZSH_CACHE_DIR/gh_version"
   comp_file="$ZSH_CACHE_DIR/completions/_gh"
diff --git a/plugins/rustup/.gitignore b/plugins/rustup/.gitignore
deleted file mode 100644
index ad38ae3bf5afdff6c794aefb26c6cb30894dff1b..0000000000000000000000000000000000000000
--- a/plugins/rustup/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-_rustup
diff --git a/plugins/rustup/rustup.plugin.zsh b/plugins/rustup/rustup.plugin.zsh
index 8740f255a76c3f4f94b3ac08f2c37dd9cda33158..c6efc1b132b8acf7a3dd21e6b4c6a3d69ad6d9eb 100644
--- a/plugins/rustup/rustup.plugin.zsh
+++ b/plugins/rustup/rustup.plugin.zsh
@@ -1,4 +1,7 @@
 if (( $+commands[rustup] )); then
+  # remove old generated completion file
+  command rm -f "${0:A:h}/_rustup"
+
   ver="$(rustup --version 2>/dev/null)"
   ver_file="$ZSH_CACHE_DIR/rustup_version"
   comp_file="$ZSH_CACHE_DIR/completions/_rustup"