diff --git a/src/farsi.c b/src/farsi.c
index 3da27c3..8728e85 100644
--- a/src/farsi.c
+++ b/src/farsi.c
@@ -655,7 +655,7 @@
 }
 
 /*
-** Change the charcter left to the cursor to a X or _X type
+** Change the character left to the cursor to a X or _X type
 */
 
     static void
@@ -724,7 +724,7 @@
 }
 
 /*
-** Change the charcter right to the cursor to a _X or _X_ type
+** Change the character right to the cursor to a _X or _X_ type
 */
 
     static void
diff --git a/src/farsi.h b/src/farsi.h
index 8dea422..ccd912e 100644
--- a/src/farsi.h
+++ b/src/farsi.h
@@ -7,7 +7,7 @@
  */
 
 /*
- * Farsi characters are catagorized into following types:
+ * Farsi characters are categorized into following types:
  *
  * TyA	(for capital letter representation)
  * TyB	(for types that look like _X  e.g. AYN)
diff --git a/src/fold.c b/src/fold.c
index a28a874..07b0748 100644
--- a/src/fold.c
+++ b/src/fold.c
@@ -2684,7 +2684,7 @@
 	{
 	    if (fp->fd_top + fp->fd_len > bot + 1)
 	    {
-		/* fold coninued below bot */
+		/* fold continued below bot */
 		if (getlevel == foldlevelMarker
 			|| getlevel == foldlevelExpr
 			|| getlevel == foldlevelSyntax)
@@ -2834,7 +2834,7 @@
  *	      3     5  6
  *
  * 1: not changed
- * 2: trunate to stop above "top"
+ * 2: truncate to stop above "top"
  * 3: split in two parts, one stops above "top", other starts below "bot".
  * 4: deleted
  * 5: made to start below "bot".
@@ -2900,8 +2900,8 @@
 
 /* foldMerge() {{{2 */
 /*
- * Merge two adjecent folds (and the nested ones in them).
- * This only works correctly when the folds are really adjecent!  Thus "fp1"
+ * Merge two adjacent folds (and the nested ones in them).
+ * This only works correctly when the folds are really adjacent!  Thus "fp1"
  * must end just above "fp2".
  * The resulting fold is "fp1", nested folds are moved from "fp2" to "fp1".
  * Fold entry "fp2" in "gap" is deleted.
diff --git a/src/misc1.c b/src/misc1.c
index 0f75c3a..ddc477d 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -3727,7 +3727,7 @@
 	if (copy_char)	    /* copy at least one char */
 	{
 	    /*
-	     * Recogize the start of a new name, for '~'.
+	     * Recognize the start of a new name, for '~'.
 	     */
 	    at_start = FALSE;
 	    if (src[0] == '\\' && src[1] != NUL)
@@ -4451,7 +4451,7 @@
 #ifdef UNIX
     return (c == ':');
 #else
-    return (c == ';');	/* might not be rigth for every system... */
+    return (c == ';');	/* might not be right for every system... */
 #endif
 }
 #endif
@@ -4561,7 +4561,7 @@
 
 /*
  * Concatenate file names fname1 and fname2 into allocated memory.
- * Only add a '/' or '\\' when 'sep' is TRUE and it is neccesary.
+ * Only add a '/' or '\\' when 'sep' is TRUE and it is necessary.
  */
     char_u  *
 concat_fnames(fname1, fname2, sep)
@@ -7118,7 +7118,7 @@
 		/*
 		 * What happens next depends on the line being terminated.
 		 * If terminated with a ',' only consider it terminating if
-		 * there is anoter unterminated statement behind, eg:
+		 * there is another unterminated statement behind, eg:
 		 *   123,
 		 *   sizeof
 		 *	  here
@@ -7306,7 +7306,7 @@
 		    /*
 		     * If we're below an unterminated line that is not an
 		     * "if" or something, we may line up with this line or
-		     * add someting for a continuation line, depending on
+		     * add something for a continuation line, depending on
 		     * the line before this one.
 		     */
 		    else
@@ -8513,7 +8513,7 @@
     char_u	*path,
     int		wildoff,
     int		flags,		/* EW_* flags */
-    int		didstar)	/* expaneded "**" once already */
+    int		didstar)	/* expanded "**" once already */
 {
     char_u	*buf;
     char_u	*path_end;
@@ -9340,7 +9340,7 @@
      * read the names from the file into memory
      */
 # ifdef VMS
-    /* created temporary file is not allways readable as binary */
+    /* created temporary file is not always readable as binary */
     fd = mch_fopen((char *)tempname, "r");
 # else
     fd = mch_fopen((char *)tempname, READBIN);
