diff --git a/master/configuration.html b/master/configuration.html index c3ba3f80d4dd..e51cb19d2cf6 100644 --- a/master/configuration.html +++ b/master/configuration.html @@ -224,7 +224,8 @@
[editor]<
auto-completion
Enable automatic pop up of auto-completion true
auto-format
Enable automatic formatting on save true
auto-save
Enable automatic saving on the focus moving away from Helix. Requires focus event support from your terminal false
-idle-timeout
Time in milliseconds since last keypress before idle timers trigger. Used for autocompletion, set to 0 for instant 250
+idle-timeout
Time in milliseconds since last keypress before idle timers trigger. 250
+completion-timeout
Time in milliseconds after typing a word character before completions are shown, set to 5 for instant. 250
preview-completion-insert
Whether to apply completion item instantly when selected true
completion-trigger-len
The min-length of word under cursor to trigger autocompletion 2
completion-replace
Set to true
to make completions always replace the entire word and not just the part before the cursor false
diff --git a/master/print.html b/master/print.html
index 4f52e1d41199..248a8b719bef 100644
--- a/master/print.html
+++ b/master/print.html
@@ -1382,7 +1382,8 @@ [editor]<
auto-completion
Enable automatic pop up of auto-completion true
auto-format
Enable automatic formatting on save true
auto-save
Enable automatic saving on the focus moving away from Helix. Requires focus event support from your terminal false
-idle-timeout
Time in milliseconds since last keypress before idle timers trigger. Used for autocompletion, set to 0 for instant 250
+idle-timeout
Time in milliseconds since last keypress before idle timers trigger. 250
+completion-timeout
Time in milliseconds after typing a word character before completions are shown, set to 5 for instant. 250
preview-completion-insert
Whether to apply completion item instantly when selected true
completion-trigger-len
The min-length of word under cursor to trigger autocompletion 2
completion-replace
Set to true
to make completions always replace the entire word and not just the part before the cursor false
diff --git a/master/searchindex.js b/master/searchindex.js
index 9cd10178ac08..c6346efc7938 100644
--- a/master/searchindex.js
+++ b/master/searchindex.js
@@ -1 +1 @@
-Object.assign(window.search, {"doc_urls":["title-page.html#helix","install.html#installing-helix","install.html#pre-built-binaries","install.html#linux-macos-windows-and-openbsd-packaging-status","install.html#linux","install.html#ubuntu","install.html#fedorarhel","install.html#arch-linux-extra","install.html#nixos","install.html#flatpak","install.html#snap","install.html#appimage","install.html#macos","install.html#homebrew-core","install.html#macports","install.html#windows","install.html#winget","install.html#scoop","install.html#chocolatey","install.html#msys2","install.html#building-from-source","install.html#configuring-helixs-runtime-files","install.html#validating-the-installation","install.html#configure-the-desktop-shortcut","usage.html#using-helix","usage.html#registers","usage.html#user-defined-registers","usage.html#default-registers","usage.html#special-registers","usage.html#surround","usage.html#selecting-and-manipulating-text-with-textobjects","usage.html#navigating-using-tree-sitter-textobjects","usage.html#moving-the-selection-with-syntax-aware-motions","keymap.html#keymap","keymap.html#normal-mode","keymap.html#movement","keymap.html#changes","keymap.html#selection-manipulation","keymap.html#search","keymap.html#minor-modes","keymap.html#insert-mode","keymap.html#select--extend-mode","keymap.html#picker","keymap.html#prompt","commands.html#commands","lang-support.html#language-support","from-vim.html#migrating-from-vim","configuration.html#configuration","configuration.html#editor","configuration.html#editor-section","configuration.html#editorstatusline-section","configuration.html#editorlsp-section","configuration.html#editorcursor-shape-section","configuration.html#editorfile-picker-section","configuration.html#editorauto-pairs-section","configuration.html#editorsearch-section","configuration.html#editorwhitespace-section","configuration.html#editorindent-guides-section","configuration.html#editorgutters-section","configuration.html#editorsoft-wrap-section","configuration.html#editorsmart-tab-section","themes.html#themes","themes.html#creating-a-theme","themes.html#overview","themes.html#using-the-linter","themes.html#the-details-of-theme-creation","themes.html#color-palettes","themes.html#modifiers","themes.html#underline-style","themes.html#inheritance","themes.html#scopes","remapping.html#key-remapping","remapping.html#minor-modes","remapping.html#special-keys-and-modifiers","languages.html#languages","languages.html#languagestoml-files","languages.html#language-configuration","languages.html#file-type-detection-and-the-file-types-key","languages.html#language-server-configuration","languages.html#configuring-language-servers-for-a-language","languages.html#tree-sitter-grammar-configuration","languages.html#choosing-grammars","guides/index.html#guides","guides/adding_languages.html#adding-new-languages-to-helix","guides/adding_languages.html#language-configuration","guides/adding_languages.html#grammar-configuration","guides/adding_languages.html#queries","guides/adding_languages.html#common-issues","guides/textobject.html#adding-textobject-queries","guides/textobject.html#queries-for-textobject-based-navigation","guides/indent.html#adding-indent-queries","guides/indent.html#indent-queries","guides/indent.html#capture-types","guides/indent.html#predicates","guides/indent.html#scopes","guides/injection.html#adding-injection-queries","guides/injection.html#capture-types","guides/injection.html#settings","guides/injection.html#predicates"],"index":{"documentStore":{"docInfo":{"0":{"body":38,"breadcrumbs":2,"title":1},"1":{"body":73,"breadcrumbs":3,"title":2},"10":{"body":17,"breadcrumbs":2,"title":1},"11":{"body":25,"breadcrumbs":2,"title":1},"12":{"body":0,"breadcrumbs":2,"title":1},"13":{"body":3,"breadcrumbs":3,"title":2},"14":{"body":3,"breadcrumbs":2,"title":1},"15":{"body":7,"breadcrumbs":2,"title":1},"16":{"body":33,"breadcrumbs":2,"title":1},"17":{"body":3,"breadcrumbs":2,"title":1},"18":{"body":3,"breadcrumbs":2,"title":1},"19":{"body":12,"breadcrumbs":2,"title":1},"2":{"body":14,"breadcrumbs":4,"title":3},"20":{"body":119,"breadcrumbs":3,"title":2},"21":{"body":237,"breadcrumbs":5,"title":4},"22":{"body":20,"breadcrumbs":3,"title":2},"23":{"body":46,"breadcrumbs":4,"title":3},"24":{"body":42,"breadcrumbs":3,"title":2},"25":{"body":26,"breadcrumbs":2,"title":1},"26":{"body":48,"breadcrumbs":4,"title":3},"27":{"body":27,"breadcrumbs":3,"title":2},"28":{"body":72,"breadcrumbs":3,"title":2},"29":{"body":71,"breadcrumbs":2,"title":1},"3":{"body":2,"breadcrumbs":7,"title":6},"30":{"body":102,"breadcrumbs":5,"title":4},"31":{"body":46,"breadcrumbs":6,"title":5},"32":{"body":145,"breadcrumbs":6,"title":5},"33":{"body":46,"breadcrumbs":3,"title":1},"34":{"body":11,"breadcrumbs":4,"title":2},"35":{"body":161,"breadcrumbs":3,"title":1},"36":{"body":228,"breadcrumbs":3,"title":1},"37":{"body":226,"breadcrumbs":4,"title":2},"38":{"body":39,"breadcrumbs":3,"title":1},"39":{"body":783,"breadcrumbs":4,"title":2},"4":{"body":5,"breadcrumbs":2,"title":1},"40":{"body":194,"breadcrumbs":4,"title":2},"41":{"body":59,"breadcrumbs":5,"title":3},"42":{"body":68,"breadcrumbs":3,"title":1},"43":{"body":136,"breadcrumbs":3,"title":1},"44":{"body":807,"breadcrumbs":3,"title":1},"45":{"body":432,"breadcrumbs":5,"title":2},"46":{"body":53,"breadcrumbs":4,"title":2},"47":{"body":97,"breadcrumbs":2,"title":1},"48":{"body":0,"breadcrumbs":2,"title":1},"49":{"body":379,"breadcrumbs":3,"title":2},"5":{"body":16,"breadcrumbs":2,"title":1},"50":{"body":252,"breadcrumbs":3,"title":2},"51":{"body":110,"breadcrumbs":3,"title":2},"52":{"body":41,"breadcrumbs":4,"title":3},"53":{"body":151,"breadcrumbs":4,"title":3},"54":{"body":62,"breadcrumbs":4,"title":3},"55":{"body":30,"breadcrumbs":3,"title":2},"56":{"body":66,"breadcrumbs":3,"title":2},"57":{"body":40,"breadcrumbs":4,"title":3},"58":{"body":91,"breadcrumbs":3,"title":2},"59":{"body":84,"breadcrumbs":4,"title":3},"6":{"body":4,"breadcrumbs":2,"title":1},"60":{"body":86,"breadcrumbs":4,"title":3},"61":{"body":14,"breadcrumbs":3,"title":1},"62":{"body":28,"breadcrumbs":4,"title":2},"63":{"body":68,"breadcrumbs":3,"title":1},"64":{"body":15,"breadcrumbs":4,"title":2},"65":{"body":0,"breadcrumbs":5,"title":3},"66":{"body":83,"breadcrumbs":4,"title":2},"67":{"body":28,"breadcrumbs":3,"title":1},"68":{"body":16,"breadcrumbs":4,"title":2},"69":{"body":21,"breadcrumbs":3,"title":1},"7":{"body":17,"breadcrumbs":4,"title":3},"70":{"body":604,"breadcrumbs":3,"title":1},"71":{"body":121,"breadcrumbs":5,"title":2},"72":{"body":66,"breadcrumbs":5,"title":2},"73":{"body":69,"breadcrumbs":6,"title":3},"74":{"body":9,"breadcrumbs":3,"title":1},"75":{"body":64,"breadcrumbs":4,"title":2},"76":{"body":279,"breadcrumbs":4,"title":2},"77":{"body":110,"breadcrumbs":8,"title":6},"78":{"body":134,"breadcrumbs":5,"title":3},"79":{"body":203,"breadcrumbs":6,"title":4},"8":{"body":64,"breadcrumbs":2,"title":1},"80":{"body":90,"breadcrumbs":6,"title":4},"81":{"body":38,"breadcrumbs":4,"title":2},"82":{"body":15,"breadcrumbs":2,"title":1},"83":{"body":9,"breadcrumbs":7,"title":4},"84":{"body":60,"breadcrumbs":5,"title":2},"85":{"body":30,"breadcrumbs":5,"title":2},"86":{"body":51,"breadcrumbs":4,"title":1},"87":{"body":53,"breadcrumbs":5,"title":2},"88":{"body":84,"breadcrumbs":7,"title":3},"89":{"body":35,"breadcrumbs":8,"title":4},"9":{"body":10,"breadcrumbs":2,"title":1},"90":{"body":116,"breadcrumbs":7,"title":3},"91":{"body":127,"breadcrumbs":6,"title":2},"92":{"body":549,"breadcrumbs":6,"title":2},"93":{"body":114,"breadcrumbs":5,"title":1},"94":{"body":115,"breadcrumbs":5,"title":1},"95":{"body":39,"breadcrumbs":7,"title":3},"96":{"body":64,"breadcrumbs":6,"title":2},"97":{"body":50,"breadcrumbs":5,"title":1},"98":{"body":28,"breadcrumbs":5,"title":1}},"docs":{"0":{"body":"Docs for bleeding edge master can be found at https://docs.helix-editor.com/master . See the usage section for a quick overview of the editor, keymap section for all available keybindings and the configuration section for defining custom keybindings, setting themes, etc. For everything else (e.g., how to install supported language servers), see the Helix Wiki . Refer the FAQ for common questions.","breadcrumbs":"Helix » Helix","id":"0","title":"Helix"},"1":{"body":"Pre-built binaries Linux, macOS, Windows and OpenBSD packaging status Linux Ubuntu Fedora/RHEL Arch Linux extra NixOS Flatpak Snap AppImage macOS Homebrew Core MacPorts Windows Winget Scoop Chocolatey MSYS2 Building from source Configuring Helix's runtime files Linux and macOS Windows Multiple runtime directories Validating the installation Configure the desktop shortcut To install Helix, follow the instructions specific to your operating system. Note that: To get the latest nightly version of Helix, you need to build from source . To take full advantage of Helix, install the language servers for your preferred programming languages. See the wiki for instructions.","breadcrumbs":"Installation » Installing Helix","id":"1","title":"Installing Helix"},"10":{"body":"Helix is available on Snapcraft and can be installed with: snap install --classic helix This will install Helix as both /snap/bin/helix and /snap/bin/hx, so make sure /snap/bin is in your PATH.","breadcrumbs":"Installation » Snap","id":"10","title":"Snap"},"11":{"body":"Install Helix using the Linux AppImage format. Download the official Helix AppImage from the latest releases page. chmod +x helix-*.AppImage # change permission for executable mode\n./helix-*.AppImage # run helix","breadcrumbs":"Installation » AppImage","id":"11","title":"AppImage"},"12":{"body":"","breadcrumbs":"Installation » macOS","id":"12","title":"macOS"},"13":{"body":"brew install helix","breadcrumbs":"Installation » Homebrew Core","id":"13","title":"Homebrew Core"},"14":{"body":"port install helix","breadcrumbs":"Installation » MacPorts","id":"14","title":"MacPorts"},"15":{"body":"Install on Windows using Winget , Scoop , Chocolatey or MSYS2 .","breadcrumbs":"Installation » Windows","id":"15","title":"Windows"},"16":{"body":"Windows Package Manager winget command-line tool is by default available on Windows 11 and modern versions of Windows 10 as a part of the App Installer. You can get App Installer from the Microsoft Store . If it's already installed, make sure it is updated with the latest version. winget install Helix.Helix","breadcrumbs":"Installation » Winget","id":"16","title":"Winget"},"17":{"body":"scoop install helix","breadcrumbs":"Installation » Scoop","id":"17","title":"Scoop"},"18":{"body":"choco install helix","breadcrumbs":"Installation » Chocolatey","id":"18","title":"Chocolatey"},"19":{"body":"For 64-bit Windows 8.1 or above: pacman -S mingw-w64-ucrt-x86_64-helix","breadcrumbs":"Installation » MSYS2","id":"19","title":"MSYS2"},"2":{"body":"Download pre-built binaries from the GitHub Releases page . Add the binary to your system's $PATH to use it from the command line.","breadcrumbs":"Installation » Pre-built binaries","id":"2","title":"Pre-built binaries"},"20":{"body":"Requirements: Clone the Helix GitHub repository into a directory of your choice. The examples in this documentation assume installation into either ~/src/ on Linux and macOS, or %userprofile%\\src\\ on Windows. The Rust toolchain The Git version control system A C++14 compatible compiler to build the tree-sitter grammars, for example GCC or Clang If you are using the musl-libc standard library instead of glibc the following environment variable must be set during the build to ensure tree-sitter grammars can be loaded correctly: RUSTFLAGS=\"-C target-feature=-crt-static\" Clone the repository: git clone https://github.com/helix-editor/helix\ncd helix Compile from source: cargo install --path helix-term --locked This command will create the hx executable and construct the tree-sitter grammars in the local runtime folder. 💡 If you do not want to fetch or build grammars, set an environment variable HELIX_DISABLE_AUTO_GRAMMAR_BUILD 💡 Tree-sitter grammars can be fetched and compiled if not pre-packaged. Fetch grammars with hx --grammar fetch and compile them with hx --grammar build. This will install them in the runtime directory within the user's helix config directory (more details below ).","breadcrumbs":"Installation » Building from source","id":"20","title":"Building from source"},"21":{"body":"Linux and macOS The runtime directory is one below the Helix source, so either export a HELIX_RUNTIME environment variable to point to that directory and add it to your ~/.bashrc or equivalent: export HELIX_RUNTIME=~/src/helix/runtime Or, create a symbolic link: ln -Ts $PWD/runtime ~/.config/helix/runtime If the above command fails to create a symbolic link because the file exists either move ~/.config/helix/runtime to a new location or delete it, then run the symlink command above again. Windows Either set the HELIX_RUNTIME environment variable to point to the runtime files using the Windows setting (search for Edit environment variables for your account) or use the setx command in Cmd: setx HELIX_RUNTIME \"%userprofile%\\source\\repos\\helix\\runtime\" 💡 %userprofile% resolves to your user directory like C:\\Users\\Your-Name\\ for example. Or, create a symlink in %appdata%\\helix\\ that links to the source code directory: Method Command PowerShell New-Item -ItemType Junction -Target \"runtime\" -Path \"$Env:AppData\\helix\\runtime\" Cmd cd %appdata%\\helix mklink /D runtime \"%userprofile%\\src\\helix\\runtime\" 💡 On Windows, creating a symbolic link may require running PowerShell or Cmd as an administrator. Multiple runtime directories When Helix finds multiple runtime directories it will search through them for files in the following order: runtime/ sibling directory to $CARGO_MANIFEST_DIR directory (this is intended for developing and testing helix only). runtime/ subdirectory of OS-dependent helix user config directory. $HELIX_RUNTIME Distribution-specific fallback directory (set at compile time—not run time— with the HELIX_DEFAULT_RUNTIME environment variable) runtime/ subdirectory of path to Helix executable. This order also sets the priority for selecting which file will be used if multiple runtime directories have files with the same name. Note to packagers If you are making a package of Helix for end users, to provide a good out of the box experience, you should set the HELIX_DEFAULT_RUNTIME environment variable at build time (before invoking cargo build) to a directory which will store the final runtime files after installation. For example, say you want to package the runtime into /usr/lib/helix/runtime. The rough steps a build script could follow are: export HELIX_DEFAULT_RUNTIME=/usr/lib/helix/runtime cargo build --profile opt --locked --path helix-term cp -r runtime $BUILD_DIR/usr/lib/helix/ cp target/opt/hx $BUILD_DIR/usr/bin/hx This way the resulting hx binary will always look for its runtime directory in /usr/lib/helix/runtime if the user has no custom runtime in ~/.config/helix or HELIX_RUNTIME.","breadcrumbs":"Installation » Configuring Helix's runtime files","id":"21","title":"Configuring Helix's runtime files"},"22":{"body":"To make sure everything is set up as expected you should run the Helix health check: hx --health For more information on the health check results refer to Health check .","breadcrumbs":"Installation » Validating the installation","id":"22","title":"Validating the installation"},"23":{"body":"If your desktop environment supports the XDG desktop menu you can configure Helix to show up in the application menu by copying the provided .desktop and icon files to their correct folders: cp contrib/Helix.desktop ~/.local/share/applications\ncp contrib/helix.png ~/.icons # or ~/.local/share/icons To use another terminal than the system default, you can modify the .desktop file. For example, to use kitty: sed -i \"s|Exec=hx %F|Exec=kitty hx %F|g\" ~/.local/share/applications/Helix.desktop\nsed -i \"s|Terminal=true|Terminal=false|g\" ~/.local/share/applications/Helix.desktop","breadcrumbs":"Installation » Configure the desktop shortcut","id":"23","title":"Configure the desktop shortcut"},"24":{"body":"Registers User-defined registers Special registers Surround Selecting and manipulating text with textobjects Navigating using tree-sitter textobjects Moving the selection with syntax-aware motions For a full interactive introduction to Helix, refer to the tutor which can be accessed via the command hx --tutor or :tutor. 💡 Currently, not all functionality is fully documented, please refer to the key mappings list.","breadcrumbs":"Usage » Using Helix","id":"24","title":"Using Helix"},"25":{"body":"In Helix, registers are storage locations for text and other data, such as the result of a search. Registers can be used to cut, copy, and paste text, similar to the clipboard in other text editors. Usage is similar to Vim, with \" being used to select a register.","breadcrumbs":"Usage » Registers","id":"25","title":"Registers"},"26":{"body":"Helix allows you to create your own named registers for storing text, for example: \"ay - Yank the current selection to register a. \"op - Paste the text in register o after the selection. If a register is selected before invoking a change or delete command, the selection will be stored in the register and the action will be carried out: \"hc - Store the selection in register h and then change it (delete and enter insert mode). \"md - Store the selection in register m and delete it.","breadcrumbs":"Usage » User-defined registers","id":"26","title":"User-defined registers"},"27":{"body":"Commands that use registers, like yank (y), use a default register if none is specified. These registers are used as defaults: Register character Contains / Last search : Last executed command \" Last yanked text @ Last recorded macro","breadcrumbs":"Usage » Default registers","id":"27","title":"Default registers"},"28":{"body":"Some registers have special behavior when read from and written to. Register character When read When written _ No values are returned All values are discarded # Selection indices (first selection is 1, second is 2, etc.) This register is not writable . Contents of the current selections This register is not writable % Name of the current file This register is not writable + Reads from the system clipboard Joins and yanks to the system clipboard * Reads from the primary clipboard Joins and yanks to the primary clipboard When yanking multiple selections to the clipboard registers, the selections are joined with newlines. Pasting from these registers will paste multiple selections if the clipboard was last yanked to by the Helix session. Otherwise the clipboard contents are pasted as one selection.","breadcrumbs":"Usage » Special registers","id":"28","title":"Special registers"},"29":{"body":"Helix includes built-in functionality similar to vim-surround . The keymappings have been inspired from vim-sandwich : Surround demo Key Sequence Action ms (after selecting text) Add surround characters to selection mr Replace the closest surround characters md Delete the closest surround characters You can use counts to act on outer pairs. Surround can also act on multiple selections. For example, to change every occurrence of (use) to [use]: % to select the whole file s to split the selections on a search term Input use and hit Enter mr([ to replace the parentheses with square brackets Multiple characters are currently not supported, but planned for future release.","breadcrumbs":"Usage » Surround","id":"29","title":"Surround"},"3":{"body":"Packaging status","breadcrumbs":"Installation » Linux, macOS, Windows and OpenBSD packaging status","id":"3","title":"Linux, macOS, Windows and OpenBSD packaging status"},"30":{"body":"In Helix, textobjects are a way to select, manipulate and operate on a piece of text in a structured way. They allow you to refer to blocks of text based on their structure or purpose, such as a word, sentence, paragraph, or even a function or block of code. Textobject demo Textobject tree-sitter demo ma - Select around the object (va in Vim, in Kakoune) mi - Select inside the object (vi in Vim, in Kakoune) Key after mi or ma Textobject selected w Word W WORD p Paragraph (, [, ', etc. Specified surround pairs m The closest surround pair f Function t Type (or Class) a Argument/parameter c Comment T Test g Change 💡 f, t, etc. need a tree-sitter grammar active for the current document and a special tree-sitter query file to work properly. Only some grammars currently have the query file implemented. Contributions are welcome!","breadcrumbs":"Usage » Selecting and manipulating text with textobjects","id":"30","title":"Selecting and manipulating text with textobjects"},"31":{"body":"Navigating between functions, classes, parameters, and other elements is possible using tree-sitter and textobject queries. For example to move to the next function use ]f, to move to previous type use [t, and so on. Tree-sitter-nav-demo For the full reference see the unimpaired section of the key bind documentation. 💡 This feature relies on tree-sitter textobjects and requires the corresponding query file to work properly.","breadcrumbs":"Usage » Navigating using tree-sitter textobjects","id":"31","title":"Navigating using tree-sitter textobjects"},"32":{"body":"Alt-p, Alt-o, Alt-i, and Alt-n (or Alt and arrow keys) allow you to move the selection according to its location in the syntax tree. For example, many languages have the following syntax for function calls: func(arg1, arg2, arg3); A function call might be parsed by tree-sitter into a tree like the following. (call function: (identifier) ; func arguments: (arguments ; (arg1, arg2, arg3) (identifier) ; arg1 (identifier) ; arg2 (identifier))) ; arg3 Use :tree-sitter-subtree to view the syntax tree of the primary selection. In a more intuitive tree format: ┌────┐ │call│ ┌─────┴────┴─────┐ │ │\n┌─────▼────┐ ┌────▼────┐\n│identifier│ │arguments│\n│ \"func\" │ ┌────┴───┬─────┴───┐\n└──────────┘ │ │ │ │ │ │ ┌─────────▼┐ ┌────▼─────┐ ┌▼─────────┐ │identifier│ │identifier│ │identifier│ │ \"arg1\" │ │ \"arg2\" │ │ \"arg3\" │ └──────────┘ └──────────┘ └──────────┘ If you have a selection that wraps arg1 (see the tree above), and you use Alt-n, it will select the next sibling in the syntax tree: arg2. // before\nfunc([arg1], arg2, arg3)\n// after\nfunc(arg1, [arg2], arg3); Similarly, Alt-o will expand the selection to the parent node, in this case, the arguments node. func[(arg1, arg2, arg3)]; There is also some nuanced behavior that prevents you from getting stuck on a node with no sibling. When using Alt-p with a selection on arg1, the previous child node will be selected. In the event that arg1 does not have a previous sibling, the selection will move up the syntax tree and select the previous element. As a result, using Alt-p with a selection on arg1 will move the selection to the \"func\" identifier.","breadcrumbs":"Usage » Moving the selection with syntax-aware motions","id":"32","title":"Moving the selection with syntax-aware motions"},"33":{"body":"Normal mode Movement Changes Shell Selection manipulation Search Minor modes View mode Goto mode Match mode Window mode Space mode Popup Unimpaired Insert mode Select / extend mode Picker Prompt 💡 Mappings marked ( LSP ) require an active language server for the file. 💡 Mappings marked ( TS ) require a tree-sitter grammar for the file type.","breadcrumbs":"Usage » Keymap » Keymap","id":"33","title":"Keymap"},"34":{"body":"Normal mode is the default mode when you launch helix. You can return to it from other modes by pressing the Escape key.","breadcrumbs":"Usage » Keymap » Normal mode","id":"34","title":"Normal mode"},"35":{"body":"NOTE: Unlike Vim, f, F, t and T are not confined to the current line. Key Description Command h, Left Move left move_char_left j, Down Move down move_visual_line_down k, Up Move up move_visual_line_up l, Right Move right move_char_right w Move next word start move_next_word_start b Move previous word start move_prev_word_start e Move next word end move_next_word_end W Move next WORD start move_next_long_word_start B Move previous WORD start move_prev_long_word_start E Move next WORD end move_next_long_word_end t Find 'till next char find_till_char f Find next char find_next_char T Find 'till previous char till_prev_char F Find previous char find_prev_char G Go to line number goto_line Alt-. Repeat last motion (f, t or m) repeat_last_motion Home Move to the start of the line goto_line_start End Move to the end of the line goto_line_end Ctrl-b, PageUp Move page up page_up Ctrl-f, PageDown Move page down page_down Ctrl-u Move half page up half_page_up Ctrl-d Move half page down half_page_down Ctrl-i Jump forward on the jumplist jump_forward Ctrl-o Jump backward on the jumplist jump_backward Ctrl-s Save the current selection to the jumplist save_selection","breadcrumbs":"Usage » Keymap » Movement","id":"35","title":"Movement"},"36":{"body":"Key Description Command r Replace with a character replace R Replace with yanked text replace_with_yanked ~ Switch case of the selected text switch_case ` Set the selected text to lower case switch_to_lowercase Alt-` Set the selected text to upper case switch_to_uppercase i Insert before selection insert_mode a Insert after selection (append) append_mode I Insert at the start of the line insert_at_line_start A Insert at the end of the line insert_at_line_end o Open new line below selection open_below O Open new line above selection open_above . Repeat last insert N/A u Undo change undo U Redo change redo Alt-u Move backward in history earlier Alt-U Move forward in history later y Yank selection yank p Paste after selection paste_after P Paste before selection paste_before \" Select a register to yank to or paste from select_register > Indent selection indent < Unindent selection unindent = Format selection (currently nonfunctional/disabled) ( LSP ) format_selections d Delete selection delete_selection Alt-d Delete selection, without yanking delete_selection_noyank c Change selection (delete and enter insert mode) change_selection Alt-c Change selection (delete and enter insert mode, without yanking) change_selection_noyank Ctrl-a Increment object (number) under cursor increment Ctrl-x Decrement object (number) under cursor decrement Q Start/stop macro recording to the selected register (experimental) record_macro q Play back a recorded macro from the selected register (experimental) replay_macro Shell Key Description Command | Pipe each selection through shell command, replacing with output shell_pipe Alt-| Pipe each selection into shell command, ignoring output shell_pipe_to ! Run shell command, inserting output before each selection shell_insert_output Alt-! Run shell command, appending output after each selection shell_append_output $ Pipe each selection into shell command, keep selections where command returned 0 shell_keep_pipe","breadcrumbs":"Usage » Keymap » Changes","id":"36","title":"Changes"},"37":{"body":"Key Description Command s Select all regex matches inside selections select_regex S Split selection into sub selections on regex matches split_selection Alt-s Split selection on newlines split_selection_on_newline Alt-minus Merge selections merge_selections Alt-_ Merge consecutive selections merge_consecutive_selections & Align selection in columns align_selections _ Trim whitespace from the selection trim_selections ; Collapse selection onto a single cursor collapse_selection Alt-; Flip selection cursor and anchor flip_selections Alt-: Ensures the selection is in forward direction ensure_selections_forward , Keep only the primary selection keep_primary_selection Alt-, Remove the primary selection remove_primary_selection C Copy selection onto the next line (Add cursor below) copy_selection_on_next_line Alt-C Copy selection onto the previous line (Add cursor above) copy_selection_on_prev_line ( Rotate main selection backward rotate_selections_backward ) Rotate main selection forward rotate_selections_forward Alt-( Rotate selection contents backward rotate_selection_contents_backward Alt-) Rotate selection contents forward rotate_selection_contents_forward % Select entire file select_all x Select current line, if already selected, extend to next line extend_line_below X Extend selection to line bounds (line-wise selection) extend_to_line_bounds Alt-x Shrink selection to line bounds (line-wise selection) shrink_to_line_bounds J Join lines inside selection join_selections Alt-J Join lines inside selection and select the inserted space join_selections_space K Keep selections matching the regex keep_selections Alt-K Remove selections matching the regex remove_selections Ctrl-c Comment/uncomment the selections toggle_comments Alt-o, Alt-up Expand selection to parent syntax node ( TS ) expand_selection Alt-i, Alt-down Shrink syntax tree object selection ( TS ) shrink_selection Alt-p, Alt-left Select previous sibling node in syntax tree ( TS ) select_prev_sibling Alt-n, Alt-right Select next sibling node in syntax tree ( TS ) select_next_sibling","breadcrumbs":"Usage » Keymap » Selection manipulation","id":"37","title":"Selection manipulation"},"38":{"body":"Search commands all operate on the / register by default. To use a different register, use \". Key Description Command / Search for regex pattern search ? Search for previous pattern rsearch n Select next search match search_next N Select previous search match search_prev * Use current selection as the search pattern search_selection","breadcrumbs":"Usage » Keymap » Search","id":"38","title":"Search"},"39":{"body":"These sub-modes are accessible from normal mode and typically switch back to normal mode after a command. Key Description Command v Enter select (extend) mode select_mode g Enter goto mode N/A m Enter match mode N/A : Enter command mode command_mode z Enter view mode N/A Z Enter sticky view mode N/A Ctrl-w Enter window mode N/A Space Enter space mode N/A These modes (except command mode) can be configured by remapping keys . View mode Accessed by typing z in normal mode . View mode is intended for scrolling and manipulating the view without changing the selection. The \"sticky\" variant of this mode (accessed by typing Z in normal mode) is persistent and can be exited using the escape key. This is useful when you're simply looking over text and not actively editing it. Key Description Command z, c Vertically center the line align_view_center t Align the line to the top of the screen align_view_top b Align the line to the bottom of the screen align_view_bottom m Align the line to the middle of the screen (horizontally) align_view_middle j, down Scroll the view downwards scroll_down k, up Scroll the view upwards scroll_up Ctrl-f, PageDown Move page down page_down Ctrl-b, PageUp Move page up page_up Ctrl-d Move half page down half_page_down Ctrl-u Move half page up half_page_up Goto mode Accessed by typing g in normal mode . Jumps to various locations. Key Description Command g Go to line number else start of file goto_file_start e Go to the end of the file goto_last_line f Go to files in the selections goto_file h Go to the start of the line goto_line_start l Go to the end of the line goto_line_end s Go to first non-whitespace character of the line goto_first_nonwhitespace t Go to the top of the screen goto_window_top c Go to the middle of the screen goto_window_center b Go to the bottom of the screen goto_window_bottom d Go to definition ( LSP ) goto_definition y Go to type definition ( LSP ) goto_type_definition r Go to references ( LSP ) goto_reference i Go to implementation ( LSP ) goto_implementation a Go to the last accessed/alternate file goto_last_accessed_file m Go to the last modified/alternate file goto_last_modified_file n Go to next buffer goto_next_buffer p Go to previous buffer goto_previous_buffer . Go to last modification in current file goto_last_modification j Move down textual (instead of visual) line move_line_down k Move up textual (instead of visual) line move_line_up Match mode Accessed by typing m in normal mode . See the relevant section in Usage for an explanation about surround and textobject usage. Key Description Command m Goto matching bracket ( TS ) match_brackets s Surround current selection with surround_add r Replace surround character with surround_replace d Delete surround character surround_delete a