diff --git a/src/eval.c b/src/eval.c
index 0fd7744..9429981 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1906,7 +1906,7 @@
 }
 
 /*
- * Skip one (assignable) variable name, includig @r, $VAR, &option, d.key,
+ * Skip one (assignable) variable name, including @r, $VAR, &option, d.key,
  * l[idx].
  */
     static char_u *
@@ -4506,8 +4506,8 @@
 /*
  * Handle sixth level expression:
  *  number		number constant
- *  "string"		string contstant
- *  'string'		literal string contstant
+ *  "string"		string constant
+ *  'string'		literal string constant
  *  &option-name	option value
  *  @r			register contents
  *  identifier		variable value
@@ -7018,7 +7018,7 @@
     char	f_min_argc;	/* minimal number of arguments */
     char	f_max_argc;	/* maximal number of arguments */
     void	(*f_func) __ARGS((typval_T *args, typval_T *rvar));
-				/* implemenation of function */
+				/* implementation of function */
 } functions[] =
 {
     {"add",		2, 2, f_add},
@@ -20668,7 +20668,7 @@
 
 /*
  * Get the short pathname of a file.
- * Returns 1 on success. *fnamelen is 0 for nonexistant path.
+ * Returns 1 on success. *fnamelen is 0 for nonexistent path.
  */
     static int
 get_short_pathname(fnamep, bufp, fnamelen)
@@ -20735,7 +20735,7 @@
 
     do
     {
-	/* Go back one path-seperator */
+	/* Go back one path-separator */
 	while (s > pbuf2 && !after_pathsep(pbuf2, s + 1))
 	{
 	    --s;
@@ -20745,7 +20745,7 @@
 	if (s <= pbuf2)
 	    break;
 
-	/* Remeber the character that is about to be blatted */
+	/* Remember the character that is about to be splatted */
 	ch = *s;
 	*s = 0; /* get_short_pathname requires a null-terminated string */
 
@@ -20761,7 +20761,7 @@
 
     if (plen > 0)
     {
-	/* Remeber the length of the new string.  */
+	/* Remember the length of the new string.  */
 	*fnamelen = len = plen + slen;
 	vim_free(*bufp);
 	if (len > len2)
diff --git a/src/gui_beval.c b/src/gui_beval.c
index 804fa5a..7adde4e 100644
--- a/src/gui_beval.c
+++ b/src/gui_beval.c
@@ -68,7 +68,7 @@
 
 	    /*
 	     * Temporarily change the curbuf, so that we can determine whether
-	     * the buffer-local balloonexpr option was set insecurly.
+	     * the buffer-local balloonexpr option was set insecurely.
 	     */
 	    save_curbuf = curbuf;
 	    curbuf = wp->w_buffer;
@@ -250,7 +250,7 @@
 
 #if defined(FEAT_BEVAL_TIP) || defined(PROTO)
 /*
- * Destroy a ballon-eval and free its associated memory.
+ * Destroy a balloon-eval and free its associated memory.
  */
     void
 gui_mch_destroy_beval_area(beval)
@@ -741,7 +741,7 @@
 
 /*
  * The real event handler. Called by pointerEventEH() whenever an event we are
- * interested in ocurrs.
+ * interested in occurs.
  */
 
     static void
diff --git a/src/if_mzsch.c b/src/if_mzsch.c
index c325a92..a175b6e 100644
--- a/src/if_mzsch.c
+++ b/src/if_mzsch.c
@@ -2027,7 +2027,7 @@
     extra = 0;
 
     check_line_range(lo, buf->buf);	    /* inclusive */
-    check_line_range(hi - 1, buf->buf);  /* exclisive */
+    check_line_range(hi - 1, buf->buf);	    /* exclusive */
 
     if (SCHEME_FALSEP(line_list) || SCHEME_NULLP(line_list))
     {
diff --git a/src/memline.c b/src/memline.c
index 5015f49..55d0a32 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -152,7 +152,7 @@
  *
  * If size of block0 changes anyway, adjust MIN_SWAP_PAGE_SIZE in vim.h!!
  *
- * This block is built up of single bytes, to make it portable accros
+ * This block is built up of single bytes, to make it portable across
  * different machines. b0_magic_* is used to check the byte order and size of
  * variables, because the rest of the swap file is not portable.
  */
diff --git a/src/os_amiga.c b/src/os_amiga.c
index 07000dc..f054103 100644
--- a/src/os_amiga.c
+++ b/src/os_amiga.c
@@ -217,7 +217,7 @@
     long    msec;
     int	    ignoreinput;
 {
-#ifndef LATTICE		/* SAS declares void Delay(UNLONG) */
+#ifndef LATTICE		/* SAS declares void Delay(ULONG) */
     void	    Delay __ARGS((long));
 #endif
 
@@ -1145,7 +1145,7 @@
 
     static long
 dos_packet(pid, action, arg)
-    struct MsgPort *pid;    /* process indentifier ... (handlers message port) */
+    struct MsgPort *pid;    /* process identifier ... (handlers message port) */
     long	    action, /* packet type ... (what you want handler to do)   */
 		    arg;    /* single argument */
 {
