{"id":19516031,"url":"https://github.com/fidgetingbits/talon-vim","last_synced_at":"2026-03-05T04:02:50.974Z","repository":{"id":221085009,"uuid":"753356436","full_name":"fidgetingbits/talon-vim","owner":"fidgetingbits","description":"Talon-side plugin for interacting with vim/neovim using Talon Voice. This is the original fidgetingbits repo code.","archived":false,"fork":false,"pushed_at":"2024-12-11T09:01:34.000Z","size":140,"stargazers_count":3,"open_issues_count":4,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-12-26T16:36:50.363Z","etag":null,"topics":["voicecoding"],"latest_commit_sha":null,"homepage":"","language":"Talon","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fidgetingbits.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-06T00:27:59.000Z","updated_at":"2025-04-22T17:37:41.000Z","dependencies_parsed_at":"2024-06-02T10:28:45.132Z","dependency_job_id":"30af43d8-2cc0-422a-8700-6d3cfc4ae259","html_url":"https://github.com/fidgetingbits/talon-vim","commit_stats":null,"previous_names":["fidgetingbits/talon-vim","hands-free-vim/talon-vim"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fidgetingbits/talon-vim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fidgetingbits%2Ftalon-vim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fidgetingbits%2Ftalon-vim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fidgetingbits%2Ftalon-vim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fidgetingbits%2Ftalon-vim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fidgetingbits","download_url":"https://codeload.github.com/fidgetingbits/talon-vim/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fidgetingbits%2Ftalon-vim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30109076,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T03:40:26.266Z","status":"ssl_error","status_checked_at":"2026-03-05T03:39:15.902Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["voicecoding"],"created_at":"2024-11-10T23:44:01.482Z","updated_at":"2026-03-05T04:02:50.943Z","avatar_url":"https://github.com/fidgetingbits.png","language":"Talon","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Talon-Vim\n\nThis is a set of extra commands for controlling neovim using Talon Voice, in combination with the [talonhub\ncommunity](https://github.com/talonhub/community/) repo or [my talon repo](https://github.com/fidgetingbits/fidgetingbits-talon)\n\nYou probably are looking for [neovim-talon](https://github.com/hands-free-vim/neovim-talon) which is a lighter weight\nport of what used to be soley this repo (and previously in my talon repo). It contains most of what you need to use\nneovim for managinig terminals with voice, and is meant to be used with\n[cursorless](https://github.com/cursorless-dev/cursorless) rather than using native neovim motions.\n\nThis repo [talon-vim](https://github.com/fidgetingbits/talon-vim) now relies on neovim-talon to function, but it\ncontains additional functionality, like lots of convenience, support for many plugins, support for real vim motion.\n\nDue to [cursorless](https://github.com/cursorless-dev/cursorless) being so powerful, I no longer use neovim as my\nprimary editor, but rather vscode. I do however use neovim as a container for all my terminals, as it allows much more\npowerful command-line use (especially with [cursorless.nvim](https://github.com/hands-free-vim/cursorless.nvim/) than a\nregular terminal provides.\n\nNote that many parts of this repo will still slowly be migrated to neovim-talon, but it should be relatively seamless.\n\n- [Talon-Vim](#talon-vim)\n  - [Dependencies](#dependencies)\n  - [Using Vim As Your Editor](#using-vim-as-your-editor)\n  - [Using VIM under Talon](#using-vim-under-talon)\n    - [Talon Change - The word `yank`](#talon-change---the-word-yank)\n    - [Talon Change - The key `end`](#talon-change---the-key-end)\n    - [Talon Change - The command `word`](#talon-change---the-command-word)\n    - [Neovim Terminal Quirks](#neovim-terminal-quirks)\n      - [Working directory](#working-directory)\n  - [Supported motion command overview](#supported-motion-command-overview)\n    - [Commands](#commands)\n    - [Motions](#motions)\n    - [Text object selection](#text-object-selection)\n\n## Dependencies\n\n- [talon.nvim](https://github.com/hands-free-vim/talon.nvim/) (Required)\n- [neovim-talon](https://github.com/hands-free-vim/neovim-talon) (Required)\n- [cursorless.nvim](https://github.com/hands-free-vim/cursorless.nvim/) (Optional)\n\n## Using Vim As Your Editor\n\nI recommend using VSCode for now, until cursorless in neovim supports hats. That said, this repo does support native\nvim motions, so you can give it a try.\n\n## Using VIM under Talon\n\nThis document serves as an instruction manual and quick tutorial for people\nwanting to set up running vim under talon. Henceforth it will be referred to as\n\"talon vim\". The original inspiration for creating talon vim was vimspeak,\nhowever it has evolved far beyond what vimspeak was able to do.\n\nMost of the testing has been done on Linux, but if you do test this on other\nsystems and you have positive or negative results you can provide feedback on\nthe slack channel.\n\nPlease note that if you want to have the full vim experience you will have to\nmake modifications to both the vim config and talon.\n\nCurrently supported VIM features (that aren't in neovim-talon):\n\n- motions\n- registers\n- macros\n- folds\n- plugins (see source for list. NOTE: some are in neovim-talon now)\n- settings\n\nYou can contact `fidgetingbits` on the Talon slack for questions/support.\n\n### Talon Change - The word `yank`\n\nThe default Talon alphabet uses `yank` for the letter `y`. This conflicts with\nthe natural VIM verb, so it is recommended you change the `y` word in your talon\n`code/keys.py`. For example you could instead use: `yell`\n\n### Talon Change - The key `end`\n\nThe `code/vim.py` script include support for a motion verb called `end`. To the\nproblem is that talon also supports the ability to simply say the word `end` and\nit will trigger pressing the keyboard key `end`.\n\nYou currently have two options to deal with this:\n\n1. You can disable the `end` key in talon, however this will negatively impact\n   other scenarios where you would normally like to be able to press key directly.\n\n2. Use the alternate vim motion verb `end word`. There aren't too many\n   downside to this approach aside from it being somewhat cumbersome.\n\n### Talon Change - The command `word`\n\nBy default talon will use the command `word` as a command for saying a single\nword. See `misc/formatters.talon`. In vim \"word\" is a natural movement motion\nso it is included by default. If you decide to use this you will want to\nchange the talon command to be a separate word.\n\n### Neovim Terminal Quirks\n\nIf you want your Neovim buffer working directory to match the folder your terminal is in, use the following:\n\nhttps://gist.github.com/DrSpeedy/9022d3bee63a7029570c7d3d43054329\n\n#### Working directory\n\n```\n## This function calls the script below when loaded by\n## the shell inside of neovim. It must be placed somewhere in\n## your default shell's rc file e.g. ~/.zshrc\nneovim_autocd() {\n    [[ $NVIM_LISTEN_ADDRESS ]] \u0026\u0026 ${HOME}/.ohmyzsh/custom/functions/neovim-autocd.py\n}\nchpwd_functions+=( neovim_autocd )\n```\n\n## Supported motion command overview\n\nAll of the commands follow the typical vim grammar style such as\n`[count][action][motion]`. Motions are also supported is to move along where\nyou are in the file or select things in VISUAL mode. By default these motions\nare also accessible for the inside INSERT mode without needing to manually\nchange modes.\n\n### Commands\n\nMany of these can be combined with motions or text objects selection, etc.\n\n```python\n    \"join\": \"J\",\n    \"filter\": \"=\",\n    \"paste\": \"p\",\n    \"undo\": \"u\",\n    \"swap case\": \"~\",\n    \"change\": \"c\",\n    \"delete\": \"d\",\n    \"trim\": \"d\",\n    \"indent\": \"\u003e\",\n    \"unindent\": \"\u003c\",\n    \"yank\": \"y\",\n    \"copy\": \"y\",\n    \"fold\": \"zf\",\n    \"format\": \"gq\",\n    \"to upper\": \"gU\",\n    \"to lower\": \"gu\",\n```\n\n### Motions\n\nThese are motions that can be used in VISUAL mode, and can also be used as\nmotions when combined with commands.\n\n```python\n    \"back\": \"b\",\n    \"back word\": \"b\",\n    \"big back\": \"B\",\n    \"big back word\": \"B\",\n    \"end\": \"e\",\n    \"end word\": \"e\",\n    \"big end\": \"E\",\n    \"word\": \"w\",\n    \"words\": \"w\",\n    \"big word\": \"W\",\n    \"big words\": \"W\",\n    \"back end\": \"ge\",\n    \"back big end\": \"gE\",\n    \"right\": \"l\",\n    \"left\": \"h\",\n    \"down\": \"j\",\n    \"up\": \"k\",\n    \"next\": \"n\",\n    \"next reversed\": \"N\",\n    \"previous\": \"N\",\n    \"column zero\": \"0\",\n    \"column\": \"|\",\n    \"start of line\": \"^\",\n    \"end of line\": \"$\",\n    \"search under cursor\": \"*\",\n    \"search under cursor reversed\": \"#\",\n    \"again\": \";\",\n    \"again reversed\": \",\",\n    \"down sentence\": \")\",\n    \"sentence\": \")\",\n    \"up sentence\": \"(\",\n    \"down paragraph\": \"}\",\n    \"paragraph\": \"}\",\n    \"up paragraph\": \"{\",\n    \"start of next section\": \"]]\",\n    \"start of previous section\": \"[[\",\n    \"end of next section\": \"][\",\n    \"end of previous section\": \"[]\",\n    \"matching\": \"%\",\n    \"down line\": \"+\",\n    \"up line\": \"-\",\n    \"first character\": \"_\",\n    \"cursor home\": \"H\",\n    \"cursor middle\": \"M\",\n    \"cursor last\": \"L\",\n    \"start of document\": \"gg\",\n    \"start of file\": \"gg\",\n    \"top of document\": \"gg\",\n    \"top of file\": \"gg\",\n    \"end of document\": \"G\",\n    \"end of file\": \"G\",\n```\n\nWith character arguments:\n\n```python\n    \"jump to mark\": \"'\",\n    \"find\": \"f\",\n    \"find reversed\": \"F\",\n    \"find previous\": \"F\",\n    \"till\": \"t\",\n    \"till reversed\": \"T\",\n    \"till previous\": \"T\",\n    \"last\": \"$F\",  ## find starting end of line\n```\n\n### Text object selection\n\n```python\n    \"word\": \"w\",\n    \"words\": \"w\",\n    \"big word\": \"W\",\n    \"big words\": \"W\",\n    \"block\": \"b\",\n    \"blocks\": \"b\",\n    \"big block\": \"B\",\n    \"big blocks\": \"B\",\n    \"dubquote\": '\"',\n    \"dub quote\": '\"',\n    \"double quotes\": '\"',\n    \"quote\": \"'\",\n    \"single quotes\": \"'\",\n    \"ticks\": \"'\",\n    \"parens\": \"(\",\n    \"parenthesis\": \"(\",\n    \"angle brackets\": \"\u003c\",\n    \"curly braces\": \"{\",\n    \"braces\": \"{\",\n    \"square brackets\": \"[\",\n    \"squares \": \"[\",\n    \"brackets\": \"[\",\n    \"backticks\": \"`\",\n    \"sentence\": \"s\",\n    \"sentences\": \"s\",\n    \"paragraph\": \"p\",\n    \"paragraphs\": \"p\",\n    \"tag block\": \"t\",\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffidgetingbits%2Ftalon-vim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffidgetingbits%2Ftalon-vim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffidgetingbits%2Ftalon-vim/lists"}