├── requirements.txt
├── src
├── icon.png
└── readme
│ ├── dark-demo.gif
│ ├── Dark-Cover.png
│ ├── Light-Cover.png
│ └── light-demo.gif
├── plugin.json
├── .github
└── workflows
│ └── release.yml
├── README.md
├── main.py
├── LICENSE
└── db
└── commands.json
/requirements.txt:
--------------------------------------------------------------------------------
1 | flowlauncher
--------------------------------------------------------------------------------
/src/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MoAlSeifi/Flow.Launcher.Plugin.VimCheatSheet/HEAD/src/icon.png
--------------------------------------------------------------------------------
/src/readme/dark-demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MoAlSeifi/Flow.Launcher.Plugin.VimCheatSheet/HEAD/src/readme/dark-demo.gif
--------------------------------------------------------------------------------
/src/readme/Dark-Cover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MoAlSeifi/Flow.Launcher.Plugin.VimCheatSheet/HEAD/src/readme/Dark-Cover.png
--------------------------------------------------------------------------------
/src/readme/Light-Cover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MoAlSeifi/Flow.Launcher.Plugin.VimCheatSheet/HEAD/src/readme/Light-Cover.png
--------------------------------------------------------------------------------
/src/readme/light-demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MoAlSeifi/Flow.Launcher.Plugin.VimCheatSheet/HEAD/src/readme/light-demo.gif
--------------------------------------------------------------------------------
/plugin.json:
--------------------------------------------------------------------------------
1 | {
2 | "ID": "ddd30a33-c565-4dcf-9558-7bc5bb433e13",
3 | "ActionKeyword": "vm",
4 | "Name": "Vim",
5 | "Description": "Search Vim commands with Flow Launcher.",
6 | "Author": "MoAlSeifi",
7 | "Version": "0.0.2",
8 | "Language": "python",
9 | "Website": "https://github.com/MoAlSeifi",
10 | "IcoPath": "src/icon.png",
11 | "ExecuteFileName": "main.py"
12 | }
--------------------------------------------------------------------------------
/.github/workflows/release.yml:
--------------------------------------------------------------------------------
1 | name: Publish Release
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 | paths-ignore: |
8 | - '.github/workflows/*'
9 | - 'src/readme/*'
10 | - 'README.md'
11 |
12 | workflow_dispatch:
13 |
14 | jobs:
15 | publish:
16 | runs-on: ubuntu-latest
17 | env:
18 | python_ver: 3.13
19 |
20 | steps:
21 | - uses: actions/checkout@v4
22 | - name: Set up Python ${{ env.python_ver }}
23 | uses: actions/setup-python@v4
24 | with:
25 | python-version: ${{ env.python_ver }}
26 | - name: get version
27 | id: version
28 | uses: notiz-dev/github-action-json-property@release
29 | with:
30 | path: 'plugin.json'
31 | prop_path: 'Version'
32 | - run: echo ${{steps.version.outputs.prop}}
33 | - name: Install dependencies
34 | run: |
35 | python -m pip install --upgrade pip
36 | pip install -r ./requirements.txt -t ./lib
37 | zip -r Flow.Launcher.Plugin.VimCheatSheet.zip . -x '*.git*' 'src/readme/*'
38 | - name: Publish
39 | if: success()
40 | uses: softprops/action-gh-release@v1
41 | with:
42 | files: 'Flow.Launcher.Plugin.VimCheatSheet.zip'
43 | tag_name: "v${{steps.version.outputs.prop}}"
44 | env:
45 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
46 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Vim Cheat Sheat | Flow Plugin
2 |
3 | 
4 | 
5 |
6 | This Plugin Grants you Instant access to **Vim commands** and **shortcuts** via an **interactive cheat sheet**
7 |
8 | 
9 | 
10 |
11 | ⚠ this project is in its early stages and under Development (*but it gets the job done*)
12 |
13 | ## Usage
14 |
15 | | Keyword | Description | Example |
16 | | -------------- | ------------------------------------------------------------------------------ | ----------- |
17 | | ``vm {query}`` | Search for vim**commands** and **shortcuts** for a given `query` | `vm exit` |
18 |
19 | ## Features
20 |
21 | * Search for Vim Commands either by their description or their Hotkey.
22 | * By entering on each command you will be redirected to [Vim Cheat Sheet](https://vim.rtorr.com/ "rtorr website") on the same command.
23 | * ⚠ all text fragments aren't tested and aren't fully functional, please report if any of them didn't work.
24 |
25 | ## Installation
26 |
27 | ### Manual Installation
28 |
29 | * Download the [Latest Release](https://github.com/MoAlSeifi/Flow.Launcher.Plugin.VimCheatSheet/releases/latest)
30 | * Extract the zip file in `%appdata%\FlowLauncher\Plugins\`
31 | * Restart Flow Launcher (fully exit and Open)
32 |
33 | ### Flow Plugin Manager
34 |
35 | * In Flow Launcher enter this line :
36 | * `pm install VimCheatSheet`
37 | * Click OK
38 |
39 | ## Disclaimer
40 |
41 | * The database of this repository is the result of heavy A.I Assistance, so it might have mistakes; Report if you encounter any.
42 | * Any Feature requests or PR's are welcomed.
43 | * you might find this plugin as a bit incomplete, since it was designed as a personal project, but I'm working to make it more robust.
44 |
45 | ## References
46 |
47 | - Powered by [Vim Cheat Sheet](https://vim.rtorr.com/ "rtorr website") as source for [commands.json](https://github.com/MoAlSeifi/Flow.Launcher.Plugin.VimCheatSheet/blob/main/db/commands.json "commands json database")
48 |
--------------------------------------------------------------------------------
/main.py:
--------------------------------------------------------------------------------
1 | import sys
2 | from pathlib import Path
3 |
4 | plugindir = Path.absolute(Path(__file__).parent)
5 | paths = (".", "lib", "plugin")
6 | sys.path = [str(plugindir / p) for p in paths] + sys.path
7 |
8 | import json
9 | from flowlauncher import FlowLauncher
10 | import webbrowser
11 |
12 |
13 | def load_vim_commands(file_path):
14 | """Load Vim commands from a JSON file."""
15 | with open(file_path, 'r') as file:
16 | return json.load(file)
17 |
18 | vim_commands = load_vim_commands('db/commands.json')
19 | # vim_commands = load_vim_commands('commands.Not_url_encoded.json')
20 | icon_path = "src/icon.png"
21 |
22 | class VimCheatSheet(FlowLauncher):
23 |
24 | def query(self, query):
25 | # """Search for Vim commands matching the user query."""
26 | results = []
27 | query_lower = query.lower() # Convert query to lowercase for case-insensitive matching
28 | for command in vim_commands:
29 | if any(keyword.startswith(query_lower) or query_lower == keyword for keyword in command["keywords"]):
30 | # if any(keyword in query_lower for keyword in command["keywords"]):
31 | results.append({
32 | "Title": f"{command['command']}",
33 | "SubTitle": f"{command['name']} | {command['description']}",
34 | "IcoPath": icon_path,
35 | # "ContextData": ["foo", "bar"],
36 | "JsonRPCAction": {
37 | "method": "open_url",
38 | "parameters": [f"https://vim.rtorr.com/#:~:text={command['rtorr_description']}"],
39 | "dontHideAfterAction": False
40 | }
41 | })
42 | # print(results)
43 |
44 | # Fallback if no match is found
45 | if not results:
46 | results.append({
47 | "Title": "No match found",
48 | "SubTitle": "Try searching for a different Vim command",
49 | "IcoPath": icon_path,
50 | "JsonRPCAction": {
51 | "method": "open_url",
52 | "parameters": ["https://github.com/MoAlSeifi/Flow.Launcher.Plugin.VimCheatSheet"],
53 | "dontHideAfterAction": False
54 | }
55 | })
56 |
57 | return results
58 |
59 | # def context_menu(self, data):
60 | # return [
61 | # {
62 | # "Title": {data["name"]},
63 | # "SubTitle": "Press enter to open Flow the plugin's repo in GitHub",
64 | # "IcoPath": "Images/app.png",
65 | # "JsonRPCAction": {
66 | # "method": "open_url",
67 | # "parameters": ["https://github.com/Flow-Launcher/Flow.Launcher.Plugin.HelloWorldPython"]
68 | # }
69 | # }
70 | # ]
71 |
72 |
73 | def open_url(self, url):
74 | webbrowser.open(url)
75 |
76 | if __name__ == "__main__":
77 | VimCheatSheet()
78 |
79 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU General Public License is a free, copyleft license for
11 | software and other kinds of works.
12 |
13 | The licenses for most software and other practical works are designed
14 | to take away your freedom to share and change the works. By contrast,
15 | the GNU General Public License is intended to guarantee your freedom to
16 | share and change all versions of a program--to make sure it remains free
17 | software for all its users. We, the Free Software Foundation, use the
18 | GNU General Public License for most of our software; it applies also to
19 | any other work released this way by its authors. You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | them if you wish), that you receive source code or can get it if you
26 | want it, that you can change the software or use pieces of it in new
27 | free programs, and that you know you can do these things.
28 |
29 | To protect your rights, we need to prevent others from denying you
30 | these rights or asking you to surrender the rights. Therefore, you have
31 | certain responsibilities if you distribute copies of the software, or if
32 | you modify it: responsibilities to respect the freedom of others.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must pass on to the recipients the same
36 | freedoms that you received. You must make sure that they, too, receive
37 | or can get the source code. And you must show them these terms so they
38 | know their rights.
39 |
40 | Developers that use the GNU GPL protect your rights with two steps:
41 | (1) assert copyright on the software, and (2) offer you this License
42 | giving you legal permission to copy, distribute and/or modify it.
43 |
44 | For the developers' and authors' protection, the GPL clearly explains
45 | that there is no warranty for this free software. For both users' and
46 | authors' sake, the GPL requires that modified versions be marked as
47 | changed, so that their problems will not be attributed erroneously to
48 | authors of previous versions.
49 |
50 | Some devices are designed to deny users access to install or run
51 | modified versions of the software inside them, although the manufacturer
52 | can do so. This is fundamentally incompatible with the aim of
53 | protecting users' freedom to change the software. The systematic
54 | pattern of such abuse occurs in the area of products for individuals to
55 | use, which is precisely where it is most unacceptable. Therefore, we
56 | have designed this version of the GPL to prohibit the practice for those
57 | products. If such problems arise substantially in other domains, we
58 | stand ready to extend this provision to those domains in future versions
59 | of the GPL, as needed to protect the freedom of users.
60 |
61 | Finally, every program is threatened constantly by software patents.
62 | States should not allow patents to restrict development and use of
63 | software on general-purpose computers, but in those that do, we wish to
64 | avoid the special danger that patents applied to a free program could
65 | make it effectively proprietary. To prevent this, the GPL assures that
66 | patents cannot be used to render the program non-free.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | TERMS AND CONDITIONS
72 |
73 | 0. Definitions.
74 |
75 | "This License" refers to version 3 of the GNU General Public License.
76 |
77 | "Copyright" also means copyright-like laws that apply to other kinds of
78 | works, such as semiconductor masks.
79 |
80 | "The Program" refers to any copyrightable work licensed under this
81 | License. Each licensee is addressed as "you". "Licensees" and
82 | "recipients" may be individuals or organizations.
83 |
84 | To "modify" a work means to copy from or adapt all or part of the work
85 | in a fashion requiring copyright permission, other than the making of an
86 | exact copy. The resulting work is called a "modified version" of the
87 | earlier work or a work "based on" the earlier work.
88 |
89 | A "covered work" means either the unmodified Program or a work based
90 | on the Program.
91 |
92 | To "propagate" a work means to do anything with it that, without
93 | permission, would make you directly or secondarily liable for
94 | infringement under applicable copyright law, except executing it on a
95 | computer or modifying a private copy. Propagation includes copying,
96 | distribution (with or without modification), making available to the
97 | public, and in some countries other activities as well.
98 |
99 | To "convey" a work means any kind of propagation that enables other
100 | parties to make or receive copies. Mere interaction with a user through
101 | a computer network, with no transfer of a copy, is not conveying.
102 |
103 | An interactive user interface displays "Appropriate Legal Notices"
104 | to the extent that it includes a convenient and prominently visible
105 | feature that (1) displays an appropriate copyright notice, and (2)
106 | tells the user that there is no warranty for the work (except to the
107 | extent that warranties are provided), that licensees may convey the
108 | work under this License, and how to view a copy of this License. If
109 | the interface presents a list of user commands or options, such as a
110 | menu, a prominent item in the list meets this criterion.
111 |
112 | 1. Source Code.
113 |
114 | The "source code" for a work means the preferred form of the work
115 | for making modifications to it. "Object code" means any non-source
116 | form of a work.
117 |
118 | A "Standard Interface" means an interface that either is an official
119 | standard defined by a recognized standards body, or, in the case of
120 | interfaces specified for a particular programming language, one that
121 | is widely used among developers working in that language.
122 |
123 | The "System Libraries" of an executable work include anything, other
124 | than the work as a whole, that (a) is included in the normal form of
125 | packaging a Major Component, but which is not part of that Major
126 | Component, and (b) serves only to enable use of the work with that
127 | Major Component, or to implement a Standard Interface for which an
128 | implementation is available to the public in source code form. A
129 | "Major Component", in this context, means a major essential component
130 | (kernel, window system, and so on) of the specific operating system
131 | (if any) on which the executable work runs, or a compiler used to
132 | produce the work, or an object code interpreter used to run it.
133 |
134 | The "Corresponding Source" for a work in object code form means all
135 | the source code needed to generate, install, and (for an executable
136 | work) run the object code and to modify the work, including scripts to
137 | control those activities. However, it does not include the work's
138 | System Libraries, or general-purpose tools or generally available free
139 | programs which are used unmodified in performing those activities but
140 | which are not part of the work. For example, Corresponding Source
141 | includes interface definition files associated with source files for
142 | the work, and the source code for shared libraries and dynamically
143 | linked subprograms that the work is specifically designed to require,
144 | such as by intimate data communication or control flow between those
145 | subprograms and other parts of the work.
146 |
147 | The Corresponding Source need not include anything that users
148 | can regenerate automatically from other parts of the Corresponding
149 | Source.
150 |
151 | The Corresponding Source for a work in source code form is that
152 | same work.
153 |
154 | 2. Basic Permissions.
155 |
156 | All rights granted under this License are granted for the term of
157 | copyright on the Program, and are irrevocable provided the stated
158 | conditions are met. This License explicitly affirms your unlimited
159 | permission to run the unmodified Program. The output from running a
160 | covered work is covered by this License only if the output, given its
161 | content, constitutes a covered work. This License acknowledges your
162 | rights of fair use or other equivalent, as provided by copyright law.
163 |
164 | You may make, run and propagate covered works that you do not
165 | convey, without conditions so long as your license otherwise remains
166 | in force. You may convey covered works to others for the sole purpose
167 | of having them make modifications exclusively for you, or provide you
168 | with facilities for running those works, provided that you comply with
169 | the terms of this License in conveying all material for which you do
170 | not control copyright. Those thus making or running the covered works
171 | for you must do so exclusively on your behalf, under your direction
172 | and control, on terms that prohibit them from making any copies of
173 | your copyrighted material outside their relationship with you.
174 |
175 | Conveying under any other circumstances is permitted solely under
176 | the conditions stated below. Sublicensing is not allowed; section 10
177 | makes it unnecessary.
178 |
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180 |
181 | No covered work shall be deemed part of an effective technological
182 | measure under any applicable law fulfilling obligations under article
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184 | similar laws prohibiting or restricting circumvention of such
185 | measures.
186 |
187 | When you convey a covered work, you waive any legal power to forbid
188 | circumvention of technological measures to the extent such circumvention
189 | is effected by exercising rights under this License with respect to
190 | the covered work, and you disclaim any intention to limit operation or
191 | modification of the work as a means of enforcing, against the work's
192 | users, your or third parties' legal rights to forbid circumvention of
193 | technological measures.
194 |
195 | 4. Conveying Verbatim Copies.
196 |
197 | You may convey verbatim copies of the Program's source code as you
198 | receive it, in any medium, provided that you conspicuously and
199 | appropriately publish on each copy an appropriate copyright notice;
200 | keep intact all notices stating that this License and any
201 | non-permissive terms added in accord with section 7 apply to the code;
202 | keep intact all notices of the absence of any warranty; and give all
203 | recipients a copy of this License along with the Program.
204 |
205 | You may charge any price or no price for each copy that you convey,
206 | and you may offer support or warranty protection for a fee.
207 |
208 | 5. Conveying Modified Source Versions.
209 |
210 | You may convey a work based on the Program, or the modifications to
211 | produce it from the Program, in the form of source code under the
212 | terms of section 4, provided that you also meet all of these conditions:
213 |
214 | a) The work must carry prominent notices stating that you modified
215 | it, and giving a relevant date.
216 |
217 | b) The work must carry prominent notices stating that it is
218 | released under this License and any conditions added under section
219 | 7. This requirement modifies the requirement in section 4 to
220 | "keep intact all notices".
221 |
222 | c) You must license the entire work, as a whole, under this
223 | License to anyone who comes into possession of a copy. This
224 | License will therefore apply, along with any applicable section 7
225 | additional terms, to the whole of the work, and all its parts,
226 | regardless of how they are packaged. This License gives no
227 | permission to license the work in any other way, but it does not
228 | invalidate such permission if you have separately received it.
229 |
230 | d) If the work has interactive user interfaces, each must display
231 | Appropriate Legal Notices; however, if the Program has interactive
232 | interfaces that do not display Appropriate Legal Notices, your
233 | work need not make them do so.
234 |
235 | A compilation of a covered work with other separate and independent
236 | works, which are not by their nature extensions of the covered work,
237 | and which are not combined with it such as to form a larger program,
238 | in or on a volume of a storage or distribution medium, is called an
239 | "aggregate" if the compilation and its resulting copyright are not
240 | used to limit the access or legal rights of the compilation's users
241 | beyond what the individual works permit. Inclusion of a covered work
242 | in an aggregate does not cause this License to apply to the other
243 | parts of the aggregate.
244 |
245 | 6. Conveying Non-Source Forms.
246 |
247 | You may convey a covered work in object code form under the terms
248 | of sections 4 and 5, provided that you also convey the
249 | machine-readable Corresponding Source under the terms of this License,
250 | in one of these ways:
251 |
252 | a) Convey the object code in, or embodied in, a physical product
253 | (including a physical distribution medium), accompanied by the
254 | Corresponding Source fixed on a durable physical medium
255 | customarily used for software interchange.
256 |
257 | b) Convey the object code in, or embodied in, a physical product
258 | (including a physical distribution medium), accompanied by a
259 | written offer, valid for at least three years and valid for as
260 | long as you offer spare parts or customer support for that product
261 | model, to give anyone who possesses the object code either (1) a
262 | copy of the Corresponding Source for all the software in the
263 | product that is covered by this License, on a durable physical
264 | medium customarily used for software interchange, for a price no
265 | more than your reasonable cost of physically performing this
266 | conveying of source, or (2) access to copy the
267 | Corresponding Source from a network server at no charge.
268 |
269 | c) Convey individual copies of the object code with a copy of the
270 | written offer to provide the Corresponding Source. This
271 | alternative is allowed only occasionally and noncommercially, and
272 | only if you received the object code with such an offer, in accord
273 | with subsection 6b.
274 |
275 | d) Convey the object code by offering access from a designated
276 | place (gratis or for a charge), and offer equivalent access to the
277 | Corresponding Source in the same way through the same place at no
278 | further charge. You need not require recipients to copy the
279 | Corresponding Source along with the object code. If the place to
280 | copy the object code is a network server, the Corresponding Source
281 | may be on a different server (operated by you or a third party)
282 | that supports equivalent copying facilities, provided you maintain
283 | clear directions next to the object code saying where to find the
284 | Corresponding Source. Regardless of what server hosts the
285 | Corresponding Source, you remain obligated to ensure that it is
286 | available for as long as needed to satisfy these requirements.
287 |
288 | e) Convey the object code using peer-to-peer transmission, provided
289 | you inform other peers where the object code and Corresponding
290 | Source of the work are being offered to the general public at no
291 | charge under subsection 6d.
292 |
293 | A separable portion of the object code, whose source code is excluded
294 | from the Corresponding Source as a System Library, need not be
295 | included in conveying the object code work.
296 |
297 | A "User Product" is either (1) a "consumer product", which means any
298 | tangible personal property which is normally used for personal, family,
299 | or household purposes, or (2) anything designed or sold for incorporation
300 | into a dwelling. In determining whether a product is a consumer product,
301 | doubtful cases shall be resolved in favor of coverage. For a particular
302 | product received by a particular user, "normally used" refers to a
303 | typical or common use of that class of product, regardless of the status
304 | of the particular user or of the way in which the particular user
305 | actually uses, or expects or is expected to use, the product. A product
306 | is a consumer product regardless of whether the product has substantial
307 | commercial, industrial or non-consumer uses, unless such uses represent
308 | the only significant mode of use of the product.
309 |
310 | "Installation Information" for a User Product means any methods,
311 | procedures, authorization keys, or other information required to install
312 | and execute modified versions of a covered work in that User Product from
313 | a modified version of its Corresponding Source. The information must
314 | suffice to ensure that the continued functioning of the modified object
315 | code is in no case prevented or interfered with solely because
316 | modification has been made.
317 |
318 | If you convey an object code work under this section in, or with, or
319 | specifically for use in, a User Product, and the conveying occurs as
320 | part of a transaction in which the right of possession and use of the
321 | User Product is transferred to the recipient in perpetuity or for a
322 | fixed term (regardless of how the transaction is characterized), the
323 | Corresponding Source conveyed under this section must be accompanied
324 | by the Installation Information. But this requirement does not apply
325 | if neither you nor any third party retains the ability to install
326 | modified object code on the User Product (for example, the work has
327 | been installed in ROM).
328 |
329 | The requirement to provide Installation Information does not include a
330 | requirement to continue to provide support service, warranty, or updates
331 | for a work that has been modified or installed by the recipient, or for
332 | the User Product in which it has been modified or installed. Access to a
333 | network may be denied when the modification itself materially and
334 | adversely affects the operation of the network or violates the rules and
335 | protocols for communication across the network.
336 |
337 | Corresponding Source conveyed, and Installation Information provided,
338 | in accord with this section must be in a format that is publicly
339 | documented (and with an implementation available to the public in
340 | source code form), and must require no special password or key for
341 | unpacking, reading or copying.
342 |
343 | 7. Additional Terms.
344 |
345 | "Additional permissions" are terms that supplement the terms of this
346 | License by making exceptions from one or more of its conditions.
347 | Additional permissions that are applicable to the entire Program shall
348 | be treated as though they were included in this License, to the extent
349 | that they are valid under applicable law. If additional permissions
350 | apply only to part of the Program, that part may be used separately
351 | under those permissions, but the entire Program remains governed by
352 | this License without regard to the additional permissions.
353 |
354 | When you convey a copy of a covered work, you may at your option
355 | remove any additional permissions from that copy, or from any part of
356 | it. (Additional permissions may be written to require their own
357 | removal in certain cases when you modify the work.) You may place
358 | additional permissions on material, added by you to a covered work,
359 | for which you have or can give appropriate copyright permission.
360 |
361 | Notwithstanding any other provision of this License, for material you
362 | add to a covered work, you may (if authorized by the copyright holders of
363 | that material) supplement the terms of this License with terms:
364 |
365 | a) Disclaiming warranty or limiting liability differently from the
366 | terms of sections 15 and 16 of this License; or
367 |
368 | b) Requiring preservation of specified reasonable legal notices or
369 | author attributions in that material or in the Appropriate Legal
370 | Notices displayed by works containing it; or
371 |
372 | c) Prohibiting misrepresentation of the origin of that material, or
373 | requiring that modified versions of such material be marked in
374 | reasonable ways as different from the original version; or
375 |
376 | d) Limiting the use for publicity purposes of names of licensors or
377 | authors of the material; or
378 |
379 | e) Declining to grant rights under trademark law for use of some
380 | trade names, trademarks, or service marks; or
381 |
382 | f) Requiring indemnification of licensors and authors of that
383 | material by anyone who conveys the material (or modified versions of
384 | it) with contractual assumptions of liability to the recipient, for
385 | any liability that these contractual assumptions directly impose on
386 | those licensors and authors.
387 |
388 | All other non-permissive additional terms are considered "further
389 | restrictions" within the meaning of section 10. If the Program as you
390 | received it, or any part of it, contains a notice stating that it is
391 | governed by this License along with a term that is a further
392 | restriction, you may remove that term. If a license document contains
393 | a further restriction but permits relicensing or conveying under this
394 | License, you may add to a covered work material governed by the terms
395 | of that license document, provided that the further restriction does
396 | not survive such relicensing or conveying.
397 |
398 | If you add terms to a covered work in accord with this section, you
399 | must place, in the relevant source files, a statement of the
400 | additional terms that apply to those files, or a notice indicating
401 | where to find the applicable terms.
402 |
403 | Additional terms, permissive or non-permissive, may be stated in the
404 | form of a separately written license, or stated as exceptions;
405 | the above requirements apply either way.
406 |
407 | 8. Termination.
408 |
409 | You may not propagate or modify a covered work except as expressly
410 | provided under this License. Any attempt otherwise to propagate or
411 | modify it is void, and will automatically terminate your rights under
412 | this License (including any patent licenses granted under the third
413 | paragraph of section 11).
414 |
415 | However, if you cease all violation of this License, then your
416 | license from a particular copyright holder is reinstated (a)
417 | provisionally, unless and until the copyright holder explicitly and
418 | finally terminates your license, and (b) permanently, if the copyright
419 | holder fails to notify you of the violation by some reasonable means
420 | prior to 60 days after the cessation.
421 |
422 | Moreover, your license from a particular copyright holder is
423 | reinstated permanently if the copyright holder notifies you of the
424 | violation by some reasonable means, this is the first time you have
425 | received notice of violation of this License (for any work) from that
426 | copyright holder, and you cure the violation prior to 30 days after
427 | your receipt of the notice.
428 |
429 | Termination of your rights under this section does not terminate the
430 | licenses of parties who have received copies or rights from you under
431 | this License. If your rights have been terminated and not permanently
432 | reinstated, you do not qualify to receive new licenses for the same
433 | material under section 10.
434 |
435 | 9. Acceptance Not Required for Having Copies.
436 |
437 | You are not required to accept this License in order to receive or
438 | run a copy of the Program. Ancillary propagation of a covered work
439 | occurring solely as a consequence of using peer-to-peer transmission
440 | to receive a copy likewise does not require acceptance. However,
441 | nothing other than this License grants you permission to propagate or
442 | modify any covered work. These actions infringe copyright if you do
443 | not accept this License. Therefore, by modifying or propagating a
444 | covered work, you indicate your acceptance of this License to do so.
445 |
446 | 10. Automatic Licensing of Downstream Recipients.
447 |
448 | Each time you convey a covered work, the recipient automatically
449 | receives a license from the original licensors, to run, modify and
450 | propagate that work, subject to this License. You are not responsible
451 | for enforcing compliance by third parties with this License.
452 |
453 | An "entity transaction" is a transaction transferring control of an
454 | organization, or substantially all assets of one, or subdividing an
455 | organization, or merging organizations. If propagation of a covered
456 | work results from an entity transaction, each party to that
457 | transaction who receives a copy of the work also receives whatever
458 | licenses to the work the party's predecessor in interest had or could
459 | give under the previous paragraph, plus a right to possession of the
460 | Corresponding Source of the work from the predecessor in interest, if
461 | the predecessor has it or can get it with reasonable efforts.
462 |
463 | You may not impose any further restrictions on the exercise of the
464 | rights granted or affirmed under this License. For example, you may
465 | not impose a license fee, royalty, or other charge for exercise of
466 | rights granted under this License, and you may not initiate litigation
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that
468 | any patent claim is infringed by making, using, selling, offering for
469 | sale, or importing the Program or any portion of it.
470 |
471 | 11. Patents.
472 |
473 | A "contributor" is a copyright holder who authorizes use under this
474 | License of the Program or a work on which the Program is based. The
475 | work thus licensed is called the contributor's "contributor version".
476 |
477 | A contributor's "essential patent claims" are all patent claims
478 | owned or controlled by the contributor, whether already acquired or
479 | hereafter acquired, that would be infringed by some manner, permitted
480 | by this License, of making, using, or selling its contributor version,
481 | but do not include claims that would be infringed only as a
482 | consequence of further modification of the contributor version. For
483 | purposes of this definition, "control" includes the right to grant
484 | patent sublicenses in a manner consistent with the requirements of
485 | this License.
486 |
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free
488 | patent license under the contributor's essential patent claims, to
489 | make, use, sell, offer for sale, import and otherwise run, modify and
490 | propagate the contents of its contributor version.
491 |
492 | In the following three paragraphs, a "patent license" is any express
493 | agreement or commitment, however denominated, not to enforce a patent
494 | (such as an express permission to practice a patent or covenant not to
495 | sue for patent infringement). To "grant" such a patent license to a
496 | party means to make such an agreement or commitment not to enforce a
497 | patent against the party.
498 |
499 | If you convey a covered work, knowingly relying on a patent license,
500 | and the Corresponding Source of the work is not available for anyone
501 | to copy, free of charge and under the terms of this License, through a
502 | publicly available network server or other readily accessible means,
503 | then you must either (1) cause the Corresponding Source to be so
504 | available, or (2) arrange to deprive yourself of the benefit of the
505 | patent license for this particular work, or (3) arrange, in a manner
506 | consistent with the requirements of this License, to extend the patent
507 | license to downstream recipients. "Knowingly relying" means you have
508 | actual knowledge that, but for the patent license, your conveying the
509 | covered work in a country, or your recipient's use of the covered work
510 | in a country, would infringe one or more identifiable patents in that
511 | country that you have reason to believe are valid.
512 |
513 | If, pursuant to or in connection with a single transaction or
514 | arrangement, you convey, or propagate by procuring conveyance of, a
515 | covered work, and grant a patent license to some of the parties
516 | receiving the covered work authorizing them to use, propagate, modify
517 | or convey a specific copy of the covered work, then the patent license
518 | you grant is automatically extended to all recipients of the covered
519 | work and works based on it.
520 |
521 | A patent license is "discriminatory" if it does not include within
522 | the scope of its coverage, prohibits the exercise of, or is
523 | conditioned on the non-exercise of one or more of the rights that are
524 | specifically granted under this License. You may not convey a covered
525 | work if you are a party to an arrangement with a third party that is
526 | in the business of distributing software, under which you make payment
527 | to the third party based on the extent of your activity of conveying
528 | the work, and under which the third party grants, to any of the
529 | parties who would receive the covered work from you, a discriminatory
530 | patent license (a) in connection with copies of the covered work
531 | conveyed by you (or copies made from those copies), or (b) primarily
532 | for and in connection with specific products or compilations that
533 | contain the covered work, unless you entered into that arrangement,
534 | or that patent license was granted, prior to 28 March 2007.
535 |
536 | Nothing in this License shall be construed as excluding or limiting
537 | any implied license or other defenses to infringement that may
538 | otherwise be available to you under applicable patent law.
539 |
540 | 12. No Surrender of Others' Freedom.
541 |
542 | If conditions are imposed on you (whether by court order, agreement or
543 | otherwise) that contradict the conditions of this License, they do not
544 | excuse you from the conditions of this License. If you cannot convey a
545 | covered work so as to satisfy simultaneously your obligations under this
546 | License and any other pertinent obligations, then as a consequence you may
547 | not convey it at all. For example, if you agree to terms that obligate you
548 | to collect a royalty for further conveying from those to whom you convey
549 | the Program, the only way you could satisfy both those terms and this
550 | License would be to refrain entirely from conveying the Program.
551 |
552 | 13. Use with the GNU Affero General Public License.
553 |
554 | Notwithstanding any other provision of this License, you have
555 | permission to link or combine any covered work with a work licensed
556 | under version 3 of the GNU Affero General Public License into a single
557 | combined work, and to convey the resulting work. The terms of this
558 | License will continue to apply to the part which is the covered work,
559 | but the special requirements of the GNU Affero General Public License,
560 | section 13, concerning interaction through a network will apply to the
561 | combination as such.
562 |
563 | 14. Revised Versions of this License.
564 |
565 | The Free Software Foundation may publish revised and/or new versions of
566 | the GNU General Public License from time to time. Such new versions will
567 | be similar in spirit to the present version, but may differ in detail to
568 | address new problems or concerns.
569 |
570 | Each version is given a distinguishing version number. If the
571 | Program specifies that a certain numbered version of the GNU General
572 | Public License "or any later version" applies to it, you have the
573 | option of following the terms and conditions either of that numbered
574 | version or of any later version published by the Free Software
575 | Foundation. If the Program does not specify a version number of the
576 | GNU General Public License, you may choose any version ever published
577 | by the Free Software Foundation.
578 |
579 | If the Program specifies that a proxy can decide which future
580 | versions of the GNU General Public License can be used, that proxy's
581 | public statement of acceptance of a version permanently authorizes you
582 | to choose that version for the Program.
583 |
584 | Later license versions may give you additional or different
585 | permissions. However, no additional obligations are imposed on any
586 | author or copyright holder as a result of your choosing to follow a
587 | later version.
588 |
589 | 15. Disclaimer of Warranty.
590 |
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599 |
600 | 16. Limitation of Liability.
601 |
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610 | SUCH DAMAGES.
611 |
612 | 17. Interpretation of Sections 15 and 16.
613 |
614 | If the disclaimer of warranty and limitation of liability provided
615 | above cannot be given local legal effect according to their terms,
616 | reviewing courts shall apply local law that most closely approximates
617 | an absolute waiver of all civil liability in connection with the
618 | Program, unless a warranty or assumption of liability accompanies a
619 | copy of the Program in return for a fee.
620 |
621 | END OF TERMS AND CONDITIONS
622 |
623 | How to Apply These Terms to Your New Programs
624 |
625 | If you develop a new program, and you want it to be of the greatest
626 | possible use to the public, the best way to achieve this is to make it
627 | free software which everyone can redistribute and change under these terms.
628 |
629 | To do so, attach the following notices to the program. It is safest
630 | to attach them to the start of each source file to most effectively
631 | state the exclusion of warranty; and each file should have at least
632 | the "copyright" line and a pointer to where the full notice is found.
633 |
634 |
635 | Copyright (C)
636 |
637 | This program is free software: you can redistribute it and/or modify
638 | it under the terms of the GNU General Public License as published by
639 | the Free Software Foundation, either version 3 of the License, or
640 | (at your option) any later version.
641 |
642 | This program is distributed in the hope that it will be useful,
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645 | GNU General Public License for more details.
646 |
647 | You should have received a copy of the GNU General Public License
648 | along with this program. If not, see .
649 |
650 | Also add information on how to contact you by electronic and paper mail.
651 |
652 | If the program does terminal interaction, make it output a short
653 | notice like this when it starts in an interactive mode:
654 |
655 | Copyright (C)
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657 | This is free software, and you are welcome to redistribute it
658 | under certain conditions; type `show c' for details.
659 |
660 | The hypothetical commands `show w' and `show c' should show the appropriate
661 | parts of the General Public License. Of course, your program's commands
662 | might be different; for a GUI interface, you would use an "about box".
663 |
664 | You should also get your employer (if you work as a programmer) or school,
665 | if any, to sign a "copyright disclaimer" for the program, if necessary.
666 | For more information on this, and how to apply and follow the GNU GPL, see
667 | .
668 |
669 | The GNU General Public License does not permit incorporating your program
670 | into proprietary programs. If your program is a subroutine library, you
671 | may consider it more useful to permit linking proprietary applications with
672 | the library. If this is what you want to do, use the GNU Lesser General
673 | Public License instead of this License. But first, please read
674 | .
675 |
--------------------------------------------------------------------------------
/db/commands.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "Open help for keyword",
4 | "keywords": [
5 | "help",
6 | "keyword",
7 | "documentation"
8 | ],
9 | "command": ":h[elp] keyword",
10 | "description": "Opens the help page for the specified keyword in Vim.",
11 | "rtorr_description": "%3Ah%5Belp%5D%20keyword%20%2D%20open%20help%20for%20keyword"
12 | },
13 | {
14 | "name": "Save file as",
15 | "keywords": [
16 | "save",
17 | "file",
18 | "as"
19 | ],
20 | "command": ":sav[eas] file",
21 | "description": "Saves the current file with the specified file name.",
22 | "rtorr_description": "%3Asav%5Beas%5D%20file%20%2D%20save%20file%20as"
23 | },
24 | {
25 | "name": "Close current pane",
26 | "keywords": [
27 | "close",
28 | "pane",
29 | "window"
30 | ],
31 | "command": ":clo[se]",
32 | "description": "Closes the current pane in Vim.",
33 | "rtorr_description": "%3Aclo%5Bse%5D%20%2D%20close%20current%20pane"
34 | },
35 | {
36 | "name": "Open a terminal window",
37 | "keywords": [
38 | "terminal",
39 | "open",
40 | "window",
41 | "command line"
42 | ],
43 | "command": ":ter[minal]",
44 | "description": "Opens a terminal window within Vim.",
45 | "rtorr_description": "%3Ater%5Bminal%5D%20%2D%20open%20a%20terminal%20window"
46 | },
47 | {
48 | "name": "Open man page for word under the cursor",
49 | "keywords": [
50 | "man page",
51 | "help",
52 | "documentation",
53 | "cursor"
54 | ],
55 | "command": "K",
56 | "description": "Opens the man page for the word currently under the cursor.",
57 | "rtorr_description": "K%20%2D%20open%20man%20page%20for%20word%20under%20the%20cursor"
58 | },
59 | {
60 | "name": "Move cursor left",
61 | "keywords": [
62 | "cursor",
63 | "move",
64 | "left",
65 | "navigation"
66 | ],
67 | "command": "h",
68 | "description": "Moves the cursor one character to the left.",
69 | "rtorr_description": "h%20%2D%20move%20cursor%20left"
70 | },
71 | {
72 | "name": "Move cursor down",
73 | "keywords": [
74 | "cursor",
75 | "move",
76 | "down",
77 | "navigation"
78 | ],
79 | "command": "j",
80 | "description": "Moves the cursor one line down.",
81 | "rtorr_description": "j%20%2D%20move%20cursor%20down"
82 | },
83 | {
84 | "name": "Move cursor up",
85 | "keywords": [
86 | "cursor",
87 | "move",
88 | "up",
89 | "navigation"
90 | ],
91 | "command": "k",
92 | "description": "Moves the cursor one line up.",
93 | "rtorr_description": "k%20%2D%20move%20cursor%20up"
94 | },
95 | {
96 | "name": "Move cursor right",
97 | "keywords": [
98 | "cursor",
99 | "move",
100 | "right",
101 | "navigation"
102 | ],
103 | "command": "l",
104 | "description": "Moves the cursor one character to the right.",
105 | "rtorr_description": "l%20%2D%20move%20cursor%20right"
106 | },
107 | {
108 | "name": "Move cursor down (multi-line text)",
109 | "keywords": [
110 | "cursor",
111 | "move",
112 | "down",
113 | "navigation",
114 | "multi-line",
115 | "text"
116 | ],
117 | "command": "gj",
118 | "description": "Moves the cursor down one line, considering wrapped lines as a single line.",
119 | "rtorr_description": "gj%20%2D%20move%20cursor%20down%20%28multi-line%20text%29"
120 | },
121 | {
122 | "name": "Move cursor up (multi-line text)",
123 | "keywords": [
124 | "cursor",
125 | "move",
126 | "up",
127 | "navigation",
128 | "multi-line",
129 | "text"
130 | ],
131 | "command": "gk",
132 | "description": "Moves the cursor up one line, considering wrapped lines as a single line.",
133 | "rtorr_description": "gk%20%2D%20move%20cursor%20up%20%28multi-line%20text%29"
134 | },
135 | {
136 | "name": "Move to top of screen",
137 | "keywords": [
138 | "cursor",
139 | "move",
140 | "top",
141 | "screen",
142 | "navigation"
143 | ],
144 | "command": "H",
145 | "description": "Moves the cursor to the top of the screen.",
146 | "rtorr_description": "H%20%2D%20move%20to%20top%20of%20screen"
147 | },
148 | {
149 | "name": "Move to middle of screen",
150 | "keywords": [
151 | "cursor",
152 | "move",
153 | "middle",
154 | "screen",
155 | "navigation"
156 | ],
157 | "command": "M",
158 | "description": "Moves the cursor to the middle of the screen.",
159 | "rtorr_description": "M%20%2D%20move%20to%20middle%20of%20screen"
160 | },
161 | {
162 | "name": "Move to bottom of screen",
163 | "keywords": [
164 | "cursor",
165 | "move",
166 | "bottom",
167 | "screen",
168 | "navigation"
169 | ],
170 | "command": "L",
171 | "description": "Moves the cursor to the bottom of the screen.",
172 | "rtorr_description": "L%20%2D%20move%20to%20bottom%20of%20screen"
173 | },
174 | {
175 | "name": "Jump forwards to the start of a word",
176 | "keywords": [
177 | "cursor",
178 | "jump",
179 | "forward",
180 | "word",
181 | "navigation"
182 | ],
183 | "command": "w",
184 | "description": "Moves the cursor forward to the beginning of the next word.",
185 | "rtorr_description": "w%20%2D%20jump%20forwards%20to%20the%20start%20of%20a%20word"
186 | },
187 | {
188 | "name": "Jump forwards to the start of a word (words can contain punctuation)",
189 | "keywords": [
190 | "cursor",
191 | "jump",
192 | "forward",
193 | "word",
194 | "punctuation",
195 | "navigation"
196 | ],
197 | "command": "W",
198 | "description": "Moves the cursor forward to the beginning of the next word, considering punctuation as part of the word.",
199 | "rtorr_description": "W%20%2D%20jump%20forwards%20to%20the%20start%20of%20a%20word%20%28words%20can%20contain%20punctuation%29"
200 | },
201 | {
202 | "name": "Jump forwards to the end of a word",
203 | "keywords": [
204 | "cursor",
205 | "jump",
206 | "forward",
207 | "word",
208 | "navigation"
209 | ],
210 | "command": "e",
211 | "description": "Moves the cursor forward to the end of the current word.",
212 | "rtorr_description": "e%20%2D%20jump%20forwards%20to%20the%20end%20of%20a%20word"
213 | },
214 | {
215 | "name": "Jump forwards to the end of a word (words can contain punctuation)",
216 | "keywords": [
217 | "cursor",
218 | "jump",
219 | "forward",
220 | "word",
221 | "punctuation",
222 | "navigation"
223 | ],
224 | "command": "E",
225 | "description": "Moves the cursor forward to the end of the current word, considering punctuation as part of the word.",
226 | "rtorr_description": "E%20%2D%20jump%20forwards%20to%20the%20end%20of%20a%20word%20%28words%20can%20contain%20punctuation%29"
227 | },
228 | {
229 | "name": "Jump backwards to the start of a word",
230 | "keywords": [
231 | "cursor",
232 | "jump",
233 | "backwards",
234 | "word",
235 | "navigation"
236 | ],
237 | "command": "b",
238 | "description": "Moves the cursor backward to the beginning of the previous word.",
239 | "rtorr_description": "b%20%2D%20jump%20backwards%20to%20the%20start%20of%20a%20word"
240 | },
241 | {
242 | "name": "Jump backwards to the start of a word (words can contain punctuation)",
243 | "keywords": [
244 | "cursor",
245 | "jump",
246 | "backwards",
247 | "word",
248 | "punctuation",
249 | "navigation"
250 | ],
251 | "command": "B",
252 | "description": "Moves the cursor backward to the beginning of the previous word, considering punctuation as part of the word.",
253 | "rtorr_description": "B%20%2D%20jump%20backwards%20to%20the%20start%20of%20a%20word%20%28words%20can%20contain%20punctuation%29"
254 | },
255 | {
256 | "name": "Jump backwards to the end of a word",
257 | "keywords": [
258 | "cursor",
259 | "jump",
260 | "backwards",
261 | "word",
262 | "navigation"
263 | ],
264 | "command": "ge",
265 | "description": "Moves the cursor backward to the end of the previous word.",
266 | "rtorr_description": "ge%20%2D%20jump%20backwards%20to%20the%20end%20of%20a%20word"
267 | },
268 | {
269 | "name": "Jump backwards to the end of a word (words can contain punctuation)",
270 | "keywords": [
271 | "cursor",
272 | "jump",
273 | "backwards",
274 | "word",
275 | "punctuation",
276 | "navigation"
277 | ],
278 | "command": "gE",
279 | "description": "Moves the cursor backward to the end of the previous word, considering punctuation as part of the word.",
280 | "rtorr_description": "gE%20%2D%20jump%20backwards%20to%20the%20end%20of%20a%20word%20%28words%20can%20contain%20punctuation%29"
281 | },
282 | {
283 | "name": "Move cursor to matching character",
284 | "keywords": [
285 | "cursor",
286 | "move",
287 | "matching",
288 | "character",
289 | "parentheses",
290 | "brackets",
291 | "braces",
292 | "navigation"
293 | ],
294 | "command": "%",
295 | "description": "Moves the cursor to the matching character of a pair, such as parentheses, brackets, or braces. Use :h matchpairs in Vim for more information on supported pairs.",
296 | "rtorr_description": "%25%20%2D%20move%20cursor%20to%20matching%20character%20%28default%20supported%20pairs%3A%20%27%28%29%27%2C%20%27%7B%7D%27%2C%20%27%5B%5D%27%2D%20use%20%20%3Ah%20matchpairs%20%20in%20vim%20for%20more%20info%29"
297 | },
298 | {
299 | "name": "Jump to the start of the line",
300 | "keywords": [
301 | "cursor",
302 | "jump",
303 | "start",
304 | "line",
305 | "navigation"
306 | ],
307 | "command": "0",
308 | "description": "Moves the cursor to the very beginning of the current line.",
309 | "rtorr_description": "0%20%2D%20jump%20to%20the%20start%20of%20the%20line"
310 | },
311 | {
312 | "name": "Jump to the first non-blank character of the line",
313 | "keywords": [
314 | "cursor",
315 | "jump",
316 | "first",
317 | "non-blank",
318 | "character",
319 | "line",
320 | "navigation"
321 | ],
322 | "command": "^",
323 | "description": "Moves the cursor to the first non-blank character on the current line.",
324 | "rtorr_description": "%5E%20%2D%20jump%20to%20the%20first%20non-blank%20character%20of%20the%20line"
325 | },
326 | {
327 | "name": "Jump to the end of the line",
328 | "keywords": [
329 | "cursor",
330 | "jump",
331 | "end",
332 | "line",
333 | "navigation"
334 | ],
335 | "command": "$",
336 | "description": "Moves the cursor to the end of the current line.",
337 | "rtorr_description": "%24%20%2D%20jump%20to%20the%20end%20of%20the%20line"
338 | },
339 | {
340 | "name": "Jump to the last non-blank character of the line",
341 | "keywords": [
342 | "cursor",
343 | "jump",
344 | "last",
345 | "non-blank",
346 | "character",
347 | "line",
348 | "navigation"
349 | ],
350 | "command": "g_",
351 | "description": "Moves the cursor to the last non-blank character on the current line.",
352 | "rtorr_description": "g_%20%2D%20jump%20to%20the%20last%20non-blank%20character%20of%20the%20line"
353 | },
354 | {
355 | "name": "Go to the first line of the document",
356 | "keywords": [
357 | "cursor",
358 | "go",
359 | "first",
360 | "line",
361 | "document",
362 | "navigation"
363 | ],
364 | "command": "gg",
365 | "description": "Moves the cursor to the first line of the document.",
366 | "rtorr_description": "gg%20%2D%20go%20to%20the%20first%20line%20of%20the%20document"
367 | },
368 | {
369 | "name": "Go to the last line of the document",
370 | "keywords": [
371 | "cursor",
372 | "go",
373 | "last",
374 | "line",
375 | "document",
376 | "navigation"
377 | ],
378 | "command": "G",
379 | "description": "Moves the cursor to the last line of the document.",
380 | "rtorr_description": "G%20%2D%20go%20to%20the%20last%20line%20of%20the%20document"
381 | },
382 | {
383 | "name": "Go to line 5",
384 | "keywords": [
385 | "cursor",
386 | "go",
387 | "line",
388 | "number",
389 | "navigation"
390 | ],
391 | "command": "5gg or 5G",
392 | "description": "Moves the cursor to line number 5 in the document.",
393 | "rtorr_description": "5gg%20%20or%20%205G%20%2D%20go%20to%20line%205"
394 | },
395 | {
396 | "name": "Move to local declaration",
397 | "keywords": [
398 | "cursor",
399 | "move",
400 | "local",
401 | "declaration",
402 | "code",
403 | "navigation"
404 | ],
405 | "command": "gd",
406 | "description": "Moves the cursor to the local declaration of the variable under the cursor (useful for code editing).",
407 | "rtorr_description": "gd%20%2D%20move%20to%20local%20declaration"
408 | },
409 | {
410 | "name": "Move to global declaration",
411 | "keywords": [
412 | "cursor",
413 | "move",
414 | "global",
415 | "declaration",
416 | "code",
417 | "navigation"
418 | ],
419 | "command": "gD",
420 | "description": "Moves the cursor to the global declaration of the variable under the cursor (useful for code editing).",
421 | "rtorr_description": "gD%20%2D%20move%20to%20global%20declaration"
422 | },
423 | {
424 | "name": "Jump to next occurrence of character x",
425 | "keywords": [
426 | "cursor",
427 | "jump",
428 | "next",
429 | "occurrence",
430 | "character",
431 | "navigation"
432 | ],
433 | "command": "fx",
434 | "description": "Moves the cursor to the next occurrence of character 'x' on the current line.",
435 | "rtorr_description": "fx%20%2D%20jump%20to%20next%20occurrence%20of%20character%20x"
436 | },
437 | {
438 | "name": "Jump to before next occurrence of character x",
439 | "keywords": [
440 | "cursor",
441 | "jump",
442 | "before",
443 | "next",
444 | "occurrence",
445 | "character",
446 | "navigation"
447 | ],
448 | "command": "tx",
449 | "description": "Moves the cursor to the position before the next occurrence of character 'x' on the current line.",
450 | "rtorr_description": "tx%20%2D%20jump%20to%20before%20next%20occurrence%20of%20character%20x"
451 | },
452 | {
453 | "name": "Jump to the previous occurrence of character x",
454 | "keywords": [
455 | "cursor",
456 | "jump",
457 | "previous",
458 | "occurrence",
459 | "character",
460 | "navigation"
461 | ],
462 | "command": "Fx",
463 | "description": "Moves the cursor to the previous occurrence of character 'x' on the current line.",
464 | "rtorr_description": "Fx%20%2D%20jump%20to%20the%20previous%20occurrence%20of%20character%20x"
465 | },
466 | {
467 | "name": "Jump to after previous occurrence of character x",
468 | "keywords": [
469 | "cursor",
470 | "jump",
471 | "after",
472 | "previous",
473 | "occurrence",
474 | "character",
475 | "navigation"
476 | ],
477 | "command": "Tx",
478 | "description": "Moves the cursor to the position after the previous occurrence of character 'x' on the current line.",
479 | "rtorr_description": "Tx%20%2D%20jump%20to%20after%20previous%20occurrence%20of%20character%20x"
480 | },
481 | {
482 | "name": "Repeat previous f, t, F or T movement",
483 | "keywords": [
484 | "cursor",
485 | "repeat",
486 | "previous",
487 | "movement",
488 | "f",
489 | "t",
490 | "F",
491 | "T",
492 | "navigation"
493 | ],
494 | "command": ";",
495 | "description": "Repeats the previous f, t, F, or T cursor movement command in the same direction.",
496 | "rtorr_description": "%3B%20%2D%20repeat%20previous%20f%2C%20t%2C%20F%20or%20T%20movement"
497 | },
498 | {
499 | "name": "Repeat previous f, t, F or T movement, backwards",
500 | "keywords": [
501 | "cursor",
502 | "repeat",
503 | "previous",
504 | "movement",
505 | "backwards",
506 | "f",
507 | "t",
508 | "F",
509 | "T",
510 | "navigation"
511 | ],
512 | "command": ",",
513 | "description": "Repeats the previous f, t, F, or T cursor movement command in the opposite direction.",
514 | "rtorr_description": "%2C%20%2D%20repeat%20previous%20f%2C%20t%2C%20F%20or%20T%20movement%2C%20backwards"
515 | },
516 | {
517 | "name": "Jump to next paragraph (or function/block, when editing code)",
518 | "keywords": [
519 | "cursor",
520 | "jump",
521 | "next",
522 | "paragraph",
523 | "function",
524 | "block",
525 | "code",
526 | "navigation"
527 | ],
528 | "command": "}",
529 | "description": "Moves the cursor to the beginning of the next paragraph. When editing code, it moves to the next function or block.",
530 | "rtorr_description": "%7D%20%2D%20jump%20to%20next%20paragraph%20%28or%20function/block%2C%20when%20editing%20code%29"
531 | },
532 | {
533 | "name": "Jump to previous paragraph (or function/block, when editing code)",
534 | "keywords": [
535 | "cursor",
536 | "jump",
537 | "previous",
538 | "paragraph",
539 | "function",
540 | "block",
541 | "code",
542 | "navigation"
543 | ],
544 | "command": "{",
545 | "description": "Moves the cursor to the beginning of the previous paragraph. When editing code, it moves to the previous function or block.",
546 | "rtorr_description": "%7B%20%2D%20jump%20to%20previous%20paragraph%20%28or%20function/block%2C%20when%20editing%20code%29"
547 | },
548 | {
549 | "name": "Center cursor on screen",
550 | "keywords": [
551 | "cursor",
552 | "center",
553 | "screen",
554 | "navigation"
555 | ],
556 | "command": "zz",
557 | "description": "Centers the cursor vertically on the screen.",
558 | "rtorr_description": "zz%20%2D%20center%20cursor%20on%20screen"
559 | },
560 | {
561 | "name": "Position cursor on top of the screen",
562 | "keywords": [
563 | "cursor",
564 | "position",
565 | "top",
566 | "screen",
567 | "navigation"
568 | ],
569 | "command": "zt",
570 | "description": "Positions the cursor at the top of the screen.",
571 | "rtorr_description": "zt%20%2D%20position%20cursor%20on%20top%20of%20the%20screen"
572 | },
573 | {
574 | "name": "Position cursor on bottom of the screen",
575 | "keywords": [
576 | "cursor",
577 | "position",
578 | "bottom",
579 | "screen",
580 | "navigation"
581 | ],
582 | "command": "zb",
583 | "description": "Positions the cursor at the bottom of the screen.",
584 | "rtorr_description": "zb%20%2D%20position%20cursor%20on%20bottom%20of%20the%20screen"
585 | },
586 | {
587 | "name": "Move screen down one line (without moving cursor)",
588 | "keywords": [
589 | "screen",
590 | "move",
591 | "down",
592 | "line",
593 | "cursor",
594 | "navigation"
595 | ],
596 | "command": "Ctrl + e",
597 | "description": "Scrolls the screen down one line without moving the cursor.",
598 | "rtorr_description": "Ctrl%20%20%2B%20%20e%20%2D%20move%20screen%20down%20one%20line%20%28without%20moving%20cursor%29"
599 | },
600 | {
601 | "name": "Move screen up one line (without moving cursor)",
602 | "keywords": [
603 | "screen",
604 | "move",
605 | "up",
606 | "line",
607 | "cursor",
608 | "navigation"
609 | ],
610 | "command": "Ctrl + y",
611 | "description": "Scrolls the screen up one line without moving the cursor.",
612 | "rtorr_description": "Ctrl%20%20%2B%20%20y%20%2D%20move%20screen%20up%20one%20line%20%28without%20moving%20cursor%29"
613 | },
614 | {
615 | "name": "Move screen up one page (cursor to last line)",
616 | "keywords": [
617 | "screen",
618 | "move",
619 | "up",
620 | "page",
621 | "cursor",
622 | "last",
623 | "line",
624 | "navigation"
625 | ],
626 | "command": "Ctrl + b",
627 | "description": "Scrolls the screen up one page and moves the cursor to the last line of the new page.",
628 | "rtorr_description": "Ctrl%20%20%2B%20%20b%20%2D%20move%20screen%20up%20one%20page%20%28cursor%20to%20last%20line%29"
629 | },
630 | {
631 | "name": "Move screen down one page (cursor to first line)",
632 | "keywords": [
633 | "screen",
634 | "move",
635 | "down",
636 | "page",
637 | "cursor",
638 | "first",
639 | "line",
640 | "navigation"
641 | ],
642 | "command": "Ctrl + f",
643 | "description": "Scrolls the screen down one page and moves the cursor to the first line of the new page.",
644 | "rtorr_description": "Ctrl%20%20%2B%20%20f%20%2D%20move%20screen%20down%20one%20page%20%28cursor%20to%20first%20line%29"
645 | },
646 | {
647 | "name": "Move cursor and screen down 1/2 page",
648 | "keywords": [
649 | "cursor",
650 | "screen",
651 | "move",
652 | "down",
653 | "half",
654 | "page",
655 | "navigation"
656 | ],
657 | "command": "Ctrl + d",
658 | "description": "Scrolls the screen down half a page and moves the cursor accordingly.",
659 | "rtorr_description": "Ctrl%20%20%2B%20%20d%20%2D%20move%20cursor%20and%20screen%20down%201/2%20page"
660 | },
661 | {
662 | "name": "Move cursor and screen up 1/2 page",
663 | "keywords": [
664 | "cursor",
665 | "screen",
666 | "move",
667 | "up",
668 | "half",
669 | "page",
670 | "navigation"
671 | ],
672 | "command": "Ctrl + u",
673 | "description": "Scrolls the screen up half a page and moves the cursor accordingly.",
674 | "rtorr_description": "Ctrl%20%20%2B%20%20u%20%2D%20move%20cursor%20and%20screen%20up%201/2%20page"
675 | },
676 | {
677 | "name": "Insert before the cursor",
678 | "keywords": [
679 | "insert",
680 | "text",
681 | "before",
682 | "cursor",
683 | "editing",
684 | "mode"
685 | ],
686 | "command": "i",
687 | "description": "Enters insert mode and starts inserting text before the cursor position.",
688 | "rtorr_description": "i%20%2D%20insert%20before%20the%20cursor"
689 | },
690 | {
691 | "name": "Insert at the beginning of the line",
692 | "keywords": [
693 | "insert",
694 | "text",
695 | "beginning",
696 | "line",
697 | "editing",
698 | "mode"
699 | ],
700 | "command": "I",
701 | "description": "Enters insert mode and starts inserting text at the beginning of the current line.",
702 | "rtorr_description": "I%20%2D%20insert%20at%20the%20beginning%20of%20the%20line"
703 | },
704 | {
705 | "name": "Insert (append) after the cursor",
706 | "keywords": [
707 | "insert",
708 | "append",
709 | "text",
710 | "after",
711 | "cursor",
712 | "editing",
713 | "mode"
714 | ],
715 | "command": "a",
716 | "description": "Enters insert mode and starts inserting text after the cursor position.",
717 | "rtorr_description": "a%20%2D%20insert%20%28append%29%20after%20the%20cursor"
718 | },
719 | {
720 | "name": "Insert (append) at the end of the line",
721 | "keywords": [
722 | "insert",
723 | "append",
724 | "text",
725 | "end",
726 | "line",
727 | "editing",
728 | "mode"
729 | ],
730 | "command": "A",
731 | "description": "Enters insert mode and starts inserting text at the end of the current line.",
732 | "rtorr_description": "A%20%2D%20insert%20%28append%29%20at%20the%20end%20of%20the%20line"
733 | },
734 | {
735 | "name": "Append (open) a new line below the current line",
736 | "keywords": [
737 | "append",
738 | "open",
739 | "new",
740 | "line",
741 | "below",
742 | "current",
743 | "editing",
744 | "mode"
745 | ],
746 | "command": "o",
747 | "description": "Opens a new line below the current line and enters insert mode.",
748 | "rtorr_description": "o%20%2D%20append%20%28open%29%20a%20new%20line%20below%20the%20current%20line"
749 | },
750 | {
751 | "name": "Append (open) a new line above the current line",
752 | "keywords": [
753 | "append",
754 | "open",
755 | "new",
756 | "line",
757 | "above",
758 | "current",
759 | "editing",
760 | "mode"
761 | ],
762 | "command": "O",
763 | "description": "Opens a new line above the current line and enters insert mode.",
764 | "rtorr_description": "O%20%2D%20append%20%28open%29%20a%20new%20line%20above%20the%20current%20line"
765 | },
766 | {
767 | "name": "Insert (append) at the end of the word",
768 | "keywords": [
769 | "insert",
770 | "append",
771 | "text",
772 | "end",
773 | "word",
774 | "editing",
775 | "mode"
776 | ],
777 | "command": "ea",
778 | "description": "Moves the cursor to the end of the current word and enters insert mode.",
779 | "rtorr_description": "ea%20%2D%20insert%20%28append%29%20at%20the%20end%20of%20the%20word"
780 | },
781 | {
782 | "name": "Delete the character before the cursor during insert mode",
783 | "keywords": [
784 | "delete",
785 | "character",
786 | "before",
787 | "cursor",
788 | "insert",
789 | "mode",
790 | "editing"
791 | ],
792 | "command": "Ctrl + h",
793 | "description": "Deletes the character before the cursor while in insert mode.",
794 | "rtorr_description": "Ctrl%20%20%2B%20%20h%20%2D%20delete%20the%20character%20before%20the%20cursor%20during%20insert%20mode"
795 | },
796 | {
797 | "name": "Delete word before the cursor during insert mode",
798 | "keywords": [
799 | "delete",
800 | "word",
801 | "before",
802 | "cursor",
803 | "insert",
804 | "mode",
805 | "editing"
806 | ],
807 | "command": "Ctrl + w",
808 | "description": "Deletes the word before the cursor while in insert mode.",
809 | "rtorr_description": "Ctrl%20%20%2B%20%20w%20%2D%20delete%20word%20before%20the%20cursor%20during%20insert%20mode"
810 | },
811 | {
812 | "name": "Add a line break at the cursor position during insert mode",
813 | "keywords": [
814 | "line break",
815 | "cursor",
816 | "insert",
817 | "mode",
818 | "editing"
819 | ],
820 | "command": "Ctrl + j",
821 | "description": "Inserts a line break at the current cursor position while in insert mode.",
822 | "rtorr_description": "Ctrl%20%20%2B%20%20j%20%2D%20add%20a%20line%20break%20at%20the%20cursor%20position%20during%20insert%20mode"
823 | },
824 | {
825 | "name": "Indent (move right) line one shiftwidth during insert mode",
826 | "keywords": [
827 | "indent",
828 | "move",
829 | "right",
830 | "shiftwidth",
831 | "insert",
832 | "mode",
833 | "editing"
834 | ],
835 | "command": "Ctrl + t",
836 | "description": "Indents the current line one shiftwidth to the right while in insert mode.",
837 | "rtorr_description": "Ctrl%20%20%2B%20%20t%20%2D%20indent%20%28move%20right%29%20line%20one%20shiftwidth%20during%20insert%20mode"
838 | },
839 | {
840 | "name": "De-indent (move left) line one shiftwidth during insert mode",
841 | "keywords": [
842 | "de-indent",
843 | "move",
844 | "left",
845 | "shiftwidth",
846 | "insert",
847 | "mode",
848 | "editing"
849 | ],
850 | "command": "Ctrl + d",
851 | "description": "De-indents the current line one shiftwidth to the left while in insert mode.",
852 | "rtorr_description": "Ctrl%20%20%2B%20%20d%20%2D%20de-indent%20%28move%20left%29%20line%20one%20shiftwidth%20during%20insert%20mode"
853 | },
854 | {
855 | "name": "Insert (auto-complete) next match before the cursor during insert mode",
856 | "keywords": [
857 | "insert",
858 | "auto-complete",
859 | "next",
860 | "match",
861 | "before",
862 | "cursor",
863 | "insert",
864 | "mode",
865 | "editing"
866 | ],
867 | "command": "Ctrl + n",
868 | "description": "Inserts the next matching completion before the cursor while in insert mode.",
869 | "rtorr_description": "Ctrl%20%20%2B%20%20n%20%2D%20insert%20%28auto-complete%29%20next%20match%20before%20the%20cursor%20during%20insert%20mode"
870 | },
871 | {
872 | "name": "Insert (auto-complete) previous match before the cursor during insert mode",
873 | "keywords": [
874 | "insert",
875 | "auto-complete",
876 | "previous",
877 | "match",
878 | "before",
879 | "cursor",
880 | "insert",
881 | "mode",
882 | "editing"
883 | ],
884 | "command": "Ctrl + p",
885 | "description": "Inserts the previous matching completion before the cursor while in insert mode.",
886 | "rtorr_description": "Ctrl%20%20%2B%20%20p%20%2D%20insert%20%28auto-complete%29%20previous%20match%20before%20the%20cursor%20during%20insert%20mode"
887 | },
888 | {
889 | "name": "Insert the contents of register x",
890 | "keywords": [
891 | "insert",
892 | "register",
893 | "contents",
894 | "paste",
895 | "editing"
896 | ],
897 | "command": "Ctrl + rx",
898 | "description": "Inserts the contents of register 'x' at the cursor position.",
899 | "rtorr_description": "Ctrl%20%20%2B%20%20rx%20%2D%20insert%20the%20contents%20of%20register%20x"
900 | },
901 | {
902 | "name": "Temporarily enter normal mode to issue one normal-mode command x.",
903 | "keywords": [
904 | "normal",
905 | "mode",
906 | "command",
907 | "temporary",
908 | "insert",
909 | "editing"
910 | ],
911 | "command": "Ctrl + ox",
912 | "description": "Temporarily switches to normal mode from insert mode to execute a single normal mode command 'x'. After executing the command, it returns to insert mode.",
913 | "rtorr_description": "Ctrl%20%20%2B%20%20ox%20%2D%20Temporarily%20enter%20normal%20mode%20to%20issue%20one%20normal-mode%20command%20x."
914 | },
915 | {
916 | "name": "Exit insert mode",
917 | "keywords": [
918 | "exit",
919 | "insert",
920 | "mode",
921 | "normal",
922 | "mode",
923 | "editing"
924 | ],
925 | "command": "Esc or Ctrl + c",
926 | "description": "Exits insert mode and returns to normal mode.",
927 | "rtorr_description": "Esc%20%20or%20%20Ctrl%20%20%2B%20%20c%20%2D%20exit%20insert%20mode"
928 | },
929 | {
930 | "name": "Replace a single character",
931 | "keywords": [
932 | "replace",
933 | "character",
934 | "editing"
935 | ],
936 | "command": "r",
937 | "description": "Replaces the character under the cursor with the next character typed.",
938 | "rtorr_description": "r%20%2D%20replace%20a%20single%20character."
939 | },
940 | {
941 | "name": "Replace more than one character, until ESC is pressed",
942 | "keywords": [
943 | "replace",
944 | "multiple",
945 | "characters",
946 | "editing"
947 | ],
948 | "command": "R",
949 | "description": "Enters replace mode, allowing you to replace multiple characters until the ESC key is pressed.",
950 | "rtorr_description": "R%20%2D%20replace%20more%20than%20one%20character%2C%20until%20%20ESC%20%20is%20pressed."
951 | },
952 | {
953 | "name": "Join line below to the current one with one space in between",
954 | "keywords": [
955 | "join",
956 | "line",
957 | "below",
958 | "current",
959 | "space",
960 | "editing"
961 | ],
962 | "command": "J",
963 | "description": "Joins the line below the current line to the end of the current line, adding a single space in between.",
964 | "rtorr_description": "J%20%2D%20join%20line%20below%20to%20the%20current%20one%20with%20one%20space%20in%20between"
965 | },
966 | {
967 | "name": "Join line below to the current one without space in between",
968 | "keywords": [
969 | "join",
970 | "line",
971 | "below",
972 | "current",
973 | "no space",
974 | "editing"
975 | ],
976 | "command": "gJ",
977 | "description": "Joins the line below the current line to the end of the current line without adding any space.",
978 | "rtorr_description": "gJ%20%2D%20join%20line%20below%20to%20the%20current%20one%20without%20space%20in%20between"
979 | },
980 | {
981 | "name": "Reflow paragraph",
982 | "keywords": [
983 | "reflow",
984 | "paragraph",
985 | "formatting",
986 | "text",
987 | "editing"
988 | ],
989 | "command": "gwip",
990 | "description": "Reflows the current paragraph, adjusting line breaks to fit within the current window width.",
991 | "rtorr_description": "gwip%20%2D%20reflow%20paragraph"
992 | },
993 | {
994 | "name": "Switch case up to motion",
995 | "keywords": [
996 | "switch",
997 | "case",
998 | "uppercase",
999 | "lowercase",
1000 | "motion",
1001 | "editing"
1002 | ],
1003 | "command": "g~",
1004 | "description": "Switches the case of characters (uppercase to lowercase or vice versa) from the cursor position to the end of the specified motion.",
1005 | "rtorr_description": "g~%20%2D%20switch%20case%20up%20to%20motion"
1006 | },
1007 | {
1008 | "name": "Change to lowercase up to motion",
1009 | "keywords": [
1010 | "change",
1011 | "lowercase",
1012 | "motion",
1013 | "editing"
1014 | ],
1015 | "command": "gu",
1016 | "description": "Changes the characters from the cursor position to the end of the specified motion to lowercase.",
1017 | "rtorr_description": "gu%20%2D%20change%20to%20lowercase%20up%20to%20motion"
1018 | },
1019 | {
1020 | "name": "Change to Uppercase",
1021 | "keywords": [
1022 | "uppercase",
1023 | "gU",
1024 | "change case"
1025 | ],
1026 | "command": "gU",
1027 | "description": "Changes text to uppercase up to the specified motion.",
1028 | "rtorr_description": "change%20to%20uppercase%20up%20to%20motion"
1029 | },
1030 | {
1031 | "name": "Change (Replace) Entire Line",
1032 | "keywords": [
1033 | "replace line",
1034 | "change line",
1035 | "cc"
1036 | ],
1037 | "command": "cc",
1038 | "description": "Replaces the content of the entire current line.",
1039 | "rtorr_description": "change%20%28replace%29%20entire%20line"
1040 | },
1041 | {
1042 | "name": "Change (Replace) to End of Line",
1043 | "keywords": [
1044 | "replace to end of line",
1045 | "change to end of line",
1046 | "c$",
1047 | "C"
1048 | ],
1049 | "command": "c$ or C",
1050 | "description": "Replaces text from the cursor position to the end of the current line.",
1051 | "rtorr_description": "change%20%28replace%29%20to%20the%20end%20of%20the%20line"
1052 | },
1053 | {
1054 | "name": "Change (Replace) Entire Word",
1055 | "keywords": [
1056 | "replace word",
1057 | "change word",
1058 | "ciw"
1059 | ],
1060 | "command": "ciw",
1061 | "description": "Replaces the entire word under the cursor.",
1062 | "rtorr_description": "change%20%28replace%29%20entire%20word"
1063 | },
1064 | {
1065 | "name": "Change (Replace) to End of Word",
1066 | "keywords": [
1067 | "replace to end of word",
1068 | "change to end of word",
1069 | "cw",
1070 | "ce"
1071 | ],
1072 | "command": "cw or ce",
1073 | "description": "Replaces text from the cursor position to the end of the current word.",
1074 | "rtorr_description": "change%20%28replace%29%20to%20the%20end%20of%20the%20word"
1075 | },
1076 | {
1077 | "name": "Delete Character and Substitute Text",
1078 | "keywords": [
1079 | "delete and substitute",
1080 | "s",
1081 | "cl"
1082 | ],
1083 | "command": "s",
1084 | "description": "Deletes the character under the cursor and enters insert mode to allow substitution of text (same as cl).",
1085 | "rtorr_description": "delete%20character%20and%20substitute%20text%20%28same%20as%20cl%29"
1086 | },
1087 | {
1088 | "name": "Delete Line and Substitute Text",
1089 | "keywords": [
1090 | "delete line and substitute",
1091 | "S",
1092 | "cc"
1093 | ],
1094 | "command": "S",
1095 | "description": "Deletes the entire line and enters insert mode to allow substitution of text (same as cc).",
1096 | "rtorr_description": "delete%20line%20and%20substitute%20text%20%28same%20as%20cc%29"
1097 | },
1098 | {
1099 | "name": "Transpose Two Letters",
1100 | "keywords": [
1101 | "transpose",
1102 | "switch letters",
1103 | "xp"
1104 | ],
1105 | "command": "xp",
1106 | "description": "Transposes the character under the cursor with the character to its right (effectively deleting and pasting).",
1107 | "rtorr_description": "transpose%20two%20letters%20%28delete%20and%20paste%29"
1108 | },
1109 | {
1110 | "name": "Undo",
1111 | "keywords": [
1112 | "undo change",
1113 | "reverse change",
1114 | "u"
1115 | ],
1116 | "command": "u",
1117 | "description": "Reverses the last editing action.",
1118 | "rtorr_description": "undo"
1119 | },
1120 | {
1121 | "name": "Restore (Undo) Last Changed Line",
1122 | "keywords": [
1123 | "restore line",
1124 | "undo line change",
1125 | "U"
1126 | ],
1127 | "command": "U",
1128 | "description": "Restores the last changed line to its state before any modifications were made.",
1129 | "rtorr_description": "restore%20%28undo%29%20last%20changed%20line"
1130 | },
1131 | {
1132 | "name": "Redo",
1133 | "keywords": [
1134 | "ctrl+r",
1135 | "redo",
1136 | "repeat"
1137 | ],
1138 | "command": "Ctrl + r",
1139 | "description": "Redoes a previously undone change.",
1140 | "rtorr_description": "redo"
1141 | },
1142 | {
1143 | "name": "Repeat Last Command",
1144 | "keywords": [
1145 | "repeat",
1146 | "dot command",
1147 | "."
1148 | ],
1149 | "command": ".",
1150 | "description": "Repeats the last executed command.",
1151 | "rtorr_description": "repeat%20last%20command"
1152 | },
1153 | {
1154 | "name": "Start Visual Mode",
1155 | "keywords": [
1156 | "visual mode",
1157 | "select text",
1158 | "mark lines",
1159 | "v"
1160 | ],
1161 | "command": "v",
1162 | "description": "Starts visual mode, allowing you to select text by moving the cursor. Once text is selected, you can perform various commands on it (like yanking/copying).",
1163 | "rtorr_description": "start%20visual%20mode%2C%20mark%20lines%2C%20then%20do%20a%20command%20%28like%20y-yank%29"
1164 | },
1165 | {
1166 | "name": "Start Linewise Visual Mode",
1167 | "keywords": [
1168 | "linewise visual mode",
1169 | "select lines",
1170 | "V"
1171 | ],
1172 | "command": "V",
1173 | "description": "Starts linewise visual mode, which allows you to select entire lines by moving the cursor.",
1174 | "rtorr_description": "start%20linewise%20visual%20mode"
1175 | },
1176 | {
1177 | "name": "Move to Other End of Marked Area",
1178 | "keywords": [
1179 | "visual mode",
1180 | "switch selection ends",
1181 | "o"
1182 | ],
1183 | "command": "o",
1184 | "description": "While in visual mode, this command moves the cursor to the opposite end of the currently selected area.",
1185 | "rtorr_description": "move%20to%20other%20end%20of%20marked%20area"
1186 | },
1187 | {
1188 | "name": "Start Visual Block Mode",
1189 | "keywords": [
1190 | "visual block mode",
1191 | "select block",
1192 | "Ctrl+v"
1193 | ],
1194 | "command": "Ctrl + v",
1195 | "description": "Starts visual block mode, allowing you to select a rectangular block of text.",
1196 | "rtorr_description": "start%20visual%20block%20mode"
1197 | },
1198 | {
1199 | "name": "Move to Other Corner of Block",
1200 | "keywords": [
1201 | "visual block mode",
1202 | "move block corner",
1203 | "O"
1204 | ],
1205 | "command": "O",
1206 | "description": "While in visual block mode, this command moves the cursor to the opposite corner of the selected block.",
1207 | "rtorr_description": "move%20to%20other%20corner%20of%20block"
1208 | },
1209 | {
1210 | "name": "Mark a Word",
1211 | "keywords": [
1212 | "visual mode",
1213 | "select word",
1214 | "aw"
1215 | ],
1216 | "command": "aw",
1217 | "description": "In visual mode, selects the current word.",
1218 | "rtorr_description": "mark%20a%20word"
1219 | },
1220 | {
1221 | "name": "Mark a Block with Parentheses",
1222 | "keywords": [
1223 | "visual mode",
1224 | "select block",
1225 | "parentheses",
1226 | "ab"
1227 | ],
1228 | "command": "ab",
1229 | "description": "In visual mode, selects a block of text enclosed by parentheses ().",
1230 | "rtorr_description": "a%20block%20with%20%28%29"
1231 | },
1232 | {
1233 | "name": "Mark a Block with Curly Braces",
1234 | "keywords": [
1235 | "visual mode",
1236 | "select block",
1237 | "curly braces",
1238 | "aB"
1239 | ],
1240 | "command": "aB",
1241 | "description": "In visual mode, selects a block of text enclosed by curly braces {}.",
1242 | "rtorr_description": "a%20block%20with%20%7B%7D"
1243 | },
1244 | {
1245 | "name": "Mark a Block with Angle Brackets",
1246 | "keywords": [
1247 | "visual mode",
1248 | "select block",
1249 | "angle brackets",
1250 | "tags",
1251 | "at"
1252 | ],
1253 | "command": "at",
1254 | "description": "In visual mode, selects a block of text enclosed by angle brackets <> (often used for tags).",
1255 | "rtorr_description": "a%20block%20with%20%3C%3E%20tags"
1256 | },
1257 | {
1258 | "name": "Select Inner Block with Parentheses",
1259 | "keywords": [
1260 | "visual mode",
1261 | "select inner block",
1262 | "parentheses",
1263 | "ib"
1264 | ],
1265 | "command": "ib",
1266 | "description": "In visual mode, selects the text within the nearest enclosing parentheses ().",
1267 | "rtorr_description": "inner%20block%20with%20%28%29"
1268 | },
1269 | {
1270 | "name": "Select Inner Block with Curly Braces",
1271 | "keywords": [
1272 | "visual mode",
1273 | "select inner block",
1274 | "curly braces",
1275 | "iB"
1276 | ],
1277 | "command": "iB",
1278 | "description": "In visual mode, selects the text within the nearest enclosing curly braces {}.",
1279 | "rtorr_description": "inner%20block%20with%20%7B%7D"
1280 | },
1281 | {
1282 | "name": "Select Inner Block with Angle Brackets",
1283 | "keywords": [
1284 | "visual mode",
1285 | "select inner block",
1286 | "angle brackets",
1287 | "tags",
1288 | "it"
1289 | ],
1290 | "command": "it",
1291 | "description": "In visual mode, selects the text within the nearest enclosing angle brackets <> (often used for tags).",
1292 | "rtorr_description": "inner%20block%20with%20%3C%3E%20tags"
1293 | },
1294 | {
1295 | "name": "Exit Visual Mode",
1296 | "keywords": [
1297 | "visual mode",
1298 | "exit",
1299 | "Esc",
1300 | "Ctrl+c"
1301 | ],
1302 | "command": "Esc or Ctrl + c",
1303 | "description": "Exits visual mode.",
1304 | "rtorr_description": "exit%20visual%20mode"
1305 | },
1306 | {
1307 | "name": "Shift Text Right",
1308 | "keywords": [
1309 | "visual mode",
1310 | "indent",
1311 | ">"
1312 | ],
1313 | "command": ">",
1314 | "description": "In visual mode, shifts the selected text one indentation level to the right.",
1315 | "rtorr_description": "shift%20text%20right"
1316 | },
1317 | {
1318 | "name": "Shift Text Left",
1319 | "keywords": [
1320 | "visual mode",
1321 | "unindent",
1322 | "<"
1323 | ],
1324 | "command": "<",
1325 | "description": "In visual mode, shifts the selected text one indentation level to the left.",
1326 | "rtorr_description": "shift%20text%20left"
1327 | },
1328 | {
1329 | "name": "Yank (Copy) Marked Text",
1330 | "keywords": [
1331 | "visual mode",
1332 | "copy",
1333 | "yank",
1334 | "y"
1335 | ],
1336 | "command": "y",
1337 | "description": "In visual mode, copies (yanks) the selected text into the clipboard.",
1338 | "rtorr_description": "yank%20%28copy%29%20marked%20text"
1339 | },
1340 | {
1341 | "name": "Delete Marked Text",
1342 | "keywords": [
1343 | "visual mode",
1344 | "delete",
1345 | "d"
1346 | ],
1347 | "command": "d",
1348 | "description": "In visual mode, deletes the selected text.",
1349 | "rtorr_description": "delete%20marked%20text"
1350 | },
1351 | {
1352 | "name": "Switch Case",
1353 | "keywords": [
1354 | "visual mode",
1355 | "toggle case",
1356 | "~"
1357 | ],
1358 | "command": "~",
1359 | "description": "In visual mode, switches the case (uppercase/lowercase) of the selected text.",
1360 | "rtorr_description": "switch%20case"
1361 | },
1362 | {
1363 | "name": "Change Marked Text to Lowercase",
1364 | "keywords": [
1365 | "visual mode",
1366 | "lowercase",
1367 | "u"
1368 | ],
1369 | "command": "u",
1370 | "description": "In visual mode, changes the selected text to lowercase.",
1371 | "rtorr_description": "change%20marked%20text%20to%20lowercase"
1372 | },
1373 | {
1374 | "name": "Change Marked Text to Uppercase",
1375 | "keywords": [
1376 | "visual mode",
1377 | "uppercase",
1378 | "U"
1379 | ],
1380 | "command": "U",
1381 | "description": "In visual mode, changes the selected text to uppercase.",
1382 | "rtorr_description": "change%20marked%20text%20to%20uppercase"
1383 | },
1384 | {
1385 | "name": "Show Registers Content",
1386 | "keywords": [
1387 | "registers",
1388 | "view registers",
1389 | ":reg",
1390 | ":registers"
1391 | ],
1392 | "command": ":reg[isters]",
1393 | "description": "Displays the contents of all registers.",
1394 | "rtorr_description": "%3Areg%5Bisters%5D%20%2D%20show%20registers%20content"
1395 | },
1396 | {
1397 | "name": "Yank into Register x",
1398 | "keywords": [
1399 | "registers",
1400 | "yank",
1401 | "copy to register",
1402 | "\"xy"
1403 | ],
1404 | "command": "\"xy",
1405 | "description": "Copies (yanks) the selected text into the specified register x.",
1406 | "rtorr_description": "%22xy%20%2D%20yank%20into%20register%20x"
1407 | },
1408 | {
1409 | "name": "Paste Contents of Register x",
1410 | "keywords": [
1411 | "registers",
1412 | "paste",
1413 | "paste from register",
1414 | "\"xp"
1415 | ],
1416 | "command": "\"xp",
1417 | "description": "Pastes the contents of the specified register x.",
1418 | "rtorr_description": "%22xp%20%2D%20paste%20contents%20of%20register%20x"
1419 | },
1420 | {
1421 | "name": "Yank into System Clipboard Register",
1422 | "keywords": [
1423 | "clipboard",
1424 | "copy",
1425 | "yank",
1426 | "system clipboard",
1427 | "\"+y"
1428 | ],
1429 | "command": "\"+y",
1430 | "description": "Copies (yanks) the selected text into the system clipboard.",
1431 | "rtorr_description": "%22%2By%20%2D%20yank%20into%20the%20system%20clipboard%20register"
1432 | },
1433 | {
1434 | "name": "Paste from System Clipboard Register",
1435 | "keywords": [
1436 | "clipboard",
1437 | "paste",
1438 | "system clipboard",
1439 | "\"+p"
1440 | ],
1441 | "command": "\"+p",
1442 | "description": "Pastes the contents of the system clipboard.",
1443 | "rtorr_description": "%22%2Bp%20%2D%20paste%20from%20the%20system%20clipboard%20register"
1444 | },
1445 | {
1446 | "name": "List of Marks",
1447 | "keywords": [
1448 | "marks",
1449 | "view marks",
1450 | ":marks"
1451 | ],
1452 | "command": ":marks",
1453 | "description": "Displays a list of all saved marks.",
1454 | "rtorr_description": "%3Amarks%20%2D%20list%20of%20marks"
1455 | },
1456 | {
1457 | "name": "Set Current Position for Mark A",
1458 | "keywords": [
1459 | "marks",
1460 | "set mark",
1461 | "ma"
1462 | ],
1463 | "command": "ma",
1464 | "description": "Sets the current cursor position as mark A. You can use any letter for the mark name.",
1465 | "rtorr_description": "ma%20%2D%20set%20current%20position%20for%20mark%20A"
1466 | },
1467 | {
1468 | "name": "Jump to Position of Mark A",
1469 | "keywords": [
1470 | "marks",
1471 | "jump to mark",
1472 | "`a"
1473 | ],
1474 | "command": "`a",
1475 | "description": "Moves the cursor to the position marked as A.",
1476 | "rtorr_description": "%60a%20%2D%20jump%20to%20position%20of%20mark%20A"
1477 | },
1478 | {
1479 | "name": "Yank Text to Position of Mark A",
1480 | "keywords": [
1481 | "marks",
1482 | "yank",
1483 | "copy to mark",
1484 | "y`a"
1485 | ],
1486 | "command": "y`a",
1487 | "description": "Copies (yanks) the selected text and places it at the position marked as A.",
1488 | "rtorr_description": "y%60a%20%2D%20yank%20text%20to%20position%20of%20mark%20A"
1489 | },
1490 | {
1491 | "name": "Go to Previous Exit Position",
1492 | "keywords": [
1493 | "position",
1494 | "previous exit",
1495 | "`0"
1496 | ],
1497 | "command": "`0",
1498 | "description": "Moves the cursor to the position where Vim was last exited.",
1499 | "rtorr_description": "%600%20%2D%20go%20to%20the%20position%20where%20Vim%20was%20previously%20exited"
1500 | },
1501 | {
1502 | "name": "Go to Last Edit Position",
1503 | "keywords": [
1504 | "position",
1505 | "last edit",
1506 | "'\""
1507 | ],
1508 | "command": "'\"",
1509 | "description": "Moves the cursor to the position when you last edited this file.",
1510 | "rtorr_description": "%27%22%20%2D%20go%20to%20the%20position%20when%20last%20editing%20this%20file"
1511 | },
1512 | {
1513 | "name": "Go to Last Change Position",
1514 | "keywords": [
1515 | "position",
1516 | "last change",
1517 | "`.`"
1518 | ],
1519 | "command": "`.`",
1520 | "description": "Moves the cursor to the position of the last change in this file.",
1521 | "rtorr_description": "%60.%20%2D%20go%20to%20the%20position%20of%20the%20last%20change%20in%20this%20file"
1522 | },
1523 | {
1524 | "name": "Go to Position Before Last Jump",
1525 | "keywords": [
1526 | "position",
1527 | "last jump",
1528 | "``"
1529 | ],
1530 | "command": "``",
1531 | "description": "Moves the cursor to the position before the last jump.",
1532 | "rtorr_description": "%60%60%20%2D%20go%20to%20the%20position%20before%20the%20last%20jump"
1533 | },
1534 | {
1535 | "name": "List of Jumps",
1536 | "keywords": [
1537 | "jumps",
1538 | "view jumps",
1539 | ":ju",
1540 | ":jumps"
1541 | ],
1542 | "command": ":ju[mps]",
1543 | "description": "Displays a list of all recent jumps.",
1544 | "rtorr_description": "%3Aju%5Bmps%5D%20%2D%20list%20of%20jumps"
1545 | },
1546 | {
1547 | "name": "Go to Newer Position in Jump List",
1548 | "keywords": [
1549 | "jumps",
1550 | "next jump",
1551 | "Ctrl+i"
1552 | ],
1553 | "command": "Ctrl + i",
1554 | "description": "Moves the cursor to the next newer position in the jump list.",
1555 | "rtorr_description": "Ctrl%20%20%2B%20%20i%20%2D%20go%20to%20newer%20position%20in%20jump%20list"
1556 | },
1557 | {
1558 | "name": "Go to Older Position in Jump List",
1559 | "keywords": [
1560 | "jumps",
1561 | "previous jump",
1562 | "Ctrl+o"
1563 | ],
1564 | "command": "Ctrl + o",
1565 | "description": "Moves the cursor to the next older position in the jump list.",
1566 | "rtorr_description": "Ctrl%20%20%2B%20%20o%20%2D%20go%20to%20older%20position%20in%20jump%20list"
1567 | },
1568 | {
1569 | "name": "List of Changes",
1570 | "keywords": [
1571 | "changes",
1572 | "view changes",
1573 | ":changes"
1574 | ],
1575 | "command": ":changes",
1576 | "description": "Displays a list of all recent changes made in the buffer.",
1577 | "rtorr_description": "%3Achanges%20%2D%20list%20of%20changes"
1578 | },
1579 | {
1580 | "name": "Go to Newer Position in Change List",
1581 | "keywords": [
1582 | "changes",
1583 | "next change",
1584 | "g,"
1585 | ],
1586 | "command": "g,",
1587 | "description": "Moves the cursor to the next newer position in the change list.",
1588 | "rtorr_description": "g%2C%20%2D%20go%20to%20newer%20position%20in%20change%20list"
1589 | },
1590 | {
1591 | "name": "Go to Older Position in Change List",
1592 | "keywords": [
1593 | "changes",
1594 | "previous change",
1595 | "g;"
1596 | ],
1597 | "command": "g;",
1598 | "description": "Moves the cursor to the next older position in the change list.",
1599 | "rtorr_description": "g%3B%20%2D%20go%20to%20older%20position%20in%20change%20list"
1600 | },
1601 | {
1602 | "name": "Jump to Tag Under Cursor",
1603 | "keywords": [
1604 | "tags",
1605 | "jump to tag",
1606 | "Ctrl+]"
1607 | ],
1608 | "command": "Ctrl + ]",
1609 | "description": "Jumps to the definition of the tag under the cursor.",
1610 | "rtorr_description": "Ctrl%20%20%2B%20%20%5D%20%2D%20jump%20to%20the%20tag%20under%20cursor"
1611 | },
1612 | {
1613 | "name": "Record Macro a",
1614 | "keywords": [
1615 | "macros",
1616 | "record macro",
1617 | "qa"
1618 | ],
1619 | "command": "qa",
1620 | "description": "Starts recording a macro and saves it in register 'a'.",
1621 | "rtorr_description": "qa%20%2D%20record%20macro%20a"
1622 | },
1623 | {
1624 | "name": "Stop Recording Macro",
1625 | "keywords": [
1626 | "macros",
1627 | "stop recording",
1628 | "q"
1629 | ],
1630 | "command": "q",
1631 | "description": "Stops recording the current macro.",
1632 | "rtorr_description": "q%20%2D%20stop%20recording%20macro"
1633 | },
1634 | {
1635 | "name": "Run Macro a",
1636 | "keywords": [
1637 | "macros",
1638 | "run macro",
1639 | "@a"
1640 | ],
1641 | "command": "@a",
1642 | "description": "Executes the macro stored in register 'a'.",
1643 | "rtorr_description": "%40a%20%2D%20run%20macro%20a"
1644 | },
1645 | {
1646 | "name": "Rerun Last Macro",
1647 | "keywords": [
1648 | "macros",
1649 | "rerun",
1650 | "repeat macro",
1651 | "@@"
1652 | ],
1653 | "command": "@@",
1654 | "description": "Repeats the last executed macro.",
1655 | "rtorr_description": "%40%40%20%2D%20rerun%20last%20run%20macro"
1656 | },
1657 | {
1658 | "name": "Yank (Copy) a Line",
1659 | "keywords": [
1660 | "copy",
1661 | "yank",
1662 | "yy"
1663 | ],
1664 | "command": "yy",
1665 | "description": "Copies the current line into the default register (\").",
1666 | "rtorr_description": "yy%20%2D%20yank%20%28copy%29%20a%20line"
1667 | },
1668 | {
1669 | "name": "Yank (Copy) 2 Lines",
1670 | "keywords": [
1671 | "copy",
1672 | "yank",
1673 | "multiple lines",
1674 | "2yy"
1675 | ],
1676 | "command": "2yy",
1677 | "description": "Copies the current line and the next line into the default register (\").",
1678 | "rtorr_description": "2yy%20%2D%20yank%20%28copy%29%202%20lines"
1679 | },
1680 | {
1681 | "name": "Yank (Copy) Word",
1682 | "keywords": [
1683 | "copy",
1684 | "yank",
1685 | "word",
1686 | "yw"
1687 | ],
1688 | "command": "yw",
1689 | "description": "Copies the characters of the word from the cursor position to the start of the next word into the default register (\").",
1690 | "rtorr_description": "yw%20%2D%20yank%20%28copy%29%20the%20characters%20of%20the%20word%20from%20the%20cursor%20position%20to%20the%20start%20of%20the%20next%20word"
1691 | },
1692 | {
1693 | "name": "Yank (Copy) Word Under Cursor",
1694 | "keywords": [
1695 | "copy",
1696 | "yank",
1697 | "word under cursor",
1698 | "yiw"
1699 | ],
1700 | "command": "yiw",
1701 | "description": "Copies the word under the cursor into the default register (\").",
1702 | "rtorr_description": "yiw%20%2D%20yank%20%28copy%29%20word%20under%20the%20cursor"
1703 | },
1704 | {
1705 | "name": "Yank (Copy) Word with Space",
1706 | "keywords": [
1707 | "copy",
1708 | "yank",
1709 | "word with space",
1710 | "yaw"
1711 | ],
1712 | "command": "yaw",
1713 | "description": "Copies the word under the cursor and the space after or before it into the default register (\").",
1714 | "rtorr_description": "yaw%20%2D%20yank%20%28copy%29%20word%20under%20the%20cursor%20and%20the%20space%20after%20or%20before%20it"
1715 | },
1716 | {
1717 | "name": "Yank (Copy) to End of Line",
1718 | "keywords": [
1719 | "copy",
1720 | "yank",
1721 | "end of line",
1722 | "y$",
1723 | "Y"
1724 | ],
1725 | "command": "y$ or Y",
1726 | "description": "Copies the characters from the cursor position to the end of the line into the default register (\").",
1727 | "rtorr_description": "y%24%20%20or%20%20Y%20%2D%20yank%20%28copy%29%20to%20end%20of%20line"
1728 | },
1729 | {
1730 | "name": "Put (Paste) After Cursor",
1731 | "keywords": [
1732 | "paste",
1733 | "put",
1734 | "p"
1735 | ],
1736 | "command": "p",
1737 | "description": "Pastes the contents of the default register (\") after the cursor.",
1738 | "rtorr_description": "p%20%2D%20put%20%28paste%29%20the%20clipboard%20after%20cursor"
1739 | },
1740 | {
1741 | "name": "Put (Paste) Before Cursor",
1742 | "keywords": [
1743 | "paste",
1744 | "put",
1745 | "P"
1746 | ],
1747 | "command": "P",
1748 | "description": "Pastes the contents of the default register (\") before the cursor.",
1749 | "rtorr_description": "P%20%2D%20put%20%28paste%29%20before%20cursor"
1750 | },
1751 | {
1752 | "name": "Put (Paste) After Cursor and Move",
1753 | "keywords": [
1754 | "paste",
1755 | "put",
1756 | "move cursor",
1757 | "gp"
1758 | ],
1759 | "command": "gp",
1760 | "description": "Pastes the contents of the default register (\") after the cursor and leaves the cursor after the new text.",
1761 | "rtorr_description": "gp%20%2D%20put%20%28paste%29%20the%20clipboard%20after%20cursor%20and%20leave%20cursor%20after%20the%20new%20text"
1762 | },
1763 | {
1764 | "name": "Put (Paste) Before Cursor and Move",
1765 | "keywords": [
1766 | "paste",
1767 | "put",
1768 | "move cursor",
1769 | "gP"
1770 | ],
1771 | "command": "gP",
1772 | "description": "Pastes the contents of the default register (\") before the cursor and leaves the cursor after the new text.",
1773 | "rtorr_description": "gP%20%2D%20put%20%28paste%29%20before%20cursor%20and%20leave%20cursor%20after%20the%20new%20text"
1774 | },
1775 | {
1776 | "name": "Delete (Cut) a Line",
1777 | "keywords": [
1778 | "cut",
1779 | "delete",
1780 | "dd"
1781 | ],
1782 | "command": "dd",
1783 | "description": "Deletes the current line and places it in the default register (\").",
1784 | "rtorr_description": "dd%20%2D%20delete%20%28cut%29%20a%20line"
1785 | },
1786 | {
1787 | "name": "Delete (Cut) 2 Lines",
1788 | "keywords": [
1789 | "cut",
1790 | "delete",
1791 | "multiple lines",
1792 | "2dd"
1793 | ],
1794 | "command": "2dd",
1795 | "description": "Deletes the current line and the next line and places them in the default register (\").",
1796 | "rtorr_description": "2dd%20%2D%20delete%20%28cut%29%202%20lines"
1797 | },
1798 | {
1799 | "name": "Delete (Cut) Word",
1800 | "keywords": [
1801 | "cut",
1802 | "delete",
1803 | "word",
1804 | "dw"
1805 | ],
1806 | "command": "dw",
1807 | "description": "Deletes the characters of the word from the cursor position to the start of the next word and places them in the default register (\").",
1808 | "rtorr_description": "dw%20%2D%20delete%20%28cut%29%20the%20characters%20of%20the%20word%20from%20the%20cursor%20position%20to%20the%20start%20of%20the%20next%20word"
1809 | },
1810 | {
1811 | "name": "Delete (Cut) Word Under Cursor",
1812 | "keywords": [
1813 | "cut",
1814 | "delete",
1815 | "word under cursor",
1816 | "diw"
1817 | ],
1818 | "command": "diw",
1819 | "description": "Deletes the word under the cursor and places it in the default register (\").",
1820 | "rtorr_description": "diw%20%2D%20delete%20%28cut%29%20word%20under%20the%20cursor"
1821 | },
1822 | {
1823 | "name": "Delete (Cut) Word with Space",
1824 | "keywords": [
1825 | "cut",
1826 | "delete",
1827 | "word with space",
1828 | "daw"
1829 | ],
1830 | "command": "daw",
1831 | "description": "Deletes the word under the cursor and the space after or before it and places it in the default register (\").",
1832 | "rtorr_description": "daw%20%2D%20delete%20%28cut%29%20word%20under%20the%20cursor%20and%20the%20space%20after%20or%20before%20it"
1833 | },
1834 | {
1835 | "name": "Delete Lines From 3 to 5",
1836 | "keywords": [
1837 | "delete",
1838 | "multiple lines",
1839 | ":3,5d"
1840 | ],
1841 | "command": ":3,5d",
1842 | "description": "Deletes lines 3 through 5.",
1843 | "rtorr_description": "%3A3%2C5d%20%2D%20delete%20lines%20starting%20from%203%20to%205"
1844 | },
1845 | {
1846 | "name": "Delete to End of Line",
1847 | "keywords": [
1848 | "cut",
1849 | "delete",
1850 | "end of line",
1851 | "d$",
1852 | "D"
1853 | ],
1854 | "command": "d$ or D",
1855 | "description": "Deletes the characters from the cursor position to the end of the line and places them in the default register (\").",
1856 | "rtorr_description": "d%24%20%20or%20%20D%20%2D%20delete%20%28cut%29%20to%20the%20end%20of%20the%20line"
1857 | },
1858 | {
1859 | "name": "Delete Character",
1860 | "keywords": [
1861 | "cut",
1862 | "delete",
1863 | "character",
1864 | "x"
1865 | ],
1866 | "command": "x",
1867 | "description": "Deletes the character under the cursor and places it in the default register (\").",
1868 | "rtorr_description": "x%20%2D%20delete%20%28cut%29%20character"
1869 | },
1870 | {
1871 | "name": "Indent Line",
1872 | "keywords": [
1873 | "indent",
1874 | ">>"
1875 | ],
1876 | "command": ">>",
1877 | "description": "Indents the current line one shiftwidth to the right.",
1878 | "rtorr_description": "%3E%3E%20%2D%20indent%20%28move%20right%29%20line%20one%20shiftwidth"
1879 | },
1880 | {
1881 | "name": "De-indent Line",
1882 | "keywords": [
1883 | "de-indent",
1884 | "<<"
1885 | ],
1886 | "command": "<<",
1887 | "description": "De-indents the current line one shiftwidth to the left.",
1888 | "rtorr_description": "%3C%3C%20%2D%20de-indent%20%28move%20left%29%20line%20one%20shiftwidth"
1889 | },
1890 | {
1891 | "name": "Indent Block",
1892 | "keywords": [
1893 | "indent",
1894 | "block",
1895 | "() {}",
1896 | ">%"
1897 | ],
1898 | "command": ">%",
1899 | "description": "Indents a block enclosed by parentheses () or curly brackets {}, with the cursor positioned on the opening or closing brace.",
1900 | "rtorr_description": "%3E%25%20%2D%20indent%20a%20block%20with%20%28%29%20or%20%7B%7D%20%28cursor%20on%20brace%29"
1901 | },
1902 | {
1903 | "name": "De-indent Block",
1904 | "keywords": [
1905 | "de-indent",
1906 | "block",
1907 | "() {}",
1908 | "<%"
1909 | ],
1910 | "command": "<%",
1911 | "description": "De-indents a block enclosed by parentheses () or curly brackets {}, with the cursor positioned on the opening or closing brace.",
1912 | "rtorr_description": "%3C%25%20%2D%20de-indent%20a%20block%20with%20%28%29%20or%20%7B%7D%20%28cursor%20on%20brace%29"
1913 | },
1914 | {
1915 | "name": "Indent Inner Block with ()",
1916 | "keywords": [
1917 | "indent",
1918 | "inner block",
1919 | "()",
1920 | ">ib"
1921 | ],
1922 | "command": ">ib",
1923 | "description": "Indents the inner block enclosed by parentheses ().",
1924 | "rtorr_description": "%3Eib%20%2D%20indent%20inner%20block%20with%20%28%29"
1925 | },
1926 | {
1927 | "name": "Indent Block with <> Tags",
1928 | "keywords": [
1929 | "indent",
1930 | "block",
1931 | "tags",
1932 | "<>",
1933 | ">at"
1934 | ],
1935 | "command": ">at",
1936 | "description": "Indents a block enclosed by angle brackets <> (tags).",
1937 | "rtorr_description": "%3Eat%20%2D%20indent%20a%20block%20with%20%3C%3E%20tags"
1938 | },
1939 | {
1940 | "name": "Re-indent 3 Lines",
1941 | "keywords": [
1942 | "re-indent",
1943 | "multiple lines",
1944 | "3=="
1945 | ],
1946 | "command": "3==",
1947 | "description": "Re-indents the current line and the two lines below it.",
1948 | "rtorr_description": "3%3D%3D%20%2D%20re-indent%203%20lines"
1949 | },
1950 | {
1951 | "name": "Re-indent Block",
1952 | "keywords": [
1953 | "re-indent",
1954 | "block",
1955 | "() {}",
1956 | "=%"
1957 | ],
1958 | "command": "=%",
1959 | "description": "Re-indents a block enclosed by parentheses () or curly brackets {}, with the cursor positioned on the opening or closing brace.",
1960 | "rtorr_description": "%3D%25%20%2D%20re-indent%20a%20block%20with%20%28%29%20or%20%7B%7D%20%28cursor%20on%20brace%29"
1961 | },
1962 | {
1963 | "name": "Re-indent Inner Block with {}",
1964 | "keywords": [
1965 | "re-indent",
1966 | "inner block",
1967 | "{}",
1968 | "=iB"
1969 | ],
1970 | "command": "=iB",
1971 | "description": "Re-indents the inner block enclosed by curly brackets {}.",
1972 | "rtorr_description": "%3DiB%20%2D%20re-indent%20inner%20block%20with%20%7B%7D"
1973 | },
1974 | {
1975 | "name": "Re-indent Entire Buffer",
1976 | "keywords": [
1977 | "re-indent",
1978 | "entire file",
1979 | "gg=G"
1980 | ],
1981 | "command": "gg=G",
1982 | "description": "Re-indents the entire buffer (all lines in the current file).",
1983 | "rtorr_description": "gg%3DG%20%2D%20re-indent%20entire%20buffer"
1984 | },
1985 | {
1986 | "name": "Paste and Adjust Indent",
1987 | "keywords": [
1988 | "paste",
1989 | "adjust indent",
1990 | "]p"
1991 | ],
1992 | "command": "]p",
1993 | "description": "Pastes the contents of the default register (\") and adjusts the indentation to match the current line.",
1994 | "rtorr_description": "%5Dp%20%2D%20paste%20and%20adjust%20indent%20to%20current%20line"
1995 | },
1996 | {
1997 | "name": "Write File",
1998 | "keywords": [
1999 | "save",
2000 | "write",
2001 | ":w"
2002 | ],
2003 | "command": ":w",
2004 | "description": "Saves the current file without exiting Vim.",
2005 | "rtorr_description": "%3Aw%20%2D%20write%20%28save%29%20the%20file%2C%20but%20don%27t%20exit"
2006 | },
2007 | {
2008 | "name": "Write File with Sudo",
2009 | "keywords": [
2010 | "save",
2011 | "write",
2012 | "sudo",
2013 | ":w !sudo tee %"
2014 | ],
2015 | "command": ":w !sudo tee %",
2016 | "description": "Saves the current file using sudo (superuser privileges). This is useful when you don't have write permissions to the file.",
2017 | "rtorr_description": "%3Aw%20%21sudo%20tee%20%25%20%2D%20write%20out%20the%20current%20file%20using%20sudo"
2018 | },
2019 | {
2020 | "name": "Write and Quit",
2021 | "keywords": [
2022 | "save",
2023 | "write",
2024 | "quit",
2025 | "exit",
2026 | ":wq",
2027 | ":x",
2028 | "ZZ"
2029 | ],
2030 | "command": ":wq or :x or ZZ",
2031 | "description": "Saves the current file and exits Vim.",
2032 | "rtorr_description": "%3Awq%20%20or%20%20%3Ax%20%20or%20%20ZZ%20%2D%20write%20%28save%29%20and%20quit"
2033 | },
2034 | {
2035 | "name": "Quit",
2036 | "keywords": [
2037 | "quit",
2038 | "exit",
2039 | ":q"
2040 | ],
2041 | "command": ":q",
2042 | "description": "Exits Vim. Fails if there are unsaved changes.",
2043 | "rtorr_description": "%3Aq%20%2D%20quit%20%28fails%20if%20there%20are%20unsaved%20changes%29"
2044 | },
2045 | {
2046 | "name": "Force Quit",
2047 | "keywords": [
2048 | "quit",
2049 | "exit",
2050 | "force",
2051 | "discard changes",
2052 | ":q!",
2053 | "ZQ"
2054 | ],
2055 | "command": ":q! or ZQ",
2056 | "description": "Exits Vim and discards any unsaved changes.",
2057 | "rtorr_description": "%3Aq%21%20%20or%20%20ZQ%20%2D%20quit%20and%20throw%20away%20unsaved%20changes"
2058 | },
2059 | {
2060 | "name": "Write and Quit All Tabs",
2061 | "keywords": [
2062 | "save",
2063 | "write",
2064 | "quit",
2065 | "exit",
2066 | "all tabs",
2067 | ":wqa"
2068 | ],
2069 | "command": ":wqa",
2070 | "description": "Saves all open files and exits Vim.",
2071 | "rtorr_description": "%3Awqa%20%2D%20write%20%28save%29%20and%20quit%20on%20all%20tabs"
2072 | },
2073 | {
2074 | "name": "Search for Pattern",
2075 | "keywords": [
2076 | "search",
2077 | "pattern",
2078 | "/"
2079 | ],
2080 | "command": "/pattern",
2081 | "description": "Searches forward for the specified pattern.",
2082 | "rtorr_description": "/pattern%20%2D%20search%20for%20pattern"
2083 | },
2084 | {
2085 | "name": "Search Backward for Pattern",
2086 | "keywords": [
2087 | "search",
2088 | "backward",
2089 | "pattern",
2090 | "?"
2091 | ],
2092 | "command": "?pattern",
2093 | "description": "Searches backward for the specified pattern.",
2094 | "rtorr_description": "%3Fpattern%20%2D%20search%20backward%20for%20pattern"
2095 | },
2096 | {
2097 | "name": "Very Magic Search",
2098 | "keywords": [
2099 | "search",
2100 | "very magic",
2101 | "regex",
2102 | "\\v"
2103 | ],
2104 | "command": "\\vpattern",
2105 | "description": "Searches for the specified pattern using 'very magic' mode, where non-alphanumeric characters are interpreted as special regex symbols without escaping.",
2106 | "rtorr_description": "%5Cvpattern%20%2D%20%27very%20magic%27%20pattern%3A%20non-alphanumeric%20characters%20are%20interpreted%20as%20special%20regex%20symbols%20%28no%20escaping%20needed%29"
2107 | },
2108 | {
2109 | "name": "Repeat Search Forward",
2110 | "keywords": [
2111 | "search",
2112 | "repeat",
2113 | "forward",
2114 | "n"
2115 | ],
2116 | "command": "n",
2117 | "description": "Repeats the last search in the same direction (forward).",
2118 | "rtorr_description": "n%20%2D%20repeat%20search%20in%20same%20direction"
2119 | },
2120 | {
2121 | "name": "Repeat Search Backward",
2122 | "keywords": [
2123 | "search",
2124 | "repeat",
2125 | "backward",
2126 | "N"
2127 | ],
2128 | "command": "N",
2129 | "description": "Repeats the last search in the opposite direction (backward).",
2130 | "rtorr_description": "N%20%2D%20repeat%20search%20in%20opposite%20direction"
2131 | },
2132 | {
2133 | "name": "Global Replace",
2134 | "keywords": [
2135 | "replace",
2136 | "global",
2137 | "all",
2138 | ":%s/old/new/g"
2139 | ],
2140 | "command": ":%s/old/new/g",
2141 | "description": "Replaces all occurrences of 'old' with 'new' throughout the entire file.",
2142 | "rtorr_description": "%3A%25s/old/new/g%20%2D%20replace%20all%20old%20with%20new%20throughout%20file"
2143 | },
2144 | {
2145 | "name": "Global Replace with Confirmation",
2146 | "keywords": [
2147 | "replace",
2148 | "global",
2149 | "all",
2150 | "confirmation",
2151 | ":%s/old/new/gc"
2152 | ],
2153 | "command": ":%s/old/new/gc",
2154 | "description": "Replaces all occurrences of 'old' with 'new' throughout the entire file, prompting for confirmation before each replacement.",
2155 | "rtorr_description": "%3A%25s/old/new/gc%20%2D%20replace%20all%20old%20with%20new%20throughout%20file%20with%20confirmations"
2156 | },
2157 | {
2158 | "name": "Remove Search Highlighting",
2159 | "keywords": [
2160 | "search",
2161 | "highlighting",
2162 | "remove",
2163 | ":noh",
2164 | ":nohlsearch"
2165 | ],
2166 | "command": ":noh[lsearch]",
2167 | "description": "Removes the highlighting of search matches.",
2168 | "rtorr_description": "%3Anoh%5Blsearch%5D%20%2D%20remove%20highlighting%20of%20search%20matches"
2169 | },
2170 | {
2171 | "name": "vim[grep]",
2172 | "keywords": [
2173 | "search multiple files",
2174 | "grep",
2175 | "find in files",
2176 | "vimgrep"
2177 | ],
2178 | "command": ":vim[grep] /pattern/ {`{file}`}",
2179 | "description": "Searches for a given pattern in multiple files.",
2180 | "rtorr_description": "%3Avim%5Bgrep%5D%20/pattern/%20%7B%60%7Bfile%7D%60%7D%20%2D%20search%20for%20pattern%20in%20multiple%20files%20%0Ae.g.%20%20%3Avim%5Bgrep%5D%20/foo/%20%2A%2A/%2A"
2181 | },
2182 | {
2183 | "name": "cn[ext]",
2184 | "keywords": [
2185 | "next match",
2186 | "search navigation",
2187 | "cn",
2188 | "cnext"
2189 | ],
2190 | "command": ":cn[ext]",
2191 | "description": "Jumps to the next match from a previous search.",
2192 | "rtorr_description": "%3Acn%5Bext%5D%20%2D%20jump%20to%20the%20next%20match"
2193 | },
2194 | {
2195 | "name": "cp[revious]",
2196 | "keywords": [
2197 | "previous match",
2198 | "search navigation",
2199 | "cp",
2200 | "cprevious"
2201 | ],
2202 | "command": ":cp[revious]",
2203 | "description": "Jumps to the previous match from a previous search.",
2204 | "rtorr_description": "%3Acp%5Brevious%5D%20%2D%20jump%20to%20the%20previous%20match"
2205 | },
2206 | {
2207 | "name": "cope[n]",
2208 | "keywords": [
2209 | "open matches list",
2210 | "quickfix",
2211 | "search results",
2212 | "cope",
2213 | "copen"
2214 | ],
2215 | "command": ":cope[n]",
2216 | "description": "Opens a window that displays a list of matches from the previous search.",
2217 | "rtorr_description": "%3Acope%5Bn%5D%20%2D%20open%20a%20window%20containing%20the%20list%20of%20matches"
2218 | },
2219 | {
2220 | "name": "ccl[ose]",
2221 | "keywords": [
2222 | "close quickfix",
2223 | "close matches list",
2224 | "ccl",
2225 | "cclose"
2226 | ],
2227 | "command": ":ccl[ose]",
2228 | "description": "Closes the quickfix window, which contains the list of search results.",
2229 | "rtorr_description": "%3Accl%5Bose%5D%20%2D%20close%20the%20quickfix%20window"
2230 | },
2231 | {
2232 | "name": "tabnew",
2233 | "keywords": [
2234 | "new tab",
2235 | "open file in tab",
2236 | "tabnew"
2237 | ],
2238 | "command": ":tabnew or :tabnew {page.words.file}",
2239 | "description": "Opens a new tab, optionally with a specified file.",
2240 | "rtorr_description": "%3Atabnew%20%20or%20%20%3Atabnew%20%7Bpage.words.file%7D%20%2D%20open%20a%20file%20in%20a%20new%20tab"
2241 | },
2242 | {
2243 | "name": "Move Split to Tab",
2244 | "keywords": [
2245 | "move split to tab",
2246 | "split window",
2247 | "new tab from split",
2248 | "ctrl+wt"
2249 | ],
2250 | "command": "Ctrl + wT",
2251 | "description": "Moves the currently active split window into its own new tab.",
2252 | "rtorr_description": "Ctrl%20%20%2B%20%20wT%20%2D%20move%20the%20current%20split%20window%20into%20its%20own%20tab"
2253 | },
2254 | {
2255 | "name": "gt / :tabn[ext]",
2256 | "keywords": [
2257 | "next tab",
2258 | "tab navigation",
2259 | "gt",
2260 | "tabnext"
2261 | ],
2262 | "command": "gt or :tabn[ext]",
2263 | "description": "Navigates to the next tab.",
2264 | "rtorr_description": "gt%20%20or%20%20%3Atabn%5Bext%5D%20%2D%20move%20to%20the%20next%20tab"
2265 | },
2266 | {
2267 | "name": "gT / :tabp[revious]",
2268 | "keywords": [
2269 | "previous tab",
2270 | "tab navigation",
2271 | "gt",
2272 | "tabprevious"
2273 | ],
2274 | "command": "gT or :tabp[revious]",
2275 | "description": "Navigates to the previous tab.",
2276 | "rtorr_description": "gT%20%20or%20%20%3Atabp%5Brevious%5D%20%2D%20move%20to%20the%20previous%20tab"
2277 | },
2278 | {
2279 | "name": "Go to Tab Number",
2280 | "keywords": [
2281 | "go to tab number",
2282 | "tab navigation",
2283 | "specific tab"
2284 | ],
2285 | "command": "#gt",
2286 | "description": "Moves to the tab specified by the number #.",
2287 | "rtorr_description": "%23gt%20%2D%20move%20to%20tab%20number%20%23"
2288 | },
2289 | {
2290 | "name": ":tabm[ove]",
2291 | "keywords": [
2292 | "move tab",
2293 | "reorder tabs",
2294 | "tabm",
2295 | "tabmove"
2296 | ],
2297 | "command": ":tabm[ove] #",
2298 | "description": "Moves the current tab to the position specified by the number # (indexed from 0).",
2299 | "rtorr_description": "%3Atabm%5Bove%5D%20%23%20%2D%20move%20current%20tab%20to%20the%20%23th%20position%20%28indexed%20from%200%29"
2300 | },
2301 | {
2302 | "name": ":tabc[lose]",
2303 | "keywords": [
2304 | "close tab",
2305 | "close current tab",
2306 | "tabc",
2307 | "tabclose"
2308 | ],
2309 | "command": ":tabc[lose]",
2310 | "description": "Closes the current tab and all its associated windows.",
2311 | "rtorr_description": "%3Atabc%5Blose%5D%20%2D%20close%20the%20current%20tab%20and%20all%20its%20windows"
2312 | },
2313 | {
2314 | "name": ":tabo[nly]",
2315 | "keywords": [
2316 | "close other tabs",
2317 | "keep current tab",
2318 | "tabo",
2319 | "tabonly"
2320 | ],
2321 | "command": ":tabo[nly]",
2322 | "description": "Closes all tabs except the currently active tab.",
2323 | "rtorr_description": "%3Atabo%5Bnly%5D%20%2D%20close%20all%20tabs%20except%20for%20the%20current%20one"
2324 | },
2325 | {
2326 | "name": ":tabdo",
2327 | "keywords": [
2328 | "execute command on all tabs",
2329 | "tabdo",
2330 | "multiple tabs"
2331 | ],
2332 | "command": ":tabdo command",
2333 | "description": "Runs the specified command on all open tabs.",
2334 | "rtorr_description": "%3Atabdo%20%20command%2D%20run%20the%20%20command%20%20on%20all%20tabs%20%28e.g.%20%20%3Atabdo%20q%20%2D%20closes%20all%20opened%20tabs%29"
2335 | },
2336 | {
2337 | "name": ":e[dit]",
2338 | "keywords": [
2339 | "edit file",
2340 | "open file in buffer",
2341 | "e",
2342 | "edit"
2343 | ],
2344 | "command": ":e[dit] file",
2345 | "description": "Opens a specified file for editing in a new buffer.",
2346 | "rtorr_description": "%3Ae%5Bdit%5D%20file%20%2D%20edit%20a%20file%20in%20a%20new%20buffer"
2347 | },
2348 | {
2349 | "name": ":bn[ext]",
2350 | "keywords": [
2351 | "next buffer",
2352 | "buffer navigation",
2353 | "bn",
2354 | "bnext"
2355 | ],
2356 | "command": ":bn[ext]",
2357 | "description": "Switches to the next buffer.",
2358 | "rtorr_description": "%3Abn%5Bext%5D%20%2D%20go%20to%20the%20next%20buffer"
2359 | },
2360 | {
2361 | "name": ":bp[revious]",
2362 | "keywords": [
2363 | "previous buffer",
2364 | "buffer navigation",
2365 | "bp",
2366 | "bprevious"
2367 | ],
2368 | "command": ":bp[revious]",
2369 | "description": "Switches to the previous buffer.",
2370 | "rtorr_description": "%3Abp%5Brevious%5D%20%2D%20go%20to%20the%20previous%20buffer"
2371 | },
2372 | {
2373 | "name": ":bd[elete]",
2374 | "keywords": [
2375 | "delete buffer",
2376 | "close file",
2377 | "bd",
2378 | "bdelete"
2379 | ],
2380 | "command": ":bd[elete]",
2381 | "description": "Deletes a specified buffer, which effectively closes the associated file.",
2382 | "rtorr_description": "%3Abd%5Belete%5D%20%2D%20delete%20a%20buffer%20%28close%20a%20file%29"
2383 | },
2384 | {
2385 | "name": ":b[uffer] #",
2386 | "keywords": [
2387 | "go to buffer by index",
2388 | "buffer number",
2389 | "buffer navigation"
2390 | ],
2391 | "command": ":b[uffer]#",
2392 | "description": "Switches to the buffer identified by its index number.",
2393 | "rtorr_description": "%3Ab%5Buffer%5D%23%20%2D%20go%20to%20a%20buffer%20by%20index%20%23"
2394 | },
2395 | {
2396 | "name": ":b[uffer] file",
2397 | "keywords": [
2398 | "go to buffer by file",
2399 | "buffer name",
2400 | "buffer navigation"
2401 | ],
2402 | "command": ":b[uffer] file",
2403 | "description": "Switches to the buffer associated with the specified file name.",
2404 | "rtorr_description": "%3Ab%5Buffer%5D%20file%20%2D%20go%20to%20a%20buffer%20by%20file"
2405 | },
2406 | {
2407 | "name": ":ls / :buffers",
2408 | "keywords": [
2409 | "list buffers",
2410 | "open buffers",
2411 | "ls",
2412 | "buffers"
2413 | ],
2414 | "command": ":ls or :buffers",
2415 | "description": "Displays a list of all currently open buffers.",
2416 | "rtorr_description": "%3Als%20%20or%20%20%3Abuffers%20%2D%20list%20all%20open%20buffers"
2417 | },
2418 | {
2419 | "name": ":sp[lit]",
2420 | "keywords": [
2421 | "split window",
2422 | "open file in split",
2423 | "sp",
2424 | "split"
2425 | ],
2426 | "command": ":sp[lit] file",
2427 | "description": "Opens a specified file in a new buffer and splits the window horizontally to display it.",
2428 | "rtorr_description": "%3Asp%5Blit%5D%20file%20%2D%20open%20a%20file%20in%20a%20new%20buffer%20and%20split%20window"
2429 | },
2430 | {
2431 | "name": ":vs[plit]",
2432 | "keywords": [
2433 | "vertical split",
2434 | "open file in vertical split",
2435 | "vs",
2436 | "vsplit"
2437 | ],
2438 | "command": ":vs[plit] file",
2439 | "description": "Opens a specified file in a new buffer and splits the window vertically to display it.",
2440 | "rtorr_description": "%3Avs%5Bplit%5D%20file%20%2D%20open%20a%20file%20in%20a%20new%20buffer%20and%20vertically%20split%20window"
2441 | },
2442 | {
2443 | "name": ":vert[ical] ba[ll]",
2444 | "keywords": [
2445 | "vertical windows",
2446 | "all buffers vertical",
2447 | "vert ball",
2448 | "vertical ball"
2449 | ],
2450 | "command": ":vert[ical] ba[ll]",
2451 | "description": "Arranges all open buffers as vertical windows.",
2452 | "rtorr_description": "%3Avert%5Bical%5D%20ba%5Bll%5D%20%2D%20edit%20all%20buffers%20as%20vertical%20windows"
2453 | },
2454 | {
2455 | "name": ":tab ba[ll]",
2456 | "keywords": [
2457 | "all buffers as tabs",
2458 | "tab ball"
2459 | ],
2460 | "command": ":tab ba[ll]",
2461 | "description": "Opens all open buffers in separate tabs.",
2462 | "rtorr_description": "%3Atab%20ba%5Bll%5D%20%2D%20edit%20all%20buffers%20as%20tabs"
2463 | },
2464 | {
2465 | "name": "Split Window",
2466 | "keywords": [
2467 | "split window",
2468 | "horizontal split",
2469 | "ctrl+ws"
2470 | ],
2471 | "command": "Ctrl + ws",
2472 | "description": "Splits the current window horizontally, creating a new split.",
2473 | "rtorr_description": "Ctrl%20%20%2B%20%20ws%20%2D%20split%20window"
2474 | },
2475 | {
2476 | "name": "Split Window Vertically",
2477 | "keywords": [
2478 | "vertical split",
2479 | "split window vertically",
2480 | "ctrl+wv"
2481 | ],
2482 | "command": "Ctrl + wv",
2483 | "description": "Splits the current window vertically, creating a new split.",
2484 | "rtorr_description": "Ctrl%20%20%2B%20%20wv%20%2D%20split%20window%20vertically"
2485 | },
2486 | {
2487 | "name": "Switch Windows",
2488 | "keywords": [
2489 | "switch windows",
2490 | "navigate splits",
2491 | "ctrl+ww"
2492 | ],
2493 | "command": "Ctrl + ww",
2494 | "description": "Switches the focus to the next window within the current split arrangement.",
2495 | "rtorr_description": "Ctrl%20%20%2B%20%20ww%20%2D%20switch%20windows"
2496 | },
2497 | {
2498 | "name": "Quit Window",
2499 | "keywords": [
2500 | "close window",
2501 | "quit split",
2502 | "ctrl+wq"
2503 | ],
2504 | "command": "Ctrl + wq",
2505 | "description": "Closes the currently active window within a split arrangement.",
2506 | "rtorr_description": "Ctrl%20%20%2B%20%20wq%20%2D%20quit%20a%20window"
2507 | },
2508 | {
2509 | "name": "Exchange Windows",
2510 | "keywords": [
2511 | "exchange windows",
2512 | "swap splits",
2513 | "ctrl+wx"
2514 | ],
2515 | "command": "Ctrl + wx",
2516 | "description": "Exchanges the position of the current window with the next one in the split arrangement.",
2517 | "rtorr_description": "Ctrl%20%20%2B%20%20wx%20%2D%20exchange%20current%20window%20with%20next%20one"
2518 | },
2519 | {
2520 | "name": "Equalize Window Sizes",
2521 | "keywords": [
2522 | "equalize window sizes",
2523 | "resize windows",
2524 | "ctrl+w="
2525 | ],
2526 | "command": "Ctrl + w=",
2527 | "description": "Resizes all windows in the current split arrangement to have equal height and width.",
2528 | "rtorr_description": "Ctrl%20%20%2B%20%20w%3D%20%2D%20make%20all%20windows%20equal%20height%20%26%20width"
2529 | },
2530 | {
2531 | "name": "Move to Left Window",
2532 | "keywords": [
2533 | "move to left window",
2534 | "vertical split navigation",
2535 | "ctrl+wh"
2536 | ],
2537 | "command": "Ctrl + wh",
2538 | "description": "Moves the cursor to the window located to the left in a vertical split arrangement.",
2539 | "rtorr_description": "Ctrl%20%20%2B%20%20wh%20%2D%20move%20cursor%20to%20the%20left%20window%20%28vertical%20split%29"
2540 | },
2541 | {
2542 | "name": "Move to Right Window",
2543 | "keywords": [
2544 | "move to right window",
2545 | "vertical split navigation",
2546 | "ctrl+wl"
2547 | ],
2548 | "command": "Ctrl + wl",
2549 | "description": "Moves the cursor to the window located to the right in a vertical split arrangement.",
2550 | "rtorr_description": "Ctrl%20%20%2B%20%20wl%20%2D%20move%20cursor%20to%20the%20right%20window%20%28vertical%20split%29"
2551 | },
2552 | {
2553 | "name": "Move to Window Below",
2554 | "keywords": [
2555 | "move to window below",
2556 | "horizontal split navigation",
2557 | "ctrl+wj"
2558 | ],
2559 | "command": "Ctrl + wj",
2560 | "description": "Moves the cursor to the window located below in a horizontal split arrangement.",
2561 | "rtorr_description": "Ctrl%20%20%2B%20%20wj%20%2D%20move%20cursor%20to%20the%20window%20below%20%28horizontal%20split%29"
2562 | },
2563 | {
2564 | "name": "Move to Window Above",
2565 | "keywords": [
2566 | "move to window above",
2567 | "horizontal split navigation",
2568 | "ctrl+wk"
2569 | ],
2570 | "command": "Ctrl + wk",
2571 | "description": "Moves the cursor to the window located above in a horizontal split arrangement.",
2572 | "rtorr_description": "Ctrl%20%20%2B%20%20wk%20%2D%20move%20cursor%20to%20the%20window%20above%20%28horizontal%20split%29"
2573 | },
2574 | {
2575 | "name": "Maximize Window Height (Left)",
2576 | "keywords": [
2577 | "maximize window height",
2578 | "full height window",
2579 | "leftmost window",
2580 | "ctrl+wh"
2581 | ],
2582 | "command": "Ctrl + wH",
2583 | "description": "Makes the current window occupy the full height of the screen and positions it as the leftmost window in a vertical split arrangement.",
2584 | "rtorr_description": "Ctrl%20%20%2B%20%20wH%20%2D%20make%20current%20window%20full%20height%20at%20far%20left%20%28leftmost%20vertical%20window%29"
2585 | },
2586 | {
2587 | "name": "Maximize Window Height (Right)",
2588 | "keywords": [
2589 | "maximize window height",
2590 | "full height window",
2591 | "rightmost window",
2592 | "ctrl+wl"
2593 | ],
2594 | "command": "Ctrl + wL",
2595 | "description": "Makes the current window occupy the full height of the screen and positions it as the rightmost window in a vertical split arrangement.",
2596 | "rtorr_description": "Ctrl%20%20%2B%20%20wL%20%2D%20make%20current%20window%20full%20height%20at%20far%20right%20%28rightmost%20vertical%20window%29"
2597 | },
2598 | {
2599 | "name": "Maximize Window Width (Bottom)",
2600 | "keywords": [
2601 | "maximize window width",
2602 | "full width window",
2603 | "bottommost window",
2604 | "ctrl+wj"
2605 | ],
2606 | "command": "Ctrl + wJ",
2607 | "description": "Makes the current window occupy the full width of the screen and positions it as the bottommost window in a horizontal split arrangement.",
2608 | "rtorr_description": "Ctrl%20%20%2B%20%20wJ%20%2D%20make%20current%20window%20full%20width%20at%20the%20very%20bottom%20%28bottommost%20horizontal%20window%29"
2609 | },
2610 | {
2611 | "name": "Maximize Window Width (Top)",
2612 | "keywords": [
2613 | "maximize window width",
2614 | "full width window",
2615 | "topmost window",
2616 | "ctrl+wk"
2617 | ],
2618 | "command": "Ctrl + wK",
2619 | "description": "Makes the current window occupy the full width of the screen and positions it as the topmost window in a horizontal split arrangement.",
2620 | "rtorr_description": "Ctrl%20%20%2B%20%20wK%20%2D%20make%20current%20window%20full%20width%20at%20the%20very%20top%20%28topmost%20horizontal%20window%29"
2621 | },
2622 | {
2623 | "name": "zf",
2624 | "keywords": [
2625 | "create fold",
2626 | "manual fold",
2627 | "fold to motion"
2628 | ],
2629 | "command": "zf",
2630 | "description": "Manually defines a code fold from the current cursor position up to the specified motion.",
2631 | "rtorr_description": "zf%20%2D%20manually%20define%20a%20fold%20up%20to%20motion"
2632 | },
2633 | {
2634 | "name": "zd",
2635 | "keywords": [
2636 | "delete fold",
2637 | "remove fold"
2638 | ],
2639 | "command": "zd",
2640 | "description": "Deletes the code fold located under the cursor.",
2641 | "rtorr_description": "zd%20%2D%20delete%20fold%20under%20the%20cursor"
2642 | },
2643 | {
2644 | "name": "za",
2645 | "keywords": [
2646 | "toggle fold",
2647 | "open/close fold"
2648 | ],
2649 | "command": "za",
2650 | "description": "Toggles the open/closed state of the code fold located under the cursor.",
2651 | "rtorr_description": "za%20%2D%20toggle%20fold%20under%20the%20cursor"
2652 | },
2653 | {
2654 | "name": "zo",
2655 | "keywords": [
2656 | "open fold",
2657 | "expand fold"
2658 | ],
2659 | "command": "zo",
2660 | "description": "Opens (expands) the code fold located under the cursor.",
2661 | "rtorr_description": "zo%20%2D%20open%20fold%20under%20the%20cursor"
2662 | },
2663 | {
2664 | "name": "zc",
2665 | "keywords": [
2666 | "close fold",
2667 | "collapse fold"
2668 | ],
2669 | "command": "zc",
2670 | "description": "Closes (collapses) the code fold located under the cursor.",
2671 | "rtorr_description": "zc%20%2D%20close%20fold%20under%20the%20cursor"
2672 | },
2673 | {
2674 | "name": "zr",
2675 | "keywords": [
2676 | "reduce folds",
2677 | "open folds one level"
2678 | ],
2679 | "command": "zr",
2680 | "description": "Reduces the folding level by one, effectively opening folds at the outermost level.",
2681 | "rtorr_description": "zr%20%2D%20reduce%20%28open%29%20all%20folds%20by%20one%20level"
2682 | },
2683 | {
2684 | "name": "zm",
2685 | "keywords": [
2686 | "fold more",
2687 | "close folds one level"
2688 | ],
2689 | "command": "zm",
2690 | "description": "Increases the folding level by one, effectively closing folds at the current level.",
2691 | "rtorr_description": "zm%20%2D%20fold%20more%20%28close%29%20all%20folds%20by%20one%20level"
2692 | },
2693 | {
2694 | "name": "zi",
2695 | "keywords": [
2696 | "toggle folding",
2697 | "enable/disable folding"
2698 | ],
2699 | "command": "zi",
2700 | "description": "Toggles the folding functionality on or off.",
2701 | "rtorr_description": "zi%20%2D%20toggle%20folding%20functionality"
2702 | },
2703 | {
2704 | "name": "]c",
2705 | "keywords": [
2706 | "next change",
2707 | "jump to change",
2708 | "change navigation"
2709 | ],
2710 | "command": "]c",
2711 | "description": "Jumps to the start of the next change in the document.",
2712 | "rtorr_description": "%5Dc%20%2D%20jump%20to%20start%20of%20next%20change"
2713 | },
2714 | {
2715 | "name": "[c",
2716 | "keywords": [
2717 | "previous change",
2718 | "jump to change",
2719 | "change navigation"
2720 | ],
2721 | "command": "[c",
2722 | "description": "Jumps to the start of the previous change in the document.",
2723 | "rtorr_description": "%5Bc%20%2D%20jump%20to%20start%20of%20previous%20change"
2724 | },
2725 | {
2726 | "name": "do / :diffg[et]",
2727 | "keywords": [
2728 | "get diff",
2729 | "obtain difference",
2730 | "do",
2731 | "diffget"
2732 | ],
2733 | "command": "do or :diffg[et]",
2734 | "description": "Obtains (gets) the difference from another buffer and applies it to the current buffer.",
2735 | "rtorr_description": "do%20%20or%20%20%3Adiffg%5Bet%5D%20%2D%20obtain%20%28get%29%20difference%20%28from%20other%20buffer%29"
2736 | },
2737 | {
2738 | "name": "dp / :diffpu[t]",
2739 | "keywords": [
2740 | "put diff",
2741 | "apply difference",
2742 | "dp",
2743 | "diffput"
2744 | ],
2745 | "command": "dp or :diffpu[t]",
2746 | "description": "Puts (applies) the difference from the current buffer to another buffer.",
2747 | "rtorr_description": "dp%20%20or%20%20%3Adiffpu%5Bt%5D%20%2D%20put%20difference%20%28to%20other%20buffer%29"
2748 | },
2749 | {
2750 | "name": ":diffthis",
2751 | "keywords": [
2752 | "include in diff",
2753 | "diff current window",
2754 | "diffthis"
2755 | ],
2756 | "command": ":diffthis",
2757 | "description": "Marks the current window as part of the diff comparison.",
2758 | "rtorr_description": "%3Adiffthis%20%2D%20make%20current%20window%20part%20of%20diff"
2759 | },
2760 | {
2761 | "name": ":dif[fupdate]",
2762 | "keywords": [
2763 | "update diff",
2764 | "refresh differences",
2765 | "dif",
2766 | "diffupdate"
2767 | ],
2768 | "command": ":dif[fupdate]",
2769 | "description": "Updates the displayed differences between buffers in diff mode.",
2770 | "rtorr_description": "%3Adif%5Bfupdate%5D%20%2D%20update%20differences"
2771 | },
2772 | {
2773 | "name": ":diffo[ff]",
2774 | "keywords": [
2775 | "disable diff",
2776 | "turn off diff mode",
2777 | "diffo",
2778 | "diffoff"
2779 | ],
2780 | "command": ":diffo[ff]",
2781 | "description": "Disables diff mode for the current window.",
2782 | "rtorr_description": "%3Adiffo%5Bff%5D%20%2D%20switch%20off%20diff%20mode%20for%20current%20window"
2783 | }
2784 | ]
--------------------------------------------------------------------------------