diff --git a/helix-core/src/position.rs b/helix-core/src/position.rs
index 04bf8c31..ee764bc6 100644
--- a/helix-core/src/position.rs
+++ b/helix-core/src/position.rs
@@ -109,7 +109,7 @@ pub fn visual_coords_at_pos(text: RopeSlice, pos: usize, tab_width: usize) -> Po
 /// softwrapping positions are estimated with an O(1) algorithm
 /// to ensure consistent performance for large lines (currently unimplemented)
 ///
-/// Usualy you want to use `visual_offset_from_anchor` instead but this function
+/// Usually you want to use `visual_offset_from_anchor` instead but this function
 /// can be useful (and faster) if
 /// * You already know the visual position of the block
 /// * You only care about the horizontal offset (column) and not the vertical offset (row)
@@ -291,7 +291,7 @@ pub fn pos_at_visual_coords(text: RopeSlice, coords: Position, tab_width: usize)
 ///
 /// If no (text) grapheme starts at exactly at the specified column the
 /// start of the grapheme to the left is returned. If there is no grapheme
-/// to the left (for example if the line starts with virtual text) then the positiong
+/// to the left (for example if the line starts with virtual text) then the positioning
 /// of the next grapheme to the right is returned.
 ///
 /// If the `line` coordinate is beyond the end of the file, the EOF
diff --git a/helix-core/src/selection.rs b/helix-core/src/selection.rs
index 8e93c633..259b131a 100644
--- a/helix-core/src/selection.rs
+++ b/helix-core/src/selection.rs
@@ -38,7 +38,7 @@ use std::borrow::Cow;
 /// Ranges are considered to be inclusive on the left and
 /// exclusive on the right, regardless of anchor-head ordering.
 /// This means, for example, that non-zero-width ranges that
-/// are directly adjecent, sharing an edge, do not overlap.
+/// are directly adjacent, sharing an edge, do not overlap.
 /// However, a zero-width range will overlap with the shared
 /// left-edge of another range.
 ///
diff --git a/helix-core/src/shellwords.rs b/helix-core/src/shellwords.rs
index 0883eb91..9d873c36 100644
--- a/helix-core/src/shellwords.rs
+++ b/helix-core/src/shellwords.rs
@@ -294,14 +294,14 @@ mod test {
     #[test]
     fn test_lists() {
         let input =
-            r#":set statusline.center ["file-type","file-encoding"] '["list", "in", "qoutes"]'"#;
+            r#":set statusline.center ["file-type","file-encoding"] '["list", "in", "quotes"]'"#;
         let shellwords = Shellwords::from(input);
         let result = shellwords.words().to_vec();
         let expected = vec![
             Cow::from(":set"),
             Cow::from("statusline.center"),
             Cow::from(r#"["file-type","file-encoding"]"#),
-            Cow::from(r#"["list", "in", "qoutes"]"#),
+            Cow::from(r#"["list", "in", "quotes"]"#),
         ];
         assert_eq!(expected, result);
     }
diff --git a/helix-core/src/text_annotations.rs b/helix-core/src/text_annotations.rs
index e6093184..11d19d48 100644
--- a/helix-core/src/text_annotations.rs
+++ b/helix-core/src/text_annotations.rs
@@ -172,7 +172,7 @@ impl TextAnnotations {
         for char_idx in char_range {
             if let Some((_, Some(highlight))) = self.overlay_at(char_idx) {
                 // we don't know the number of chars the original grapheme takes
-                // however it doesn't matter as highlight bounderies are automatically
+                // however it doesn't matter as highlight boundaries are automatically
                 // aligned to grapheme boundaries in the rendering code
                 highlights.push((highlight.0, char_idx..char_idx + 1))
             }
@@ -203,7 +203,7 @@ impl TextAnnotations {
 
     /// Add new grapheme overlays.
     ///
-    /// The overlayed grapheme will be rendered with `highlight`
+    /// The overlaid grapheme will be rendered with `highlight`
     /// patched on top of `ui.text`.
     ///
     /// The overlays **must be sorted** by their `char_idx`.
diff --git a/helix-lsp/src/client.rs b/helix-lsp/src/client.rs
index 29a67988..93e822c4 100644
--- a/helix-lsp/src/client.rs
+++ b/helix-lsp/src/client.rs
@@ -52,8 +52,8 @@ pub struct Client {
     root_path: std::path::PathBuf,
     root_uri: Option<lsp::Url>,
     workspace_folders: Mutex<Vec<lsp::WorkspaceFolder>>,
-    initalize_notify: Arc<Notify>,
-    /// workspace folders added while the server is still initalizing
+    initialize_notify: Arc<Notify>,
+    /// workspace folders added while the server is still initializing
     req_timeout: u64,
 }
 
@@ -92,14 +92,14 @@ impl Client {
             return true;
         }
 
-        // this server definitly doesn't support multiple workspace, no need to check capabilities
+        // this server definitely doesn't support multiple workspace, no need to check capabilities
         if !may_support_workspace {
             return false;
         }
 
         let Some(capabilities) = self.capabilities.get() else {
             let client = Arc::clone(self);
-            // initalization hasn't finished yet, deal with this new root later
+            // initialization hasn't finished yet, deal with this new root later
             // TODO: In the edgecase that a **new root** is added
             // for an LSP that **doesn't support workspace_folders** before initaliation is finished
             // the new roots are ignored.
@@ -108,7 +108,7 @@ impl Client {
             // documents LSP client handle. It's doable but a pretty weird edgecase so let's
             // wait and see if anyone ever runs into it.
             tokio::spawn(async move {
-                client.initalize_notify.notified().await;
+                client.initialize_notify.notified().await;
                 if let Some(workspace_folders_caps) = client
                     .capabilities()
                     .workspace
@@ -234,7 +234,7 @@ impl Client {
             root_path,
             root_uri,
             workspace_folders: Mutex::new(workspace_folders),
-            initalize_notify: initialize_notify.clone(),
+            initialize_notify: initialize_notify.clone(),
         };
 
         Ok((client, server_rx, initialize_notify))
@@ -279,7 +279,7 @@ impl Client {
                 "utf-16" => Some(OffsetEncoding::Utf16),
                 "utf-32" => Some(OffsetEncoding::Utf32),
                 encoding => {
-                    log::error!("Server provided invalid position encording {encoding}, defaulting to utf-16");
+                    log::error!("Server provided invalid position encoding {encoding}, defaulting to utf-16");
                     None
                 },
             })
diff --git a/helix-lsp/src/lib.rs b/helix-lsp/src/lib.rs
index a59fa31e..31ee1d75 100644
--- a/helix-lsp/src/lib.rs
+++ b/helix-lsp/src/lib.rs
@@ -152,10 +152,10 @@ pub mod util {
         // > ‘\n’, ‘\r\n’ and ‘\r’. Positions are line end character agnostic.
         // > So you can not specify a position that denotes \r|\n or \n| where | represents the character offset.
         //
-        // This means that while the line must be in bounds the `charater`
+        // This means that while the line must be in bounds the `character`
         // must be capped to the end of the line.
         // Note that the end of the line here is **before** the line terminator
-        // so we must use `line_end_char_index` istead of `doc.line_to_char(pos_line + 1)`
+        // so we must use `line_end_char_index` instead of `doc.line_to_char(pos_line + 1)`
         //
         // FIXME: Helix does not fully comply with the LSP spec for line terminators.
         // The LSP standard requires that line terminators are ['\n', '\r\n', '\r'].
@@ -893,7 +893,7 @@ fn start_client(
 /// * if the file is outside `workspace` return `None`
 /// * start at `file` and search the file tree upward
 /// * stop the search at the first `root_dirs` entry that contains `file`
-/// * if no `root_dirs` matchs `file` stop at workspace
+/// * if no `root_dirs` matches `file` stop at workspace
 /// * Returns the top most directory that contains a `root_marker`
 /// * If no root marker and we stopped at a `root_dirs` entry, return the directory we stopped at
 /// * If we stopped at `workspace` instead and `workspace_is_cwd == false` return `None`
diff --git a/helix-lsp/src/snippet.rs b/helix-lsp/src/snippet.rs
index a4f049e8..ebf3da24 100644
--- a/helix-lsp/src/snippet.rs
+++ b/helix-lsp/src/snippet.rs
@@ -61,7 +61,7 @@ fn render_elements(
     offset: &mut usize,
     tabstops: &mut Vec<(usize, (usize, usize))>,
     newline_with_offset: &str,
-    include_placeholer: bool,
+    include_placeholder: bool,
 ) {
     use SnippetElement::*;
 
@@ -89,7 +89,7 @@ fn render_elements(
                     offset,
                     tabstops,
                     newline_with_offset,
-                    include_placeholer,
+                    include_placeholder,
                 );
             }
             &Tabstop { tabstop } => {
@@ -100,14 +100,14 @@ fn render_elements(
                 value: inner_snippet_elements,
             } => {
                 let start_offset = *offset;
-                if include_placeholer {
+                if include_placeholder {
                     render_elements(
                         inner_snippet_elements,
                         insert,
                         offset,
                         tabstops,
                         newline_with_offset,
-                        include_placeholer,
+                        include_placeholder,
                     );
                 }
                 tabstops.push((*tabstop, (start_offset, *offset)));
@@ -127,7 +127,7 @@ fn render_elements(
 pub fn render(
     snippet: &Snippet<'_>,
     newline_with_offset: &str,
-    include_placeholer: bool,
+    include_placeholder: bool,
 ) -> (Tendril, Vec<SmallVec<[(usize, usize); 1]>>) {
     let mut insert = Tendril::new();
     let mut tabstops = Vec::new();
@@ -139,7 +139,7 @@ pub fn render(
         &mut offset,
         &mut tabstops,
         newline_with_offset,
-        include_placeholer,
+        include_placeholder,
     );
 
     // sort in ascending order (except for 0, which should always be the last one (per lsp doc))
diff --git a/helix-term/src/application.rs b/helix-term/src/application.rs
index 130a74af..f7d7fa63 100644
--- a/helix-term/src/application.rs
+++ b/helix-term/src/application.rs
@@ -25,7 +25,7 @@ use crate::{
     config::Config,
     job::Jobs,
     keymap::Keymaps,
-    ui::{self, overlay::overlayed},
+    ui::{self, overlay::overlaid},
 };
 
 use log::{debug, error, warn};
@@ -169,7 +169,7 @@ impl Application {
                 std::env::set_current_dir(first).context("set current dir")?;
                 editor.new_file(Action::VerticalSplit);
                 let picker = ui::file_picker(".".into(), &config.load().editor);
-                compositor.push(Box::new(overlayed(picker)));
+                compositor.push(Box::new(overlaid(picker)));
             } else {
                 let nr_of_files = args.files.len();
                 for (i, (file, pos)) in args.files.into_iter().enumerate() {
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index b55f1ab7..17669924 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -54,7 +54,7 @@ use crate::{
     job::Callback,
     keymap::ReverseKeymap,
     ui::{
-        self, editor::InsertEvent, lsp::SignatureHelp, overlay::overlayed, FilePicker, Picker,
+        self, editor::InsertEvent, lsp::SignatureHelp, overlay::overlaid, FilePicker, Picker,
         Popup, Prompt, PromptEvent,
     },
 };
@@ -1561,7 +1561,7 @@ fn half_page_down(cx: &mut Context) {
 }
 
 #[allow(deprecated)]
-// currently uses the deprected `visual_coords_at_pos`/`pos_at_visual_coords` functions
+// currently uses the deprecated `visual_coords_at_pos`/`pos_at_visual_coords` functions
 // as this function ignores softwrapping (and virtual text) and instead only cares
 // about "text visual position"
 //
@@ -2147,7 +2147,7 @@ fn global_search(cx: &mut Context) {
                         Some((path.clone().into(), Some((*line_num, *line_num))))
                     },
                 );
-                compositor.push(Box::new(overlayed(picker)));
+                compositor.push(Box::new(overlaid(picker)));
             },
         ));
         Ok(call)
@@ -2421,7 +2421,7 @@ fn append_mode(cx: &mut Context) {
 fn file_picker(cx: &mut Context) {
     let root = find_workspace().0;
     let picker = ui::file_picker(root, &cx.editor.config());
-    cx.push_layer(Box::new(overlayed(picker)));
+    cx.push_layer(Box::new(overlaid(picker)));
 }
 
 fn file_picker_in_current_buffer_directory(cx: &mut Context) {
@@ -2438,12 +2438,12 @@ fn file_picker_in_current_buffer_directory(cx: &mut Context) {
     };
 
     let picker = ui::file_picker(path, &cx.editor.config());
-    cx.push_layer(Box::new(overlayed(picker)));
+    cx.push_layer(Box::new(overlaid(picker)));
 }
 fn file_picker_in_current_directory(cx: &mut Context) {
     let cwd = std::env::current_dir().unwrap_or_else(|_| PathBuf::from("./"));
     let picker = ui::file_picker(cwd, &cx.editor.config());
-    cx.push_layer(Box::new(overlayed(picker)));
+    cx.push_layer(Box::new(overlaid(picker)));
 }
 
 fn buffer_picker(cx: &mut Context) {
@@ -2508,7 +2508,7 @@ fn buffer_picker(cx: &mut Context) {
             Some((meta.id.into(), Some((line, line))))
         },
     );
-    cx.push_layer(Box::new(overlayed(picker)));
+    cx.push_layer(Box::new(overlaid(picker)));
 }
 
 fn jumplist_picker(cx: &mut Context) {
@@ -2590,7 +2590,7 @@ fn jumplist_picker(cx: &mut Context) {
             Some((meta.path.clone()?.into(), Some((line, line))))
         },
     );
-    cx.push_layer(Box::new(overlayed(picker)));
+    cx.push_layer(Box::new(overlaid(picker)));
 }
 
 impl ui::menu::Item for MappableCommand {
@@ -2664,7 +2664,7 @@ pub fn command_palette(cx: &mut Context) {
                     }
                 }
             });
-            compositor.push(Box::new(overlayed(picker)));
+            compositor.push(Box::new(overlaid(picker)));
         },
     ));
 }
@@ -4185,7 +4185,7 @@ pub fn completion(cx: &mut Context) {
         None => return,
     };
 
-    // setup a chanel that allows the request to be canceled
+    // setup a channel that allows the request to be canceled
     let (tx, rx) = oneshot::channel();
     // set completion_request so that this request can be canceled
     // by setting completion_request, the old channel stored there is dropped
@@ -4238,7 +4238,7 @@ pub fn completion(cx: &mut Context) {
             let (view, doc) = current_ref!(editor);
             // check if the completion request is stale.
             //
-            // Completions are completed asynchrounsly and therefore the user could
+            // Completions are completed asynchronously and therefore the user could
             //switch document/view or leave insert mode. In all of thoise cases the
             // completion should be discarded
             if editor.mode != Mode::Insert || view.id != trigger_view || doc.id() != trigger_doc {
diff --git a/helix-term/src/commands/dap.rs b/helix-term/src/commands/dap.rs
index dac1e9d5..8efdc9cf 100644
--- a/helix-term/src/commands/dap.rs
+++ b/helix-term/src/commands/dap.rs
@@ -2,7 +2,7 @@ use super::{Context, Editor};
 use crate::{
     compositor::{self, Compositor},
     job::{Callback, Jobs},
-    ui::{self, overlay::overlayed, FilePicker, Picker, Popup, Prompt, PromptEvent, Text},
+    ui::{self, overlay::overlaid, FilePicker, Picker, Popup, Prompt, PromptEvent, Text},
 };
 use dap::{StackFrame, Thread, ThreadStates};
 use helix_core::syntax::{DebugArgumentValue, DebugConfigCompletion, DebugTemplate};
@@ -270,7 +270,7 @@ pub fn dap_launch(cx: &mut Context) {
 
     let templates = config.templates.clone();
 
-    cx.push_layer(Box::new(overlayed(Picker::new(
+    cx.push_layer(Box::new(overlaid(Picker::new(
         templates,
         (),
         |cx, template, _action| {
diff --git a/helix-term/src/commands/lsp.rs b/helix-term/src/commands/lsp.rs
index 78dbc0be..7a26b3cf 100644
--- a/helix-term/src/commands/lsp.rs
+++ b/helix-term/src/commands/lsp.rs
@@ -26,7 +26,7 @@ use helix_view::{
 use crate::{
     compositor::{self, Compositor},
     ui::{
-        self, lsp::SignatureHelp, overlay::overlayed, DynamicPicker, FileLocation, FilePicker,
+        self, lsp::SignatureHelp, overlay::overlaid, DynamicPicker, FileLocation, FilePicker,
         Popup, PromptEvent,
     },
 };
@@ -372,7 +372,7 @@ pub fn symbol_picker(cx: &mut Context) {
                 };
 
                 let picker = sym_picker(symbols, current_url, offset_encoding);
-                compositor.push(Box::new(overlayed(picker)))
+                compositor.push(Box::new(overlaid(picker)))
             }
         },
     )
@@ -431,7 +431,7 @@ pub fn workspace_symbol_picker(cx: &mut Context) {
                 future.boxed()
             };
             let dyn_picker = DynamicPicker::new(picker, Box::new(get_symbols));
-            compositor.push(Box::new(overlayed(dyn_picker)))
+            compositor.push(Box::new(overlaid(dyn_picker)))
         },
     )
 }
@@ -454,7 +454,7 @@ pub fn diagnostics_picker(cx: &mut Context) {
             DiagnosticsFormat::HideSourcePath,
             offset_encoding,
         );
-        cx.push_layer(Box::new(overlayed(picker)));
+        cx.push_layer(Box::new(overlaid(picker)));
     }
 }
 
@@ -471,7 +471,7 @@ pub fn workspace_diagnostics_picker(cx: &mut Context) {
         DiagnosticsFormat::ShowSourcePath,
         offset_encoding,
     );
-    cx.push_layer(Box::new(overlayed(picker)));
+    cx.push_layer(Box::new(overlaid(picker)));
 }
 
 impl ui::menu::Item for lsp::CodeActionOrCommand {
@@ -491,7 +491,7 @@ impl ui::menu::Item for lsp::CodeActionOrCommand {
 ///
 /// While the `kind` field is defined as open ended in the LSP spec (any value may be used)
 /// in practice a closed set of common values (mostly suggested in the LSP spec) are used.
-/// VSCode displays each of these categories seperatly (seperated by a heading in the codeactions picker)
+/// VSCode displays each of these categories separately (separated by a heading in the codeactions picker)
 /// to make them easier to navigate. Helix does not display these  headings to the user.
 /// However it does sort code actions by their categories to achieve the same order as the VScode picker,
 /// just without the headings.
@@ -521,7 +521,7 @@ fn action_category(action: &CodeActionOrCommand) -> u32 {
     }
 }
 
-fn action_prefered(action: &CodeActionOrCommand) -> bool {
+fn action_preferred(action: &CodeActionOrCommand) -> bool {
     matches!(
         action,
         CodeActionOrCommand::CodeAction(CodeAction {
@@ -600,12 +600,12 @@ pub fn code_action(cx: &mut Context) {
             }
 
             // Sort codeactions into a useful order. This behaviour is only partially described in the LSP spec.
-            // Many details are modeled after vscode because langauge servers are usually tested against it.
+            // Many details are modeled after vscode because language servers are usually tested against it.
             // VScode sorts the codeaction two times:
             //
             // First the codeactions that fix some diagnostics are moved to the front.
             // If both codeactions fix some diagnostics (or both fix none) the codeaction
-            // that is marked with `is_preffered` is shown first. The codeactions are then shown in seperate
+            // that is marked with `is_preferred` is shown first. The codeactions are then shown in separate
             // submenus that only contain a certain category (see `action_category`) of actions.
             //
             // Below this done in in a single sorting step
@@ -627,10 +627,10 @@ pub fn code_action(cx: &mut Context) {
                     return order;
                 }
 
-                // if one of the codeactions is marked as prefered show it first
+                // if one of the codeactions is marked as preferred show it first
                 // otherwise keep the original LSP sorting
-                action_prefered(action1)
-                    .cmp(&action_prefered(action2))
+                action_preferred(action1)
+                    .cmp(&action_preferred(action2))
                     .reverse()
             });
 
@@ -955,7 +955,7 @@ fn goto_impl(
                 },
                 move |_editor, location| Some(location_to_file_location(location)),
             );
-            compositor.push(Box::new(overlayed(picker)));
+            compositor.push(Box::new(overlaid(picker)));
         }
     }
 }
diff --git a/helix-term/src/commands/typed.rs b/helix-term/src/commands/typed.rs
index afc3d706..3c954d20 100644
--- a/helix-term/src/commands/typed.rs
+++ b/helix-term/src/commands/typed.rs
@@ -116,7 +116,7 @@ fn open(cx: &mut compositor::Context, args: &[Cow<str>], event: PromptEvent) ->
                 let call: job::Callback = job::Callback::EditorCompositor(Box::new(
                     move |editor: &mut Editor, compositor: &mut Compositor| {
                         let picker = ui::file_picker(path, &editor.config());
-                        compositor.push(Box::new(overlayed(picker)));
+                        compositor.push(Box::new(overlaid(picker)));
                     },
                 ));
                 Ok(call)
@@ -1335,7 +1335,7 @@ fn lsp_workspace_command(
                     let picker = ui::Picker::new(commands, (), |cx, command, _action| {
                         execute_lsp_command(cx.editor, command.clone());
                     });
-                    compositor.push(Box::new(overlayed(picker)))
+                    compositor.push(Box::new(overlaid(picker)))
                 },
             ));
             Ok(call)
diff --git a/helix-term/src/ui/document.rs b/helix-term/src/ui/document.rs
index 39c20950..80da1c54 100644
--- a/helix-term/src/ui/document.rs
+++ b/helix-term/src/ui/document.rs
@@ -118,7 +118,7 @@ pub fn render_document(
 
 fn translate_positions(
     char_pos: usize,
-    first_visisble_char_idx: usize,
+    first_visible_char_idx: usize,
     translated_positions: &mut [TranslatedPosition],
     text_fmt: &TextFormat,
     renderer: &mut TextRenderer,
@@ -126,7 +126,7 @@ fn translate_positions(
 ) {
     // check if any positions translated on the fly (like cursor) has been reached
     for (char_idx, callback) in &mut *translated_positions {
-        if *char_idx < char_pos && *char_idx >= first_visisble_char_idx {
+        if *char_idx < char_pos && *char_idx >= first_visible_char_idx {
             // by replacing the char_index with usize::MAX large number we ensure
             // that the same position is only translated once
             // text will never reach usize::MAX as rust memory allocations are limited
@@ -259,7 +259,7 @@ pub fn render_text<'t>(
             }
         }
 
-        // aquire the correct grapheme style
+        // acquire the correct grapheme style
         if char_pos >= style_span.1 {
             style_span = styles.next().unwrap_or((Style::default(), usize::MAX));
         }
@@ -404,7 +404,7 @@ impl<'a> TextRenderer<'a> {
         let cut_off_start = self.col_offset.saturating_sub(position.col);
         let is_whitespace = grapheme.is_whitespace();
 
-        // TODO is it correct to apply the whitspace style to all unicode white spaces?
+        // TODO is it correct to apply the whitespace style to all unicode white spaces?
         if is_whitespace {
             style = style.patch(self.whitespace_style);
         }
diff --git a/helix-term/src/ui/fuzzy_match.rs b/helix-term/src/ui/fuzzy_match.rs
index b406702f..22dc3a7f 100644
--- a/helix-term/src/ui/fuzzy_match.rs
+++ b/helix-term/src/ui/fuzzy_match.rs
@@ -54,7 +54,7 @@ impl QueryAtom {
     }
 
     fn indices(&self, matcher: &Matcher, item: &str, indices: &mut Vec<usize>) -> bool {
-        // for inverse there are no indicies to return
+        // for inverse there are no indices to return
         // just return whether we matched
         if self.inverse {
             return self.matches(matcher, item);
@@ -120,7 +120,7 @@ enum QueryAtomKind {
     ///
     /// Usage: `foo`
     Fuzzy,
-    /// Item contains query atom as a continous substring
+    /// Item contains query atom as a continuous substring
     ///
     /// Usage `'foo`
     Substring,
@@ -213,7 +213,7 @@ impl FuzzyQuery {
         Some(score)
     }
 
-    pub fn fuzzy_indicies(&self, item: &str, matcher: &Matcher) -> Option<(i64, Vec<usize>)> {
+    pub fn fuzzy_indices(&self, item: &str, matcher: &Matcher) -> Option<(i64, Vec<usize>)> {
         let (score, mut indices) = self.first_fuzzy_atom.as_ref().map_or_else(
             || Some((0, Vec::new())),
             |atom| matcher.fuzzy_indices(item, atom),
diff --git a/helix-term/src/ui/fuzzy_match/test.rs b/helix-term/src/ui/fuzzy_match/test.rs
index 3f90ef68..5df79eeb 100644
--- a/helix-term/src/ui/fuzzy_match/test.rs
+++ b/helix-term/src/ui/fuzzy_match/test.rs
@@ -7,8 +7,8 @@ fn run_test<'a>(query: &str, items: &'a [&'a str]) -> Vec<String> {
     items
         .iter()
         .filter_map(|item| {
-            let (_, indicies) = query.fuzzy_indicies(item, &matcher)?;
-            let matched_string = indicies
+            let (_, indices) = query.fuzzy_indices(item, &matcher)?;
+            let matched_string = indices
                 .iter()
                 .map(|&pos| item.chars().nth(pos).unwrap())
                 .collect();
diff --git a/helix-term/src/ui/overlay.rs b/helix-term/src/ui/overlay.rs
index 5b2bc806..ff184d40 100644
--- a/helix-term/src/ui/overlay.rs
+++ b/helix-term/src/ui/overlay.rs
@@ -16,7 +16,7 @@ pub struct Overlay<T> {
 }
 
 /// Surrounds the component with a margin of 5% on each side, and an additional 2 rows at the bottom
-pub fn overlayed<T>(content: T) -> Overlay<T> {
+pub fn overlaid<T>(content: T) -> Overlay<T> {
     Overlay {
         content,
         calc_child_size: Box::new(|rect: Rect| clip_rect_relative(rect.clip_bottom(2), 90, 90)),
diff --git a/helix-term/src/ui/picker.rs b/helix-term/src/ui/picker.rs
index e73088e5..e7a7de90 100644
--- a/helix-term/src/ui/picker.rs
+++ b/helix-term/src/ui/picker.rs
@@ -794,7 +794,7 @@ impl<T: Item + 'static> Component for Picker<T> {
                 // might be inconsistencies. This is the best we can do since only the
                 // text in Row is displayed to the end user.
                 let (_score, highlights) = FuzzyQuery::new(self.prompt.line())
-                    .fuzzy_indicies(&line, &self.matcher)
+                    .fuzzy_indices(&line, &self.matcher)
                     .unwrap_or_default();
 
                 let highlight_byte_ranges: Vec<_> = line
diff --git a/helix-term/tests/test/movement.rs b/helix-term/tests/test/movement.rs
index e10ec6f5..9a48cdbc 100644
--- a/helix-term/tests/test/movement.rs
+++ b/helix-term/tests/test/movement.rs
@@ -391,7 +391,7 @@ async fn cursor_position_newly_opened_file() -> anyhow::Result<()> {
 
 #[tokio::test(flavor = "multi_thread")]
 async fn cursor_position_append_eof() -> anyhow::Result<()> {
-    // Selection is fowards
+    // Selection is forwards
     test((
         "#[foo|]#",
         "abar<esc>",
diff --git a/helix-tui/src/backend/crossterm.rs b/helix-tui/src/backend/crossterm.rs
index 4d44f187..9d70a9fb 100644
--- a/helix-tui/src/backend/crossterm.rs
+++ b/helix-tui/src/backend/crossterm.rs
@@ -344,9 +344,9 @@ impl ModifierDiff {
     }
 }
 
-/// Crossterm uses semicolon as a seperator for colors
-/// this is actually not spec compliant (altough commonly supported)
-/// However the correct approach is to use colons as a seperator.
+/// Crossterm uses semicolon as a separator for colors
+/// this is actually not spec compliant (although commonly supported)
+/// However the correct approach is to use colons as a separator.
 /// This usually doesn't make a difference for emulators that do support colored underlines.
 /// However terminals that do not support colored underlines will ignore underlines colors with colons
 /// while escape sequences with semicolons are always processed which leads to weird visual artifacts.
diff --git a/helix-view/src/editor.rs b/helix-view/src/editor.rs
index 34c59b9b..80c47ed0 100644
--- a/helix-view/src/editor.rs
+++ b/helix-view/src/editor.rs
@@ -851,7 +851,7 @@ pub struct Editor {
     pub config_events: (UnboundedSender<ConfigEvent>, UnboundedReceiver<ConfigEvent>),
     /// Allows asynchronous tasks to control the rendering
     /// The `Notify` allows asynchronous tasks to request the editor to perform a redraw
-    /// The `RwLock` blocks the editor from performing the render until an exclusive lock can be aquired
+    /// The `RwLock` blocks the editor from performing the render until an exclusive lock can be acquired
     pub redraw_handle: RedrawHandle,
     pub needs_redraw: bool,
     /// Cached position of the cursor calculated during rendering.
diff --git a/helix-view/src/theme.rs b/helix-view/src/theme.rs
index 5d79ff26..a8cc5926 100644
--- a/helix-view/src/theme.rs
+++ b/helix-view/src/theme.rs
@@ -128,7 +128,7 @@ impl Loader {
         let parent_palette = parent_theme_toml.get("palette");
         let palette = theme_toml.get("palette");
 
-        // handle the table seperately since it needs a `merge_depth` of 2
+        // handle the table separately since it needs a `merge_depth` of 2
         // this would conflict with the rest of the theme merge strategy
         let palette_values = match (parent_palette, palette) {
             (Some(parent_palette), Some(palette)) => {