diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt
index ec680bec4..ee97f0b65 100644
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -10754,7 +10754,7 @@ persistent_undo		Compiled with support for persistent undo history.
 postscript		Compiled with PostScript file printing.
 printer			Compiled with |:hardcopy| support.
 profile			Compiled with |:profile| support.
-prof_nsec		Profile results are in nano seconds.
+prof_nsec		Profile results are in nanoseconds.
 python			Python 2.x interface available. |has-python|
 python_compiled		Compiled with Python 2.x interface. |has-python|
 python_dynamic		Python 2.x interface is dynamically loaded. |has-python|
diff --git a/runtime/doc/repeat.txt b/runtime/doc/repeat.txt
index 054b8705c..028324dcd 100644
--- a/runtime/doc/repeat.txt
+++ b/runtime/doc/repeat.txt
@@ -1150,8 +1150,8 @@ mind there are various things that may clobber the results:
 
 - The accuracy of the time measured depends on the gettimeofday(), or
   clock_gettime if available, system function. The accuracy ranges from 1/100
-  second to nano seconds. With clock_gettime the times are displayed in nano
-  seconds, otherwise micro seconds.  You can use `has("prof_nsec")`.
+  second to nano seconds. With clock_gettime the times are displayed in
+  nanoseconds, otherwise microseconds.  You can use `has("prof_nsec")`.
 
 - Real elapsed time is measured, if other processes are busy they may cause
   delays at unpredictable moments.  You may want to run the profiling several
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 6792ac583..b5e4a5679 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -319,7 +319,7 @@ Can we not request XT key sequences, or reduce them drastically?
 Issue #10512: Dynamic loading broken with Perl 5.36
 Damien has a patch (2022 Dec 4)
 
-Request #11965: Allow severaql "%=" items in 'statusline', makes it possible
+Request #11965: Allow several "%=" items in 'statusline', makes it possible
 to have text in the center.
 
 Add some kind of ":whathappend" command and functions to make visible what the
diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt
index ef8f927d7..03b732b5e 100644
--- a/runtime/doc/version9.txt
+++ b/runtime/doc/version9.txt
@@ -29816,7 +29816,7 @@ Files:      src/testdir/test_vim9_script.vim
 Patch 8.2.4863
 Problem:    Accessing freed memory in test without the +channel feature.
             (Dominique Pellé)
-Solution:   Do not generted PUSHCHANNEL or PUSHJOB if they are not
+Solution:   Do not generate PUSHCHANNEL or PUSHJOB if they are not
             implemented. (closes #10350)
 Files:      src/vim9instr.c, src/errors.h, src/vim9compile.c,
             src/testdir/test_vim9_script.vim
diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt
index 51f1f16f9..c261f8cb3 100644
--- a/runtime/doc/vim9.txt
+++ b/runtime/doc/vim9.txt
@@ -914,7 +914,7 @@ Thus "=~" works like "=~#".
 "is" and "isnot" (|expr-is| and |expr-isnot|) when used on strings now return
 false.  In legacy script they just compare the strings, in |Vim9| script they
 check identity, and strings are copied when used, thus two strings are never
-the same (this might change some day if strings are not copied but reference
+the same (this might change someday if strings are not copied but reference
 counted).
 
 
@@ -1461,8 +1461,8 @@ have the "void" type.  Trying to use a void (e.g. a function without a
 return value) results in error *E1031*  *E1186* .
 
 There is no array type, use list<{type}> instead.  For a list constant an
-efficient implementation is used that avoids allocating lot of small pieces of
-memory.
+efficient implementation is used that avoids allocating a lot of small pieces
+of memory.
 							*E1005* *E1007*
 A partial and function can be declared in more or less specific ways:
 func				any kind of function reference, no type
diff --git a/runtime/doc/vim9class.txt b/runtime/doc/vim9class.txt
index 3c7722c88..5b14a42dd 100644
--- a/runtime/doc/vim9class.txt
+++ b/runtime/doc/vim9class.txt
@@ -205,7 +205,7 @@ new() call is assigned to that object member.  This mechanism comes from the
 Dart language.
 
 Putting together this way of using new() and making the members public results
-in a much shorter class definition as what we started with: >
+in a much shorter class definition than what we started with: >
 
 	class TextPosition
 	   public this.lnum: number
@@ -872,8 +872,8 @@ Especially when refactoring or other changes to the class model.
 
 The Vim scripts are expected to be used in a plugin, with just one person or a
 small team working on it.  Complex rules then only make it more complicated,
-the extra safety provide by the rules isn't really needed.  Let's just keep it
-simple and not specify access details.
+the extra safety provided by the rules isn't really needed.  Let's just keep
+it simple and not specify access details.
 
 
 ==============================================================================
