retrovim 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/.conda/retrovim.yaml +259 -0
  2. package/.conda/terax.icns +0 -0
  3. package/.conda/terax.ico +0 -0
  4. package/.conda/terax.png +0 -0
  5. package/.github/workflows/release.yml +95 -0
  6. package/.gitmodules +3 -0
  7. package/.npm/kanata_touchcursor.js +28 -0
  8. package/.npm/nvim.js +26 -0
  9. package/.npm/yazi.js +26 -0
  10. package/.npm/zsh.js +17 -0
  11. package/.pip/kanata_touchcursor/__init__.py +28 -0
  12. package/.pip/nvim/__init__.py +31 -0
  13. package/.pip/yazi/__init__.py +31 -0
  14. package/.pip/zsh/__init__.py +22 -0
  15. package/CHANGELOG.md +26 -0
  16. package/LICENSE +674 -0
  17. package/README.md +336 -0
  18. package/kanata/touchcursor.kbd +164 -0
  19. package/nvim/init.lua +813 -0
  20. package/nvim/plugins/mini.nvim/.github/DISCUSSION_TEMPLATE/q-a.yml +72 -0
  21. package/nvim/plugins/mini.nvim/.github/ISSUE_TEMPLATE/bug-report.yml +136 -0
  22. package/nvim/plugins/mini.nvim/.github/ISSUE_TEMPLATE/config.yml +5 -0
  23. package/nvim/plugins/mini.nvim/.github/ISSUE_TEMPLATE/feature-request.yml +75 -0
  24. package/nvim/plugins/mini.nvim/.github/PULL_REQUEST_TEMPLATE.md +2 -0
  25. package/nvim/plugins/mini.nvim/.github/workflows/quality-control.yml +150 -0
  26. package/nvim/plugins/mini.nvim/.pre-commit-config.yaml +20 -0
  27. package/nvim/plugins/mini.nvim/.stylua.toml +7 -0
  28. package/nvim/plugins/mini.nvim/.styluaignore +1 -0
  29. package/nvim/plugins/mini.nvim/CHANGELOG.md +1894 -0
  30. package/nvim/plugins/mini.nvim/CODE_OF_CONDUCT.md +132 -0
  31. package/nvim/plugins/mini.nvim/CONTRIBUTING.md +331 -0
  32. package/nvim/plugins/mini.nvim/LICENSE +21 -0
  33. package/nvim/plugins/mini.nvim/MAINTAINING.md +330 -0
  34. package/nvim/plugins/mini.nvim/Makefile +51 -0
  35. package/nvim/plugins/mini.nvim/README.md +261 -0
  36. package/nvim/plugins/mini.nvim/TESTING.md +1011 -0
  37. package/nvim/plugins/mini.nvim/benchmarks/starter/README.md +35 -0
  38. package/nvim/plugins/mini.nvim/benchmarks/starter/benchmark.sh +56 -0
  39. package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_dashboard-alpha.lua +21 -0
  40. package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_dashboard-original.lua +17 -0
  41. package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_dashboard-starter.lua +18 -0
  42. package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_empty.lua +4 -0
  43. package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_starter-default.lua +7 -0
  44. package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_startify-alpha.lua +10 -0
  45. package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_startify-original.lua +7 -0
  46. package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_startify-starter.lua +20 -0
  47. package/nvim/plugins/mini.nvim/benchmarks/starter/install.sh +10 -0
  48. package/nvim/plugins/mini.nvim/benchmarks/starter/make_summary.py +68 -0
  49. package/nvim/plugins/mini.nvim/benchmarks/starter/startup-summary.md +10 -0
  50. package/nvim/plugins/mini.nvim/colors/miniautumn.lua +55 -0
  51. package/nvim/plugins/mini.nvim/colors/minicyan.lua +95 -0
  52. package/nvim/plugins/mini.nvim/colors/minischeme.lua +95 -0
  53. package/nvim/plugins/mini.nvim/colors/minispring.lua +53 -0
  54. package/nvim/plugins/mini.nvim/colors/minisummer.lua +49 -0
  55. package/nvim/plugins/mini.nvim/colors/miniwinter.lua +51 -0
  56. package/nvim/plugins/mini.nvim/colors/randomhue.lua +16 -0
  57. package/nvim/plugins/mini.nvim/doc/mini-ai.txt +889 -0
  58. package/nvim/plugins/mini.nvim/doc/mini-align.txt +923 -0
  59. package/nvim/plugins/mini.nvim/doc/mini-animate.txt +937 -0
  60. package/nvim/plugins/mini.nvim/doc/mini-base16.txt +285 -0
  61. package/nvim/plugins/mini.nvim/doc/mini-basics.txt +359 -0
  62. package/nvim/plugins/mini.nvim/doc/mini-bracketed.txt +622 -0
  63. package/nvim/plugins/mini.nvim/doc/mini-bufremove.txt +123 -0
  64. package/nvim/plugins/mini.nvim/doc/mini-clue.txt +760 -0
  65. package/nvim/plugins/mini.nvim/doc/mini-cmdline.txt +392 -0
  66. package/nvim/plugins/mini.nvim/doc/mini-colors.txt +880 -0
  67. package/nvim/plugins/mini.nvim/doc/mini-comment.txt +230 -0
  68. package/nvim/plugins/mini.nvim/doc/mini-completion.txt +477 -0
  69. package/nvim/plugins/mini.nvim/doc/mini-cursorword.txt +105 -0
  70. package/nvim/plugins/mini.nvim/doc/mini-deps.txt +590 -0
  71. package/nvim/plugins/mini.nvim/doc/mini-diff.txt +661 -0
  72. package/nvim/plugins/mini.nvim/doc/mini-doc.txt +434 -0
  73. package/nvim/plugins/mini.nvim/doc/mini-extra.txt +856 -0
  74. package/nvim/plugins/mini.nvim/doc/mini-files.txt +1018 -0
  75. package/nvim/plugins/mini.nvim/doc/mini-fuzzy.txt +160 -0
  76. package/nvim/plugins/mini.nvim/doc/mini-git.txt +425 -0
  77. package/nvim/plugins/mini.nvim/doc/mini-hipatterns.txt +489 -0
  78. package/nvim/plugins/mini.nvim/doc/mini-hues.txt +420 -0
  79. package/nvim/plugins/mini.nvim/doc/mini-icons.txt +508 -0
  80. package/nvim/plugins/mini.nvim/doc/mini-indentscope.txt +485 -0
  81. package/nvim/plugins/mini.nvim/doc/mini-input.txt +932 -0
  82. package/nvim/plugins/mini.nvim/doc/mini-jump.txt +202 -0
  83. package/nvim/plugins/mini.nvim/doc/mini-jump2d.txt +525 -0
  84. package/nvim/plugins/mini.nvim/doc/mini-keymap.txt +449 -0
  85. package/nvim/plugins/mini.nvim/doc/mini-map.txt +717 -0
  86. package/nvim/plugins/mini.nvim/doc/mini-misc.txt +431 -0
  87. package/nvim/plugins/mini.nvim/doc/mini-move.txt +181 -0
  88. package/nvim/plugins/mini.nvim/doc/mini-notify.txt +434 -0
  89. package/nvim/plugins/mini.nvim/doc/mini-nvim.txt +431 -0
  90. package/nvim/plugins/mini.nvim/doc/mini-operators.txt +472 -0
  91. package/nvim/plugins/mini.nvim/doc/mini-pairs.txt +346 -0
  92. package/nvim/plugins/mini.nvim/doc/mini-pick.txt +1535 -0
  93. package/nvim/plugins/mini.nvim/doc/mini-sessions.txt +239 -0
  94. package/nvim/plugins/mini.nvim/doc/mini-snippets.txt +1291 -0
  95. package/nvim/plugins/mini.nvim/doc/mini-splitjoin.txt +536 -0
  96. package/nvim/plugins/mini.nvim/doc/mini-starter.txt +618 -0
  97. package/nvim/plugins/mini.nvim/doc/mini-statusline.txt +361 -0
  98. package/nvim/plugins/mini.nvim/doc/mini-surround.txt +863 -0
  99. package/nvim/plugins/mini.nvim/doc/mini-tabline.txt +151 -0
  100. package/nvim/plugins/mini.nvim/doc/mini-test.txt +966 -0
  101. package/nvim/plugins/mini.nvim/doc/mini-trailspace.txt +91 -0
  102. package/nvim/plugins/mini.nvim/doc/mini-visits.txt +937 -0
  103. package/nvim/plugins/mini.nvim/logo.png +0 -0
  104. package/nvim/plugins/mini.nvim/lua/mini/ai.lua +2244 -0
  105. package/nvim/plugins/mini.nvim/lua/mini/align.lua +2076 -0
  106. package/nvim/plugins/mini.nvim/lua/mini/animate.lua +2127 -0
  107. package/nvim/plugins/mini.nvim/lua/mini/base16.lua +1752 -0
  108. package/nvim/plugins/mini.nvim/lua/mini/basics.lua +772 -0
  109. package/nvim/plugins/mini.nvim/lua/mini/bracketed.lua +2013 -0
  110. package/nvim/plugins/mini.nvim/lua/mini/bufremove.lua +283 -0
  111. package/nvim/plugins/mini.nvim/lua/mini/clue.lua +2096 -0
  112. package/nvim/plugins/mini.nvim/lua/mini/cmdline.lua +1182 -0
  113. package/nvim/plugins/mini.nvim/lua/mini/colors.lua +2483 -0
  114. package/nvim/plugins/mini.nvim/lua/mini/comment.lua +586 -0
  115. package/nvim/plugins/mini.nvim/lua/mini/completion.lua +2094 -0
  116. package/nvim/plugins/mini.nvim/lua/mini/cursorword.lua +311 -0
  117. package/nvim/plugins/mini.nvim/lua/mini/deps.lua +1660 -0
  118. package/nvim/plugins/mini.nvim/lua/mini/diff.lua +1938 -0
  119. package/nvim/plugins/mini.nvim/lua/mini/doc.lua +1371 -0
  120. package/nvim/plugins/mini.nvim/lua/mini/extra.lua +2290 -0
  121. package/nvim/plugins/mini.nvim/lua/mini/files.lua +3145 -0
  122. package/nvim/plugins/mini.nvim/lua/mini/fuzzy.lua +356 -0
  123. package/nvim/plugins/mini.nvim/lua/mini/git.lua +1737 -0
  124. package/nvim/plugins/mini.nvim/lua/mini/hipatterns.lua +1042 -0
  125. package/nvim/plugins/mini.nvim/lua/mini/hues.lua +2088 -0
  126. package/nvim/plugins/mini.nvim/lua/mini/icons.lua +2254 -0
  127. package/nvim/plugins/mini.nvim/lua/mini/indentscope.lua +1158 -0
  128. package/nvim/plugins/mini.nvim/lua/mini/init.lua +427 -0
  129. package/nvim/plugins/mini.nvim/lua/mini/input.lua +2183 -0
  130. package/nvim/plugins/mini.nvim/lua/mini/jump.lua +609 -0
  131. package/nvim/plugins/mini.nvim/lua/mini/jump2d.lua +1244 -0
  132. package/nvim/plugins/mini.nvim/lua/mini/keymap.lua +880 -0
  133. package/nvim/plugins/mini.nvim/lua/mini/map.lua +1709 -0
  134. package/nvim/plugins/mini.nvim/lua/mini/misc.lua +969 -0
  135. package/nvim/plugins/mini.nvim/lua/mini/move.lua +509 -0
  136. package/nvim/plugins/mini.nvim/lua/mini/notify.lua +938 -0
  137. package/nvim/plugins/mini.nvim/lua/mini/operators.lua +1349 -0
  138. package/nvim/plugins/mini.nvim/lua/mini/pairs.lua +657 -0
  139. package/nvim/plugins/mini.nvim/lua/mini/pick.lua +3876 -0
  140. package/nvim/plugins/mini.nvim/lua/mini/sessions.lua +689 -0
  141. package/nvim/plugins/mini.nvim/lua/mini/snippets.lua +2828 -0
  142. package/nvim/plugins/mini.nvim/lua/mini/splitjoin.lua +1132 -0
  143. package/nvim/plugins/mini.nvim/lua/mini/starter.lua +1599 -0
  144. package/nvim/plugins/mini.nvim/lua/mini/statusline.lua +686 -0
  145. package/nvim/plugins/mini.nvim/lua/mini/surround.lua +2388 -0
  146. package/nvim/plugins/mini.nvim/lua/mini/tabline.lua +564 -0
  147. package/nvim/plugins/mini.nvim/lua/mini/test.lua +2516 -0
  148. package/nvim/plugins/mini.nvim/lua/mini/trailspace.lua +215 -0
  149. package/nvim/plugins/mini.nvim/lua/mini/visits.lua +1577 -0
  150. package/nvim/plugins/mini.nvim/readmes/mini-ai.md +190 -0
  151. package/nvim/plugins/mini.nvim/readmes/mini-align.md +203 -0
  152. package/nvim/plugins/mini.nvim/readmes/mini-animate.md +214 -0
  153. package/nvim/plugins/mini.nvim/readmes/mini-base16.md +198 -0
  154. package/nvim/plugins/mini.nvim/readmes/mini-basics.md +184 -0
  155. package/nvim/plugins/mini.nvim/readmes/mini-bracketed.md +193 -0
  156. package/nvim/plugins/mini.nvim/readmes/mini-bufremove.md +139 -0
  157. package/nvim/plugins/mini.nvim/readmes/mini-clue.md +260 -0
  158. package/nvim/plugins/mini.nvim/readmes/mini-cmdline.md +183 -0
  159. package/nvim/plugins/mini.nvim/readmes/mini-colors.md +169 -0
  160. package/nvim/plugins/mini.nvim/readmes/mini-comment.md +183 -0
  161. package/nvim/plugins/mini.nvim/readmes/mini-completion.md +217 -0
  162. package/nvim/plugins/mini.nvim/readmes/mini-cursorword.md +137 -0
  163. package/nvim/plugins/mini.nvim/readmes/mini-deps.md +271 -0
  164. package/nvim/plugins/mini.nvim/readmes/mini-diff.md +289 -0
  165. package/nvim/plugins/mini.nvim/readmes/mini-doc.md +198 -0
  166. package/nvim/plugins/mini.nvim/readmes/mini-extra.md +158 -0
  167. package/nvim/plugins/mini.nvim/readmes/mini-files.md +247 -0
  168. package/nvim/plugins/mini.nvim/readmes/mini-fuzzy.md +134 -0
  169. package/nvim/plugins/mini.nvim/readmes/mini-git.md +168 -0
  170. package/nvim/plugins/mini.nvim/readmes/mini-hipatterns.md +176 -0
  171. package/nvim/plugins/mini.nvim/readmes/mini-hues.md +285 -0
  172. package/nvim/plugins/mini.nvim/readmes/mini-icons.md +183 -0
  173. package/nvim/plugins/mini.nvim/readmes/mini-indentscope.md +191 -0
  174. package/nvim/plugins/mini.nvim/readmes/mini-input.md +163 -0
  175. package/nvim/plugins/mini.nvim/readmes/mini-jump.md +161 -0
  176. package/nvim/plugins/mini.nvim/readmes/mini-jump2d.md +197 -0
  177. package/nvim/plugins/mini.nvim/readmes/mini-keymap.md +205 -0
  178. package/nvim/plugins/mini.nvim/readmes/mini-map.md +191 -0
  179. package/nvim/plugins/mini.nvim/readmes/mini-misc.md +145 -0
  180. package/nvim/plugins/mini.nvim/readmes/mini-move.md +163 -0
  181. package/nvim/plugins/mini.nvim/readmes/mini-notify.md +175 -0
  182. package/nvim/plugins/mini.nvim/readmes/mini-operators.md +193 -0
  183. package/nvim/plugins/mini.nvim/readmes/mini-pairs.md +158 -0
  184. package/nvim/plugins/mini.nvim/readmes/mini-pick.md +340 -0
  185. package/nvim/plugins/mini.nvim/readmes/mini-sessions.md +164 -0
  186. package/nvim/plugins/mini.nvim/readmes/mini-snippets.md +373 -0
  187. package/nvim/plugins/mini.nvim/readmes/mini-splitjoin.md +194 -0
  188. package/nvim/plugins/mini.nvim/readmes/mini-starter.md +176 -0
  189. package/nvim/plugins/mini.nvim/readmes/mini-statusline.md +155 -0
  190. package/nvim/plugins/mini.nvim/readmes/mini-surround.md +190 -0
  191. package/nvim/plugins/mini.nvim/readmes/mini-tabline.md +156 -0
  192. package/nvim/plugins/mini.nvim/readmes/mini-test.md +175 -0
  193. package/nvim/plugins/mini.nvim/readmes/mini-trailspace.md +137 -0
  194. package/nvim/plugins/mini.nvim/readmes/mini-visits.md +243 -0
  195. package/nvim/plugins/mini.nvim/scripts/dual_log.sh +13 -0
  196. package/nvim/plugins/mini.nvim/scripts/dual_push.sh +15 -0
  197. package/nvim/plugins/mini.nvim/scripts/dual_release.sh +102 -0
  198. package/nvim/plugins/mini.nvim/scripts/dual_sync.sh +115 -0
  199. package/nvim/plugins/mini.nvim/scripts/init-deps-example.lua +59 -0
  200. package/nvim/plugins/mini.nvim/scripts/lint-filename-length.sh +16 -0
  201. package/nvim/plugins/mini.nvim/scripts/lintcommit-ci.sh +18 -0
  202. package/nvim/plugins/mini.nvim/scripts/lintcommit.lua +393 -0
  203. package/nvim/plugins/mini.nvim/scripts/minidoc.lua +57 -0
  204. package/nvim/plugins/mini.nvim/scripts/minimal_init.lua +28 -0
  205. package/nvim/plugins/mini.nvim/scripts/minitest.lua +4 -0
  206. package/package.json +16 -0
  207. package/pyproject.toml +43 -0
  208. package/yazi/init.lua +12 -0
  209. package/yazi/keymap.toml +114 -0
  210. package/yazi/lesskey +5 -0
  211. package/yazi/plugins/bookmarks.yazi/main.lua +86 -0
  212. package/yazi/plugins/cd-git-root.yazi/main.lua +31 -0
  213. package/yazi/plugins/smart-enter.yazi/main.lua +11 -0
  214. package/yazi/theme.toml +26 -0
  215. package/yazi/yazi.toml +15 -0
  216. package/zsh/.zshrc +145 -0
  217. package/zsh/starship.toml +20 -0
  218. package/zsh/zsh-patina.toml +2 -0
package/README.md ADDED
@@ -0,0 +1,336 @@
1
+ <img width="1366" height="768" alt="screenshot" src="https://github.com/user-attachments/assets/72895442-cdaa-445c-aefe-6c487d89ba13" />
2
+
3
+ <div align="center">
4
+
5
+ terax-terminal preconfigured with neovim IDE + yazi builtin plugins + zsh builtin plugins + kanata keyboard layout
6
+
7
+ ---
8
+
9
+ **[<kbd> <br> Install <br> </kbd>][Install]** 
10
+ **[<kbd> <br> Zsh Keymaps <br> </kbd>][Zsh Keymaps]** 
11
+ **[<kbd> <br> Keyboard-Layout <br> </kbd>][Keyboard-Layout]** 
12
+
13
+ [Install]: #installation
14
+ [Zsh Keymaps]: #zsh-keymaps
15
+ [Keyboard-Layout]: #if-touchcursor-keyboard-layout-started
16
+
17
+ </div>
18
+
19
+ ---
20
+
21
+ <details open><summary>Table of Contents</summary>
22
+
23
+ 1. Neovim keymaps
24
+ - [Neovim text object that starts with a/i](#neovim-text-object-that-starts-with-ai)
25
+ - [Neovim text-object/motions/operators that starts with g](#neovim-text-objectmotionsoperators-that-starts-with-g)
26
+ 2. Terminal
27
+ - [zsh keymaps](#zsh-keymaps)
28
+ 3. [If Touchcursor Keyboard Layout Started](#if-touchcursor-keyboard-layout-started)
29
+ 4. Installation
30
+ - [Install](#installation)
31
+ 5. [Related projects](#related-projects)
32
+
33
+ </details>
34
+
35
+ ---
36
+
37
+ ## Neovim text object that starts with `a`/`i`
38
+
39
+ <details open><summary></summary>
40
+
41
+ | text-object keymap | repeat action key | finds and autojumps? | text-object name | description | inner / outer |
42
+ | :--------------------------------: | :---------------: | :------------------: | :--------------- | :---------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------- |
43
+ | `ia`, `aa` | `.` | yes | \_argument | whole argument/parameter of a function | outer includes comma |
44
+ | `ib`, `ab` | `.` | yes | \_braces | find the nearest inside of `()` `[]` `{}` | outer includes braces |
45
+ | `iB`, `aB` | `.` | yes | \_brackets | find the nearest inside of `{}` `:help iB` | outer includes brackets |
46
+ | `id`, `ad` | `.` | yes | diagnostic | find errors, warnings, info or hints (only works inside neovim and requires LSP) | outer same as inner |
47
+ | `ie`, `ae` | `.` | | line | from start to end of line without beginning whitespaces (line wise) | outer includes begining whitespaces |
48
+ | `if`, `af` | `.` | yes | \_function_call | like `function args` but only when a function is called | outer includes the function called |
49
+ | `ih`, `ah` | `.` | yes | \_html_attribute | attribute in html/xml like `href="foobar.com"` | inner is only the value inside the quotes trailing comma and space |
50
+ | `ii`, `ai` | `.` | | indent_noblanks | surrounding lines with same or higher indentation delimited by blanklines | outer includes line above |
51
+ | `iI`, `aI` | `.` | | indent | surrounding lines with same or higher indentation | outer includes line above and below |
52
+ | `ik`, `ak` | `.` | yes | \_key | key of key-value pair, or left side of a assignment | outer includes spaces |
53
+ | `il`, `al` | `.` | yes | +last | go to last mini.ai text-object (which start with `_`) | requires `i`/`a` example `vilk` |
54
+ | `im`, `am` | `.` | yes | \_number | numbers, similar to `<C-a>` | inner: only pure digits, outer: number including minus sign and decimal point |
55
+ | `in`, `an` | `.` | yes | +next | go to Next mini.ai text-object (which start with `_`) | requires `i`/`a` example `viNk` |
56
+ | `io`, `ao` | `.` | yes | \_whitespaces | whitespace beetween characters | outer includes surroundings |
57
+ | `ip`, `ap` | `.` | | paragraph | blanklines can also be treat as paragraphs when focused on a blankline | outer includes below lines |
58
+ | `iq`, `aq` | `.` | yes | \_quotes | inside of `` ` ` `` or `' '` or `" "` | outer includes openning and closing quotes |
59
+ | `is`, `as` | `.` | | sentence | sentence delimited by dots of blanklines `:help sentence` | outer includes spaces |
60
+ | `it`, `at` | `.` | yes | \_tag | inside of a html/jsx tag | outer includes openning and closing tags |
61
+ | `iu`, `au` | `.` | | \_subword | like `iw`, but treating `-`, `_`, and `.` as word delimiters _and_ only part of camelCase | outer includes trailing `_`,`-`, or space |
62
+ | `iv`, `av` | `.` | yes | \_value | value of key-value pair, or right side of a assignment | outer includes trailing commas or semicolons or spaces |
63
+ | `iw`, `aw` | `.` | | word | from cursor to end of word (delimited by punctuation or space) | outer includes whitespace ending |
64
+ | `iW`, `aW` | `.` | | WORD | from cursor to end of WORD (includes punctuation) | outer includes whitespace ending |
65
+ | `ix`, `ax` | `.` | yes | \_Hex | hexadecimal number or color | outer includes hash `#` |
66
+ | `i?`, `a?` | `.` | yes | \_user_prompt | will ask you for enter the delimiters of a text object (useful for dot repeteability) | outer includes surroundings |
67
+ | `i(`, `i)`, `a(`, `a)` | `.` | yes | `(` or `)` | inside `()` | outer includes surroundings |
68
+ | `i[`, `i]`, `a[`, `a]` | `.` | yes | `[` or `]` | inside `[]` | outer includes surroundings |
69
+ | `i{`, `i}`, `a{`, `a}` | `.` | yes | `{` or `}` | inside `{}` | outer includes surroundings |
70
+ | `i<`, `i>`, `a<`, `a>` | `.` | yes | `<` or `>` | inside `<>` | outer includes surroundings |
71
+ | `` i` ``, `` a` `` | `.` | yes | apostrophe | inside `` ` ` `` | outer includes surroundings |
72
+ | `i<punctuation>`, `a<punctuation>` | `.` | yes | `<punctuation>` | inside `<punctuation><punctuation>` | outer includes surroundings |
73
+
74
+ </details>
75
+
76
+ ## Neovim text-object/motions/operators that starts with `g`
77
+
78
+ <details open><summary></summary>
79
+
80
+ | keymap | mode | repeat action key | repeat jump key | text-object description | `n`ormal mode = `n` = operator | `o`perating-pending mode = `o` = text-object | `v`isual mode = `v` = `x` = motion | examples in normal mode |
81
+ | :---------------: | :---------: | :---------------: | :--------------------: | :------------------------------------------------------------------------ | :--------------------------------------- | :------------------------------------------- | :-------------------------------------- | :---------------------------------------------------------------------------------- |
82
+ | `[c` / `]c` | `n`,`o`,`x` | `.` | | previous/next comment | finds and jumps | jumps | uses selection | `v]c` selects from cursor position until next comment |
83
+ | `[d` / `]d` | `n`,`o`,`x` | `.` | | previous/next diagnostic | finds and jumps | jumps | uses selection | `v]d` selects from cursor position until next diagnostic |
84
+ | `[h` / `]h` | `n`,`o`,`x` | `.` | | previous/next git hunk | finds and jumps | jumps | uses selection | `v]h` selects from cursor position until next git hunk |
85
+ | `[i` / `]i` | `n`,`o`,`x` | `.` | | previous/next indent | finds and jumps | jumps | uses selection | `v]i` selects from cursor position until next indent |
86
+ | `g[`/`g]` | `n`,`o`,`x` | `.` | | +prev/+next textobj (only textobj with `_` prefix) | followed by text-object | finds and jumps | uses selection | `g]q` next end of quotation |
87
+ | `g\` / `g\|` | `n`,`o`,`x` | `.` | `\` / `\|` | +end/+start of textobj (any inner/outer textobj) | followed by text-object | finds and jumps | uses selection (`\` / `\|` to reselect) | `dg\iq` delete until inner end of quotation (`.` to repeat) |
88
+ | `qq ... q` | `n`,`x` | `.` | `\` or `@q` + `@@` | repeats ... macro | followed by text-object | | selects from cursor position | `qqviqq` selects quotation (`\` to repeat) |
89
+ | `qw ... q` | `n`,`x` | `.` | `\|` or `@w` + `@@` | repeats ... macro | followed by text-object | | selects from cursor position | `qwdiqq` delete inner quotation (`\| ` to repeat) |
90
+ | `g;`/`g,` | `n` | | | go backward/forward in `:changes` | jumps | | | `g;` go to last change |
91
+ | `g.` | `n`,`o`,`x` | | | jump to last change | jumps | won't jump | uses selection | `vg.` selects from cursor position until last change |
92
+ | `ga` | `n`,`x` | | | +align | followed by textobject/motion | | uses selected region | `gaip=` or `vipga=` aligns a paragraph by `=` |
93
+ | `gb` | `n`,`x` | `.` | | +blackhole register | followed by textobject/motion | | deletes selection | `gbip` or `vipgb` deletes a paragraph without copying |
94
+ | `gB` | `n`,`x` | `.` | | blackhole linewise | text-object not required | | deletes line | `gB.` deletes two lines without saving it in the register |
95
+ | `gc` | `n`,`o`,`x` | `.` | | +comment (`vgc` in normal mode will select a block comment) | followed by textobject/motion | won't jump | uses selection | `gcip` or `vipgc` comments a paragraph |
96
+ | `gC` | `n`,`o`,`x` | `.` | | block comment (supports selection `vgC` or just `gC`) | select text-object under cursor | won't jump | reselects | `vgC` selects current block of comment |
97
+ | `gd` | `n` | | | go to definition | jumps | | | `gd` go to definition of word under cursor |
98
+ | `gD` | `x` | | | git diff/hunk (vscode selects from cursor position to end of diff) | | won't jump | reselects | `vgD` selects modified code |
99
+ | `ge`/`gE` | `n`,`o`,`x` | | | previous end of word/WORD (`WORD` omits punctuation) | jumps | uses cursor position | uses selection | `vge` selects from cursor position until previous end of word |
100
+ | `gf` | `n`,`x` | | | go to file under cursor | jumps | | uses selection | `gf` open in a tab the path under cursor |
101
+ | `gg`/`G` | `n`,`o`,`x` | `.` | | first/last line | jumps | uses cursor position | uses selection | `vgg` selects until first line |
102
+ | `gi` | `n`,`x` | | | last position of cursor in insert mode | finds and jumps | | uses selection | `vgi` selects until last insertion |
103
+ | `gj`/`gk` | `n`,`o`,`x` | `.` | | go down/up when wrapped | jumps | uses cursor position | uses selection | `vgj` selects one line down |
104
+ | `gJ` | `n`,`x` | `.` | | join below lines | joins | | uses selection | `vgJ` joins selected lines into one line |
105
+ | `gm` | `n`,`x` | | | +multiply (duplicate text) operator | | won't jump | uses selection | `gmap` or `vapgm` duplicates paragraph without replacing clipboard |
106
+ | `gM` | `n`,`x` | | | go to middle line | jumps | | uses selection | `vgM` selects until middle of the line |
107
+ | `gp`/`gn` | `n`,`o`,`x` | `.` | | prev/next find | text-object not required | finds and jumps | uses selection | `cgn???` replaces last search with `???` forwardly |
108
+ | `go` | `x` | | | jsx/tsx comment (only inside neovim) | | | uses selection | `vipgt` comments out a paragraph with `{/* */}` |
109
+ | `gq` | `n`,`x` | `.` | | +format selection/comments 80chars (LSP overrides it) | requires a textobject | | applies to selection | `gqip` or `vipgq` formats a paragraph |
110
+ | `gr` | `n`,`x` | `.` | | +replace (with register) operator | followed by text-object/motion | | applies to selection | `griw` or `viwgr` replaces word with register (yanked text) |
111
+ | `gs` | `n`,`x` | `.` | | +sort Operator | followed by text-object/motion | | uses selection | `gsip` or `vipgs` sorts a paragraph |
112
+ | `gS` | `n`,`x` | `.` | | split/join arguments | toggles inside `{}`,`[]`,`()` | | followed by operator | `vipgS` joins selected lines in one line |
113
+ | `gu`/`gU` | `n`,`x` | `.` | | +to lowercase/uppercase | requires a text-object | | applies to selection | `gUiw` (neovim and cvim only) or `viwgU` uppercase a word |
114
+ | `gv` | `n`,`x` | | | last selected | finds and jumps | | reselects | `vgv` selects last selection |
115
+ | `gw` | `n`,`x` | `.` | | split/join comments/lines 80chars (keeps cursor position) | requires a text-object | | applies to selection | `gwip` or `vipgw` split/join a paragraph limited by 80 characters |
116
+ | `gx` | `n`,`x` | `.` | | +exchange (text) Operator | followed by text-object/motion | | uses selection | `gxiw` or `viwgx` exchanges word with another `gxiw` or `viwgx` or `.` |
117
+ | `gy`/`gY` | `n` | `.` | | redo register (dot to paste forward/bacward) | paste | | | `gy.....` paste deleted lines by history |
118
+ | `g-`/`g+` | `n`,`x` | `.` | | decrement/increment number | selects number under cursor | | uses selected number | `g+..` or `3g+` increments by 3 |
119
+ | `g<Up>`/`g<Down>` | `n`,`x` | | | numbers ascending/descending | selects number under cursor | | uses selected number | `g<Up>` increases selected numbers ascendingly |
120
+ | `=` | `n`,`x` | `.` | | +autoindent | followed by text-object | | uses selection | `==` autoindents line |
121
+ | `<`/`>` | `n`,`x` | `.` | | +indent left/right | followed by text-object | | uses selection | `<<` indents to left a line |
122
+ | `0`/`$` | `n`,`o`,`x` | `.` | | start/end of line | jumps | | uses selection | `d$j.` deletes two end-of-lines |
123
+ | `^` | `n`,`o`,`x` | `.` | | start of line (non-blankline) | jumps | | uses selection | `d^` deletes until start of line (after whitespace) |
124
+ | `%` | `n`,`o`,`x` | | | matching character: '()', '{}', '[]' | finds and jumps | | finds and jumps | `d%` deletes until bracket |
125
+ | `(`/`)` | `n`,`o`,`x` | `.` | | prev/next sentence | jumps | | uses selection | `d(.` deletes until start of sentence (two times) |
126
+ | `{`/`}` | `n`,`o`,`x` | `.` | | prev/next empty line (before a paragraph) | jumps | | uses selection | `d{.` deletes until next empty line (two times) |
127
+ | `[[`/`]]` | `n`,`o`,`x` | `.` | | prev/next section | jumps | | uses selection | `d[[` deletes until start of section |
128
+ | `b`/`w` | `n`,`o`,`x` | `.` | | prev/next word | jumps | | uses selection | `db` deletes until start of word |
129
+ | `B`/`W` | `n`,`o`,`x` | `.` | | prev/next WORD | jumps | | uses selection | `dW.` deletes 2 WORDS |
130
+ | `e`/`E` | `n`,`o`,`x` | `.` | | end of word/WORD | jumps | | uses selection | `de` deletes until end of word |
131
+ | `/` | `n`,`o`,`x` | `.` | | search with labels like [flash.nvim](https://github.com/folke/flash.nvim) | jumps | finds and jumps | uses selection | `d/` then `search` then `label` to delete `c/` to change `v/` to select `/` to jump |
132
+ | `f`/`F` | `n`,`o`,`x` | `.` | `;`forward `,`backward | move to next/prev char (`f` forward, `F` backward for vscode-neovim) | jumps | | uses selection | `df,` deletes until a next `,` |
133
+ | `t`/`T` | `n`,`o`,`x` | `.` | `;`forward `,`backward | move before next/prev char (`t` forward, `T` backward for vscode-neovim) | jumps | | uses selection | `dt,` deletes before next `,` |
134
+ | `s` | `n`,`x` | `.` | | +surround (followed by a=add, d=delete, r=replace) | followed by textobject/motion (only add) | | uses selection (only add) | `saiw"` or `viwsa"` adds `"` to word, `sd"` deletes `"`, `sr"'` replaces `"` |
135
+ | `U` | `n`,`x` | | `U` | whichkey repeater (inside neovim repeats `:<command>` like macros) | | | | `<s-space>gjUUU` repeats next-git-change (`:normal A,jkj` end of line comma) |
136
+ | `Y` | `n`,`x` | | | yank until end of line | | | uses selection | `v^Y` yanks line |
137
+ | `<space><space>p` | `n`,`x` | `.` | | Paste after (secondary clipboard) | | | uses selection | `viw<space><space>p` replaces word with a second clipboard |
138
+ | `<space><space>P` | `n`,`x` | `.` | | Paste before (secondary clipboard) | | | uses selection | `viw<space><space>P` replaces word with a second clipboard |
139
+ | `<space><space>y` | `n`,`x` | | | yank (secondary clipboard) | | | uses selection | `viw<space><space>y` yanks word using the second clipboard |
140
+ | `<space><space>Y` | `n`,`x` | | | yank until end of line (secondary clipboard) | | | uses selection | `v<space><space>Y` yanks until end of line using the second clipboard |
141
+
142
+ </details>
143
+
144
+ ---
145
+
146
+ ## zsh keymaps
147
+
148
+ <details open><summary></summary>
149
+
150
+ | keymap | description |
151
+ | :-----------------: | :--------------------------------------------------------- |
152
+ | `<tab>` | show (dash/path) options or complete path |
153
+ | `<tab><tab>` | enter completion menu |
154
+ | `<esc><esc>` | tmux-copy-mode-like / normal-mode (inside neovim terminal) |
155
+ | `shift+escape` | tmux-copy-mode-like / normal-mode (inside neovim terminal) |
156
+ | `nvim<enter>` | open retronvim's neovim IDE (`<space>` to open whichkey) |
157
+ | `y<enter>` | open yazi (changes directory on exit) |
158
+ | `alt+o` or `<esc>o` | open yazi (even while writing commands) |
159
+ | `alt+h` or `<esc>` | enter vim-mode |
160
+ | `alt+l` | complete inline/ghost suggestion and enter vim-mode |
161
+ | `alt+j` | prev shell history and enter vim-mode |
162
+ | `alt+k` | next shell history and enter vim-mode |
163
+ | `Up` | prev shell history |
164
+ | `Down` | next shell history |
165
+ | `ctrl+r` | search history with fzf |
166
+ | `ctrl+l` | clear screen |
167
+ | `ctrl+alt+l` | clear screen (inside neovim terminal or vscode terminal) |
168
+ | `ctrl+d` | exit signal |
169
+ | `ctrl+c` | cancel signal |
170
+
171
+ </details>
172
+
173
+ ---
174
+
175
+ ## If Touchcursor Keyboard Layout Started
176
+
177
+ <details open><summary></summary>
178
+
179
+ **layer qwerty**
180
+
181
+ ```
182
+ @grl 1 2 3 4 5 6 7 8 9 0 - = @bsp
183
+ tab q w @e r t y u i o p [ ] ret
184
+ @cap a @s @d f g @h @j @k @l @; ' \
185
+ lsft ret z x c v b n m , . / rsft
186
+ lctl lmet @alt @spc @sft rmet rctl
187
+ ```
188
+
189
+ **layer touchcursor** (press and hold space to enter the layer)
190
+
191
+ ```
192
+ _ f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 _
193
+ _ @M↑ del @m↑ @clr @m🡠 _ _ _ _ _ _ _ _
194
+ _ @M↓ @bsp @m↓ spc @m🡪 @🡠 @↓ @↑ @🡪 @yaz _ _
195
+ _ _ _ _ caps @¿ @ñ pgup home end pgdn _ _
196
+ _ _ _ _ _ _ _
197
+ ```
198
+
199
+ | key | description | example / keymap |
200
+ | :--: | :---------------------------------------------------------------------------------------- | :--------------------------------: |
201
+ | @grl | tap: backtick/grave, hold and press `1` = qwerty layer, hold and press `2` = dvorak layer | `` `+2 = dvorak `` |
202
+ | @cap | tap for escape, hold for LeftCtrl | `cap+l = ctrl+l` |
203
+ | @sft | tap for backspace, hold for LeftShift | `RAlt+l = shift+l` |
204
+ | @alt | tap for middle click, hold for LeftAlt | `LAlt+l = LAlt+l` |
205
+ | @spc | tap for space, hold for touchcursor layer, release for qwerty layer | `space+jj = DownArrow + DownArrow` |
206
+ | @; | tap for semicolon, hold for ctrl | `;+click = OpenInNewTab (chrome)` |
207
+ | @clr | clear screen on any shell | `space+r` |
208
+ | @¿ | unicode ¿ | `space+v` |
209
+ | @ñ | unicode ñ | `space+b` |
210
+ | @m🡠 | mouse scrolling left | `space+t` |
211
+ | @m🡪 | mouse scrolling right | `space+g` |
212
+ | @m↑ | mouse scrolling up | `space+e` |
213
+ | @m↓ | mouse scrolling down | `space+d` |
214
+ | @M↑ | mouse fast scrolling up | `space+q` |
215
+ | @M↓ | mouse fast scrolling down | `space+a` |
216
+ | spc | space key | `space+f` |
217
+ | bspc | backspace key | `space+s` |
218
+ | home | home key | `space+m` |
219
+ | end | end key | `space+,` |
220
+ | pgup | pageup key | `space+n` |
221
+ | pgdn | pagedown key | `space+.` |
222
+ | @🡠 | left arrow key | `space+h` |
223
+ | @↓ | down arrow key | `space+j` |
224
+ | @↑ | up arrow key | `space+k` |
225
+ | @🡪 | right arrow key | `space+l` |
226
+ | caps | toggles capslock | `space+c` |
227
+
228
+ </details>
229
+
230
+ ---
231
+
232
+ ## Installation
233
+
234
+ <details open><summary></summary>
235
+
236
+ **Install RetroVim on any terminal or shell**
237
+
238
+ - Powershell (windows):
239
+
240
+ ```bash
241
+ irm pixi.sh/install.ps1 | iex
242
+ pixi g install retrovim -c retronvim -c conda-forge
243
+ ```
244
+
245
+ - SSH/Bash/Zsh (linux/macos):
246
+
247
+ ```bash
248
+ sh <(curl https://pkgx.sh) pixi g install retrovim -c retronvim -c conda-forge --with pixi
249
+ ```
250
+
251
+ - npm + any package manager:
252
+
253
+ ```bash
254
+ # brew install bat eza fzf git kanata lazygit mise neovim ripgrep starship yazi zsh zsh-patina
255
+ # pixi g install bat eza fzf git kanata lazygit mise nvim ripgrep starship yazi zsh zsh-patina -c retronvim -c conda-forge
256
+
257
+ npm install -g retronvim
258
+ ```
259
+
260
+ - pip + any package manager:
261
+
262
+ ```bash
263
+ # brew install bat eza fzf git kanata lazygit mise neovim ripgrep starship yazi zsh zsh-patina
264
+ # pixi g install bat eza fzf git kanata lazygit mise nvim ripgrep starship yazi zsh zsh-patina -c retronvim -c conda-forge
265
+
266
+ pip install retronvim
267
+ ```
268
+
269
+ **Plugins**
270
+
271
+ - RetroVim.conda is shipped with
272
+ - [`bat`](https://github.com/sharkdp/bat)
273
+ - [`eza`](https://github.com/eza-community/eza)
274
+ - [`firacode_nerd_font`](https://github.com/ryanoasis/nerd-fonts)
275
+ - [`fd`](https://github.com/sharkdp/fd)
276
+ - [`fzf`](https://github.com/junegunn/fzf)
277
+ - [`git`](https://github.com/git-for-windows/git)
278
+ - [`kanata`](https://github.com/jtroo/kanata)
279
+ - [`lazygit`](https://github.com/jesseduffield/lazygit)
280
+ - [`mise`](https://github.com/jdx/mise)
281
+ - [`neovim`](https://neovim.io)
282
+ - [`pixi`](https://github.com/prefix-dev/pixi)
283
+ - [`ripgrep`](https://github.com/BurntSushi/ripgrep)
284
+ - [`starship`](https://github.com/starship/starship)
285
+ - [`terax`](https://github.com/crynta/terax-ai)
286
+ - [`yazi`](https://github.com/sxyazi/yazi)
287
+ - [`zerobrew`](https://github.com/lucasgelfond/zerobrew)
288
+ - [`zsh`](https://github.com/zsh-users/zsh)
289
+ - [`zsh-patina`](https://github.com/michel-kraemer/zsh-patina)
290
+ - [`7zip`](https://github.com/ip7z/7zip)
291
+
292
+ - RetroVim/nvim comes with an installer for
293
+ - [`mini.nvim`](https://github.com/echasnovski/mini.nvim) (shipped as git-submodule)
294
+ - [`copilot`](https://github.com/github/copilot-language-server-release) (shipped with sidekick.nvim)
295
+ - [`flash.nvim`](https://github.com/folke/flash.nvim)
296
+ - [`neotype`](https://github.com/rodolfo-arg/neotype)
297
+ - [`nvim-lspconfig`](https://github.com/neovim/nvim-lspconfig)
298
+ - [`sidekick.nvim`](https://github.com/folke/sidekick.nvim) (free copilot nes + agents integration like gemini-cli)
299
+ - [`supermaven`](https://github.com/supermaven-inc/supermaven-nvim) (free copilot)
300
+
301
+ - RetroVim/nvim searches for vscode extensions's snippets in `~/.*/extensions/*/snippets/*code-snippets`
302
+ (alphabetically first `~/.antigravity` otherwise `~/.cursor` otherwise `~/.vscode` otherwise `~/.windsurf`)
303
+ and automatically adds them to `mini.completion`
304
+
305
+ - if you see: `No contains a valid JSON object` then to fix it use biome linter usually it is extras commas or comments
306
+ - if you see: `File is absent or not readable` then delete the file to make `mini.snippet` work
307
+
308
+ - `Touchcursor Keyboard Layout` on `MacOs` requires `zb install karabiner`
309
+
310
+ - `terax` on `archlinux` requires `pacman -S webkit2gtk-4.1`
311
+
312
+ - `terax` on `debian` requires `apt install webkit2gtk-4.1-dev`
313
+
314
+ - `terax` on `linux` requires `chsh --shell /bin/zsh` (sets zsh as default shell)
315
+
316
+ - `terax` requires the setting `Font family: FiraCode Nerd Font` for icons support (`pixi exec --channel retronvim -- firacode-nerdfont-installer` to install firacode font)
317
+
318
+ </details>
319
+
320
+ ## Related projects
321
+
322
+ <details open><summary></summary>
323
+
324
+ - [yeferyv/RetroNvim](https://github.com/yeferyv/retronvim)
325
+ vscode extension with minimal whichkey, lazyvim, terax, yazi, zsh and kanata setup
326
+
327
+ - [yeferyv/dotfiles](https://github.com/yeferyv/dotfiles)
328
+ retronvim + [hyprland](https://hypr.land) setup
329
+
330
+ - [binvim](https://github.com/bgunnarsson/binvim/)
331
+ neovim IDE written in rust (with copilot, agents, text-objects, whichkey ...)
332
+
333
+ - [terax](https://github.com/crynta/terax-ai)
334
+ agentic terminal + neovim-like IDE
335
+
336
+ </details>
@@ -0,0 +1,164 @@
1
+ ;; vim:ft=lisp
2
+
3
+ ;; Comments are prefixed by double-semicolon. A single semicolon is parsed as the
4
+ ;; keyboard key. Comments are ignored for the configuration file.
5
+ ;;
6
+ ;; This configuration language is Lisp-like. If you're unfamiliar with Lisp,
7
+ ;; don't be alarmed. The maintainer jtroo is also unfamiliar with Lisp. You
8
+ ;; don't need to know Lisp in-depth to be able to configure kanata.
9
+ ;;
10
+ ;; If you follow along with the examples, you should be fine. Kanata should
11
+ ;; also hopefully have helpful error messages in case something goes wrong.
12
+ ;; If you need help, you are welcome to ask.
13
+
14
+ ;; testing: map `a` as `A`
15
+ ;; (defcfg process-unmapped-keys yes) (defsrc) (deflayer mylayer) (defoverrides (a) (lsft a))
16
+ ;; (defcfg process-unmapped-keys yes) (defsrc) (deflayermap (mylayer) a (multi lsft a))
17
+
18
+ (defcfg
19
+ linux-x11-repeat-delay-rate 300,50
20
+ )
21
+
22
+ ;; Only one defsrc is allowed.
23
+ ;;
24
+ ;; defsrc defines the keys that will be intercepted by kanata. The order of the
25
+ ;; keys matches with deflayer declarations and all deflayer declarations must
26
+ ;; have the same number of keys as defsrc. Any keys not listed in defsrc will
27
+ ;; be passed straight to the operating system.
28
+ (defsrc
29
+ grv 1 2 3 4 5 6 7 8 9 0 - = bspc
30
+ tab q w e r t y u i o p [ ] ret
31
+ caps a s d f g h j k l ; ' \
32
+ lsft < z x c v b n m , . / rsft
33
+ lctl lmet lalt spc ralt comp rctl
34
+ )
35
+
36
+ ;; The first layer defined is the layer that will be active by default when
37
+ ;; kanata starts up. This layer is the standard QWERTY layout except for the
38
+ ;; backtick/grave key (@grl) which is an alias for a tap-hold key.
39
+ ;;
40
+ ;; There are currently a maximum of 25 layers allowed.
41
+ (deflayer qwerty
42
+ @grl 1 2 3 4 5 6 7 8 9 0 - = @bsp
43
+ tab q w @e r t y u i o p [ ] ret
44
+ @cap a @s @d f g @h @j @k @l @; ' \
45
+ lsft ret z x c v b n m , . / rsft
46
+ lctl lmet @alt @spc @sft rmet rctl
47
+ )
48
+
49
+ ;; The dvorak layer remaps the keys to the dvorak layout. In addition there is
50
+ ;; another tap-hold key: @cap. This key retains caps lock functionality when
51
+ ;; quickly tapped but is read as left-control when held.
52
+ (deflayer dvorak
53
+ @grl 1 2 3 4 5 6 7 8 9 0 [ ] bspc
54
+ tab ' , . p y f g c r l / = ret
55
+ @cap a o e u i d h t n s - \
56
+ lsft ret ; q j k x b m w v z rsft
57
+ lctl lmet lalt spc ralt rmet rctl
58
+ )
59
+
60
+ ;; (deflayermap (altspace)
61
+ ;; spc (multi (release-key lalt) lsft spc)
62
+ ;; )
63
+
64
+ (deflayer touchcursor
65
+ _ f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 _
66
+ _ @M↑ del @m↑ @clr @m🡠 _ _ _ _ _ _ _ _
67
+ _ @M↓ @bsp @m↓ spc @m🡪 @🡠 @↓ @↑ @🡪 @yaz _ _
68
+ _ _ _ _ caps @¿ @ñ pgup home end pgdn _ _
69
+ _ _ _ _ _ _ _
70
+ )
71
+
72
+ ;; defalias is used to declare a shortcut for a more complicated action to keep
73
+ ;; the deflayer declarations clean and aligned. The alignment in deflayers is not
74
+ ;; necessary, but is strongly recommended for ease of understanding visually.
75
+ ;;
76
+ ;; Aliases are referred to by `@<alias_name>`.
77
+ (defalias
78
+ ;; tap: backtick (grave), hold: toggle layer-switching layer while held
79
+ grl (tap-hold 200 200 grv (layer-toggle layers))
80
+
81
+ ;; layer-switch changes the base layer.
82
+ dvk (layer-switch dvorak)
83
+ qwr (layer-switch qwerty)
84
+
85
+ ;; tap for esc, hold for lctl
86
+ cap (tap-hold 200 200 esc lctl)
87
+
88
+ ;; tap for backspace, hold for lshift
89
+ sft (tap-hold 200 200 bspc rsft)
90
+
91
+ ;; tap for middle click, hold for lalt
92
+ alt (tap-hold 200 200 mmid lalt)
93
+
94
+ ;; tap for semicolon, hold for ctrl
95
+ ; (tap-hold 200 200 ; lctl)
96
+
97
+ ;; tap for middle click, hold for altspace layout
98
+ ;; alt (tap-hold 200 200 mmid (multi lalt (layer-while-held altspace)))
99
+
100
+ ;; tap for space, hold for oneshot in touchcursor layout
101
+ spc (tap-hold 200 200 spc (one-shot 500 (layer-while-held touchcursor)))
102
+
103
+ ;; fast keyboard repeat rate emulation
104
+ ;; (multi f24) fixes fast typing `vh`, `vj`, `vk` and `vl` not entering visual mode on neovim
105
+ e (tap-hold 200 200 e (macro-repeat e 20))
106
+ d (tap-hold 200 200 d (macro-repeat d 20))
107
+ s (tap-hold 200 200 s (macro-repeat s 20))
108
+ h (tap-hold 200 200 h (macro-repeat h 20))
109
+ j (tap-hold 200 200 j (macro-repeat j 20))
110
+ k (tap-hold 200 200 k (macro-repeat k 20))
111
+ l (tap-hold 200 200 l (macro-repeat l 20))
112
+ 🡠 (tap-hold 200 200 left (macro-repeat left 20))
113
+ ↓ (tap-hold 200 200 down (macro-repeat down 20))
114
+ ↑ (tap-hold 200 200 up (macro-repeat up 20))
115
+ 🡪 (tap-hold 200 200 right (macro-repeat right 20))
116
+ bsp (tap-hold 200 200 bspc (macro-repeat bspc 20))
117
+
118
+ ;; open yazi_cd on any shell
119
+ yaz (macro S-` / . p i x i / b i n / y a z i spc S-4 S-(p w d) spc - - c w d - f i l e spc S-4 S-(h o m e) / . y a z i ; spc c d spc S-' S-4 S-9 c a t spc S-4 S-( h o m e) / . y a z i S-0 S-' ret)
120
+
121
+ ;; clear screen on any shell
122
+ clr (macro c l e a r ret)
123
+
124
+ ;; unicode outputs
125
+ ¿ (unicode ¿)
126
+
127
+ ;; unicode outputs
128
+ ñ (unicode ñ)
129
+
130
+ ;; mouse scrolling <intervale> <distance>
131
+ m↑ (mwheel-up 50 40)
132
+ m↓ (mwheel-down 50 40)
133
+
134
+ ;; mouse scrolling <intervale> <distance>
135
+ m🡠 (mwheel-left 50 40)
136
+ m🡪 (mwheel-right 50 40)
137
+
138
+ ;; mouse scrolling <intervale> <distance>
139
+ M↑ (mwheel-up 25 60)
140
+ M↓ (mwheel-down 25 60)
141
+ )
142
+
143
+ ;; The `lrld` action stands for "live reload". This will re-parse everything
144
+ ;; except for linux-dev, meaning you cannot live reload and switch keyboard
145
+ ;; devices.
146
+ ;;
147
+ ;; The keys 1 and 2 switch the base layer to qwerty and dvorak respectively.
148
+ ;;
149
+ ;; Apart from the layer switching and live reload, all other keys are the
150
+ ;; underscore _ which means "transparent". Transparent means the base layer
151
+ ;; behaviour is used when pressing that key.
152
+ (deflayer layers
153
+ _ @qwr @dvk lrld _ _ _ _ _ _ _ _ _ _
154
+ _ _ _ _ _ _ _ _ _ _ _ _ _ _
155
+ _ _ _ _ _ _ _ _ _ _ _ _ _
156
+ _ _ _ _ _ _ _ _ _ _ _ _ _
157
+ _ _ _ _ _ _ _
158
+ )
159
+
160
+ ;; RetroNvim uses alt+space to open whichkey but Windows uses alt+space to open minimize/maximize menu
161
+ (defoverrides
162
+ (lalt spc) (lsft spc)
163
+ (rsft spc) (ralt spc)
164
+ )