diff --git a/src/misc2.c b/src/misc2.c
index cdff6ab..9e314c2 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -72,7 +72,7 @@
 }
 
 /*
- * Go to column "wcol", and add/insert white space as neccessary to get the
+ * Go to column "wcol", and add/insert white space as necessary to get the
  * cursor in that column.
  * The caller must have saved the cursor line for undo!
  */
@@ -137,7 +137,7 @@
 coladvance2(pos, addspaces, finetune, wcol)
     pos_T	*pos;
     int		addspaces;	/* change the text to achieve our goal? */
-    int		finetune;	/* change char offset for the excact column */
+    int		finetune;	/* change char offset for the exact column */
     colnr_T	wcol;		/* column to move to */
 {
 #endif
@@ -1994,7 +1994,7 @@
 
 /*
  * Shifted key terminal codes and their unshifted equivalent.
- * Don't add mouse codes here, they are handled seperately!
+ * Don't add mouse codes here, they are handled separately!
  */
 #define MOD_KEYS_ENTRY_SIZE 5
 
@@ -2825,7 +2825,7 @@
 #endif
 	    return mouse_table[i].pseudo_code;
 	}
-    return (int)KE_IGNORE;	    /* not recongnized, ignore it */
+    return (int)KE_IGNORE;	    /* not recognized, ignore it */
 }
 #endif /* FEAT_MOUSE */
 
@@ -3538,7 +3538,7 @@
 
 #ifdef FEAT_CRYPT
 /*
- * Optional encryption suypport.
+ * Optional encryption support.
  * Mohsin Ahmed, mosh@sasi.com, 98-09-24
  * Based on zip/crypt sources.
  *
@@ -3799,7 +3799,7 @@
 
 /*
  * We might have to manage several visited lists during a search.
- * This is expecially needed for the tags option. If tags is set to:
+ * This is especially needed for the tags option. If tags is set to:
  *      "./++/tags,./++/TAGS,++/tags"  (replace + with *)
  * So we have to do 3 searches:
  *   1) search from the current files directory downward for the file "tags"
@@ -3825,7 +3825,7 @@
 
 /*
  * '**' can be expanded to several directory levels.
- * Set the default maximium depth.
+ * Set the default maximum depth.
  */
 #define FF_MAX_STAR_STAR_EXPAND ((char_u)30)
 /*
@@ -4174,7 +4174,7 @@
 
 	/*
 	 * copy wc_path and add restricts to the '**' wildcard.
-	 * The octett after a '**' is used as a (binary) counter.
+	 * The octet after a '**' is used as a (binary) counter.
 	 * So '**3' is transposed to '**^C' ('^C' is ASCII value 3)
 	 * or '**76' is transposed to '**N'( 'N' is ASCII value 76).
 	 * For EBCDIC you get different character values.
@@ -4507,7 +4507,7 @@
 		    /*
 		     * Here we copy until the next path separator or the end of
 		     * the path. If we stop at a path separator, there is
-		     * still somthing else left. This is handled below by
+		     * still something else left. This is handled below by
 		     * pushing every directory returned from expand_wildcards()
 		     * on the stack again for further search.
 		     */
diff --git a/src/regexp.c b/src/regexp.c
index cfdbce7..bf0f67a 100644
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -128,7 +128,7 @@
  *		     |	    +---------------------------+		    |
  *		     +------------------------------------------------------+
  *
- * They all start with a BRANCH for "\|" alternaties, even when there is only
+ * They all start with a BRANCH for "\|" alternatives, even when there is only
  * one alternative.
  */
 
@@ -3110,7 +3110,7 @@
 
 /*
  * These variables are set when executing a regexp to speed up the execution.
- * Which ones are set depends on whethere a single-line or multi-line match is
+ * Which ones are set depends on whether a single-line or multi-line match is
  * done:
  *			single-line		multi-line
  * reg_match		&regmatch_T		NULL
@@ -5038,7 +5038,7 @@
 		reg_save(&(((regbehind_T *)rp) - 1)->save_after, &backpos);
 
 		/* start looking for a match with operand at the current
-		 * postion.  Go back one character until we find the
+		 * position.  Go back one character until we find the
 		 * result, hitting the start of the line or the previous
 		 * line (for multi-line matching).
 		 * Set behind_pos to where the match should end, BHPOS
@@ -6623,7 +6623,7 @@
 		    /* copy prefix */
 		    len = (int)(p - newsub);	/* not including ~ */
 		    mch_memmove(tmpsub, newsub, (size_t)len);
-		    /* interpretate tilde */
+		    /* interpret tilde */
 		    mch_memmove(tmpsub + len, reg_prev_sub, (size_t)prevlen);
 		    /* copy postfix */
 		    if (!magic)
@@ -6862,7 +6862,7 @@
 	{
 	    if (c == K_SPECIAL && src[0] != NUL && src[1] != NUL)
 	    {
-		/* Copy a specialy key as-is. */
+		/* Copy a special key as-is. */
 		if (copy)
 		{
 		    *dst++ = c;
@@ -7046,7 +7046,7 @@
 
 #ifdef FEAT_EVAL
 /*
- * Used for the submatch() function: get the string from tne n'th submatch in
+ * Used for the submatch() function: get the string from the n'th submatch in
  * allocated memory.
  * Returns NULL when not in a ":s" command and for a non-existing submatch.
  */
