-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvtip.lua
More file actions
810 lines (810 loc) · 53.6 KB
/
vtip.lua
File metadata and controls
810 lines (810 loc) · 53.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
-- THESE TIPS ARE EXTRACTED FROM https://vtip.43z.one
-- I HAVE NOT MADE THESE TIPS I JUST EXTRACTED THEM, THE DUE CREDITS GO TO h43z
-- THEIR SITE:
-- https://h.43z.one/
return {
{
"Access the previous result by typing v:old_result in the expression register. For example, <Ctrl>+<R>=v:old_result*2 will double the previous result.",
},
{ 'Access the system clipboard with the "+ register for copying and pasting between Vim and external programs.' },
{ "Add a word to the spell file to mark it as correctly spelled using zg while the cursor is on the word." },
{
"Add custom word lists specific to your project or domain by creating a spell directory in your project and placing the word list file(s) inside it.",
},
{ "Add the c flag (:%s/old/new/gc) to confirm each replacement interactively." },
{ "Add the c flag (:s/old/new/gc) to confirm each replacement on the current line." },
{ "Append @@ to repeat the last macro replayed. It saves you from typing the register name explicitly." },
{
"Append a number to some commands to specify the number of times the command should be repeated. For example, :3delete deletes three lines.",
},
{ "Append a number to u (e.g., 3u) to undo multiple changes at once." },
{
"Assign a macro to a specific key mapping in your .vimrc file for easy access. For example, map <F2> @a maps the macro in register a to the F2 key.",
},
{
"Assign the result to a variable by using the let command. For example, <Ctrl>+<R>=let @a = 3*3 will store the result of 3*3 in register a.",
},
{
"Avoid excessive reliance on external commands or shell escapes within Vim. Explore Vim's built-in functionality and plugins to achieve the desired tasks.",
},
{
'Avoid excessive use of the "Ctrl + [key]" combinations for movement or operation. Utilize Vim\'s built-in motion commands or mappings for better efficiency.',
},
{
'Avoid excessive use of the "u" command to undo changes. Utilize Vim\'s fine-grained undo system and the "g-" command to undo changes more selectively.',
},
{ "Avoid excessive use of the arrow keys in normal mode. Instead, utilize Vim's motion commands." },
{ "Avoid long and complex regular expressions that can lead to slow search or substitution operations." },
{
'Avoid manually indenting or aligning code. Utilize Vim\'s indentation and formatting features, such as "gg=G" to auto-indent the entire file.',
},
{
"Avoid modifying the original file without caution. Consider making a backup or working on a copy to prevent accidental data loss.",
},
{
"Avoid neglecting backups and version control. Regularly save and backup your files and utilize version control systems for better file management.",
},
{
"Avoid neglecting to regularly update and maintain your Vim setup. Stay up to date with the latest Vim releases and plugin updates for improved performance and new features.",
},
{
"Avoid overly complex mappings or keybindings. Keep your mappings concise and intuitive for better productivity.",
},
{
"Avoid relying solely on the default colorscheme. Customize your Vim colorscheme to improve readability and enhance your editing experience.",
},
{
"Avoid relying solely on the mouse for editing tasks. Embrace Vim's keyboard-centric approach and leverage its powerful command-line capabilities.",
},
{
"Avoid repeatedly switching between insert mode and normal mode. Make use of Vim's powerful editing capabilities in normal mode.",
},
{
"Avoid using a large number of plugins and configurations that can slow down Vim's startup time and performance.",
},
{
"Avoid using absolute line numbers in commands whenever possible. Utilize relative line numbers or visual selections for better flexibility.",
},
{
"Avoid using excessive horizontal scrolling. Adjust Vim's settings or utilize split windows to view multiple parts of the file simultaneously.",
},
{
"Avoid using long, single-line commands. Instead, break them down into smaller, more manageable commands for better readability and maintainability.",
},
{
"Avoid using repetitive commands manually. Utilize Vim's macros or command repetition features to automate repetitive tasks.",
},
{
'Avoid using the "hjkl" keys exclusively for movement. Explore other motion commands for more efficient navigation.',
},
{
"Avoid using visual mode for simple operations that can be accomplished with more efficient commands in normal mode.",
},
{
"Change the spelling language by running :set spelllang=<language> in normal mode, replacing <language> with the desired language code (e.g., en, de, fr).",
},
{
'Combine calculations with other Vim commands to perform dynamic text transformations. For example, :s/foo/<Ctrl>+<R>=2+2/g will replace "foo" with the result of the expression 2+2.',
},
{
"Combine changes with counts to repeat them a specific number of times. For instance, 3dd deletes three lines, and 2yw yanks two words.",
},
{
"Combine commands with motion commands to apply changes to specific text ranges. For example, d2w deletes the next two words, and c3j changes three lines downward.",
},
{
"Combine macros with other Vim commands and motions to perform complex, repetitive tasks efficiently. You can even nest macros within macros to achieve more advanced automation.",
},
{ "Combine motions with a number prefix to repeat the motion. For example, 3j moves the cursor down three lines." },
{
"Combine motions with marks (m) to navigate to specific locations in the file. For example, 'a moves the cursor to the line where mark a was set.",
},
{
"Combine motions with operators like d (delete), c (change), or y (yank) to perform actions on specific text ranges. For example, dw deletes the current word, and c2w changes the next two words.",
},
{
'Combine motions with text objects to target specific ranges of text. For example, ci( changes the contents inside the parentheses, and di" deletes the text within double quotes.',
},
{
'Combine operators like d (delete), c (change), or y (yank) with motions to perform targeted changes. For instance, d/foo deletes from the cursor position to the next occurrence of "foo."',
},
{
"Combine replace mode with other commands to perform advanced text transformations. For example, use c (change) followed by a motion to replace a specific range of text.",
},
{
"Combine replace mode with visual mode to replace a visually selected block of text. Enter replace mode and start typing to replace the selected block with the entered text.",
},
{ "Combine the dot command with other commands to create powerful repetitive editing workflows." },
{
"Configure the complete option to include additional sources for autocompletion. For example, set complete+=i enables searching in included files.",
},
{ 'Copy text to a named register using "ay to yank to register a.' },
{
"Create custom completion mappings in your .vimrc file to trigger specific completion sources or actions. For example, inoremap <F5> <C-x><C-o> maps F5 to trigger omni completion.",
},
{
"Customize autocompletion behavior by setting options like completeopt, which controls the behavior of the popup menu.",
},
{
"Customize the appearance of misspelled words using the spell highlight group. For example, :highlight SpellBad cterm=underline sets an underline style for misspelled words.",
},
{ "Delete a mark by typing 'delm' followed by the lowercase letter." },
{
'Edit a macro by yanking it from one register and pasting it into another. For example, "ayy yanks the macro stored in register a, and "bp pastes it into register b.',
},
{
"Enable autocompletion by adding set complete+=k to your .vimrc file. This activates keyword completion while typing.",
},
{
"Enable spell checking by running the command :set spell in normal mode. This activates spell checking for the current buffer.",
},
{
"Enter replace mode by pressing the R key while in normal mode. This allows you to overwrite existing text directly.",
},
{
"For example, to calculate the result of an arithmetic expression, you can type <Ctrl>+<R>=2+2 and press Enter to get the result 4.",
},
{ "If you accidentally undid too many changes, you can redo them using the :redo command or Ctrl+R." },
{
"In replace mode, pressing any alphanumeric key replaces the character under the cursor and moves the cursor to the right.",
},
{
"In the expression register, you can perform various mathematical operations like addition (+), subtraction (-), multiplication (*), division (/), and more.",
},
{
"Install plugins like YouCompleteMe or coc.nvim to enhance autocompletion capabilities, offering features like language-specific completions and semantic suggestions.",
},
{ "Jump to a mark by typing ' to the lowercase letter of the mark." },
{ "Jump to the beginning of the line containing the mark with ` to the lowercase letter." },
{
"Leverage dictionary completion by adding custom words to Vim's dictionary file. Use set dictionary+=/path/to/dictionary to include additional word sources.",
},
{
"Leverage visual mode to select a range of text visually and then apply changes to the selection. For example, c in visual mode changes the selected text.",
},
{ "List all registers and their contents with the :registers command." },
{ 'Paste text from a named register with "ap to paste from register a.' },
{ "Perform a series of commands to record the desired macro. These can be any Vim commands or motions." },
{
"Prefix a command with ! to execute an external shell command from within Vim. For example, :!ls lists files in the current directory.",
},
{
'Prefix a command with :silent to suppress normal output. For example, :silent w saves the current file without displaying the usual "file written" message.',
},
{ "Press $ to move the cursor to the end of the current line." },
{ "Press + to jump to the first character of the last line in the previously edited file." },
{ "Press . to repeat the last change or action performed in normal mode." },
{ "Press 0 to jump to the position where the last edit was made." },
{ 'Press 100@a to execute the macro stored in register "a" 100 times.' },
{ "Press : in normal mode to enter the command-line mode, where you can execute various Vim commands." },
{ "Press :!{command} to execute a shell command." },
{ "Press :% !awk '!a[$0]++' to remove duplicate lines while preserving their order." },
{ "Press :% !awk '{print $NF}' to extract the last column of each line." },
{ "Press :% !jq '.' to pretty print JSON data." },
{ "Press :% !sort -n to sort the lines numerically." },
{ "Press :%!sh to execute shell commands on the entire file." },
{ "Press :%!sort -u to sort and remove duplicate lines in the current file." },
{ "Press :%d to delete all lines in the current file." },
{ "Press :%s/^/prefix/ to add a prefix to each line." },
{ "Press :%s/^s+//g to remove leading whitespace from all lines." },
{ 'Press :%s/old/new/gc to interactively replace all occurrences of "old" with "new".' },
{ "Press :, followed by normal ., to repeat the last normal mode command on each line of a visual selection." },
{
"Press :, followed by normal I{desired_text}<Esc>, to insert the desired text at the beginning of each line in a visual selection.",
},
{
"Press :, followed by normal c{desired_text}<Esc>, to replace the selected text with the desired text in a visual selection.",
},
{ "Press :Explore to open the file explorer and navigate to the desired file or directory." },
{ "Press :Vex to open the file explorer in a vertical split window." },
{ "Press :argdo {command} to execute a command on all the files currently being edited." },
{ "Press :ball to open all buffers in separate windows." },
{ "Press :ball! to open all buffers, including the hidden and unlisted ones, in separate windows." },
{ "Press :bd to close the current buffer." },
{ "Press :bdelete to delete the current buffer." },
{ "Press :bdelete {buffer_number} to delete a specific buffer." },
{ "Press :bf to switch to the first buffer." },
{ "Press :bf to switch to the first buffer/file." },
{ "Press :blast! to delete all buffers except the current one, even if modified." },
{ "Press :bmodified to list all modified buffers." },
{ "Press :bnext to switch to the next buffer." },
{ "Press :bnext to switch to the next buffer/file." },
{ "Press :bprevious to switch to the previous buffer." },
{ "Press :brewind to rewind to the first buffer, making it the current buffer." },
{ "Press :browse oldfiles to browse and open a recently edited file." },
{ "Press :cd %:h to change the current working directory to the directory of the current file." },
{ "Press :e # to switch to the alternate file." },
{ "Press :e! to discard changes and reload the current file." },
{ "Press :e! {filename} to discard changes and reload a specific file." },
{ "Press :ls to list all open buffers." },
{ "Press :only to close all other windows and keep only the current window." },
{ "Press :pwd to display the current working directory." },
{ "Press :q to quit." },
{ "Press :sfind {filename} to search for a file and open it in a new split window." },
{ "Press :w to save the current file." },
{ "Press :wq to save changes and quit." },
{ "Press << to unindent the current line." },
{ "Press <Ctrl+C> to cancel the current command or action." },
{
"Press <Ctrl+F> to open a command-line window, allowing you to enter and edit multiple lines of commands before executing them.",
},
{ "Press <Ctrl+L> to clear and redraw the screen, useful if the display becomes garbled." },
{
"Press <Ctrl+N> in insert mode to trigger keyword completion based on the current buffer. Repeat the command to cycle through the available completions.",
},
{
"Press <Ctrl+P> in insert mode to perform backward keyword completion, which suggests previously typed words in the current buffer.",
},
{ "Press > to jump to the end of the last visual selection." },
{ 'Press @a to execute the macro stored in register "a".' },
{ "Press A to append text at the end of the current line." },
{ "Press Ctrl + ] to jump to the definition of a function or tag." },
{ "Press Ctrl + ] to jump to the definition of a function or variable." },
{ "Press Ctrl + ^ to switch between the current and alternate file." },
{ "Press Ctrl + a to increment a number under the cursor." },
{ "Press Ctrl + a to increment a visual selection of numbers." },
{ "Press Ctrl + d to move the cursor half a screen down." },
{ "Press Ctrl + f to move the cursor one page down." },
{ "Press Ctrl + g to display the current file name and status." },
{ "Press Ctrl + l to redraw the screen and remove any artifacts." },
{ "Press Ctrl + n to enable auto-completion." },
{ "Press Ctrl + p to open the file finder and quickly navigate to a file." },
{ "Press Ctrl + r to redo an action." },
{ "Press Ctrl + v followed by Ctrl + j to join multiple lines into a single line." },
{ "Press Ctrl + v to enter block-wise visual mode." },
{ "Press Ctrl + v to enter visual block mode and select rectangular blocks of text." },
{ "Press Ctrl + w followed by - to decrease the size of the current split window." },
{ "Press Ctrl + w followed by an arrow key to switch between open windows." },
{ "Press Ctrl + w followed by q to close the current split window." },
{ "Press Ctrl + w followed by s to split the current window horizontally." },
{ "Press Ctrl + w followed by t to move the current split window into a new tab." },
{ "Press Ctrl + w followed by v to split the current window vertically." },
{ "Press Ctrl + ww to quickly switch between open windows." },
{
"Press Ctrl + x followed by Ctrl + f to trigger Vim's built-in file path completion, based on the available directories and files in the system.",
},
{ "Press Ctrl + x followed by Ctrl + l to open the file explorer." },
{ "Press Ctrl + x followed by Ctrl + n to decrease the number under the cursor in a visual selection." },
{ "Press Ctrl + x followed by Ctrl + n to enable keyword completion." },
{
"Press Ctrl + x followed by Ctrl + o to trigger Vim's built-in Omni completion, providing context-based suggestions for code completion.",
},
{ "Press Ctrl+D to view a list of available completions when multiple options are possible." },
{
"Press Ctrl+V followed by a sequence of characters to insert them literally in replace mode. This is useful when you need to replace multiple characters with a specific sequence.",
},
{ "Press Ctrl+r to redo a change." },
{ "Press Esc to exit replace mode and return to normal mode." },
{ "Press G to go to the end of the file." },
{ "Press G to jump to the last line of the previously edited file." },
{ "Press G to move the cursor to the last line of the file." },
{ "Press G to move to the end of the file." },
{ "Press H to move the cursor to the top line of the visible window." },
{ "Press L to move the cursor to the bottom line of the visible window." },
{ "Press N to go to the previous occurrence of the search term." },
{ 'Press N to jump to the previous occurrence of a mark named "n".' },
{ "Press N to jump to the previous occurrence of the search term." },
{ "Press O (capital letter) to insert a new line above the current line and enter insert mode." },
{ 'Press Tx to move the cursor to the character right after the previous occurrence of "x".' },
{ "Press U to convert the selected text to uppercase in visual mode." },
{ "Press [[ to jump to the previous function or block." },
{ "Press ] to jump to the end of the previously changed or yanked text." },
{ "Press ]* to jump to the next occurrence of the word under the cursor." },
{ "Press ^ to jump to the start of the last edited line." },
{ "Press ci[ to change the contents inside square brackets." },
{ "Press ciw to change the contents of the current word." },
{ "Press d to delete the selected text in visual mode." },
{ "Press dd to delete the current line." },
{ "Press e to move the cursor to the end of the current word." },
{
"Press g# to search for the word under the cursor and highlight all its occurrences, using Vim's built-in search functionality.",
},
{ "Press ga to display the ASCII value of the character under the cursor." },
{
"Press ga to display the Unicode code point of the character under the cursor, as per Vim's built-in character information.",
},
{ "Press gd to jump to the local declaration of the variable under the cursor." },
{ "Press gf to open the file whose path is under the cursor." },
{ "Press gg to go to the beginning of the file." },
{ "Press gg=G to auto-indent the entire file." },
{ "Press gg=G to automatically format the entire file according to Vim's built-in grammar rules." },
{ "Press ggVG to select the entire file." },
{ "Press ggVGgq to reformat the entire file according to Vim's built-in text formatting rules." },
{ "Press gt to switch to the next tab." },
{ "Press gv to reselect the last visual selection." },
{ "Press gv to reselect the previously selected text." },
{ "Press gvU to convert a visual selection to lowercase." },
{ "Press is to select a sentence in visual mode." },
{ "Press n to go to the next occurrence of the search term." },
{ "Press n to jump to the next occurrence of the search term." },
{ "Press o to insert a new line below the current line and enter insert mode." },
{ "Press p to paste the copied or deleted text." },
{ "Press q to stop recording a macro." },
{ "Press q@ to execute the last recorded macro." },
{ "Press q{register} to start recording a macro, where {register} is the register name." },
{ 'Press tx to move the cursor to the character right before the next occurrence of "x".' },
{ "Press u to undo the last change made. Repeat u to continue undoing changes." },
{ "Press u to undo the last change." },
{ "Press v to enter character-wise visual mode." },
{ "Press w to move the cursor to the beginning of the next word." },
{ "Press yy to copy the current line." },
{
"Press z= with the cursor on a misspelled word to open a suggestions menu. Navigate the menu and select the desired correction.",
},
{
"Press zI to display detailed information about the word under the cursor according to Vim's built-in thesaurus.",
},
{
"Press zN to toggle Vim's built-in netrw file explorer, allowing for easy navigation and manipulation of files and directories.",
},
{ "Press zR to expand all folds and reveal the entire content based on Vim's built-in folding mechanism." },
{ "Press za to toggle folding (code folding)." },
{ "Press zt to scroll the current line to the top of the window." },
{
"Press zv to open the current file in a vertical split window, according to Vim's built-in window splitting rules.",
},
{ "Press zz to center the current line in the visible window." },
{ "Press ~ to toggle the case of the character under the cursor in replace mode." },
{ "Remove a word from the spell file to treat it as a misspelling using zw." },
{
"Replay a macro by pressing @ followed by the register name. For example, @a replays the macro stored in register a.",
},
{ "Return to the previous location with `'." },
{ "Set a mark by pressing 'm' followed by a lowercase letter." },
{ "Start recording a macro by pressing q followed by a register name, such as q and a letter (e.g., q a)." },
{ "The dot command can repeat changes made in insert mode, such as inserting text or making edits within a line." },
{ "The dot command can repeat complex changes, including multi-line edits and text transformations." },
{
"The dot command is a powerful tool for increasing productivity and performing repetitive edits efficiently in Vim.",
},
{ "The dot command repeats changes made with other commands, such as dw (delete word) or dd (delete line)." },
{ "The dot command works on a linewise basis, repeating changes that affect whole lines." },
{ "The e motion moves the cursor to the end of the current word." },
{
"The file paths shown in :scriptnames represent the scripts that have been sourced, including their full paths.",
},
{
"The list displayed by :scriptnames shows the order in which scripts were loaded, with the most recently loaded script at the top.",
},
{ "The output of :scriptnames includes both system scripts and user-defined scripts." },
{ "Type a mathematical expression in the command line after = and press Enter to evaluate it." },
{ "Use # to search backwards for the word under the cursor." },
{ "Use # to search for the word under the cursor backward." },
{ "Use $ to move to the end of the current line." },
{ "Use % to jump to the matching parenthesis, bracket, or brace." },
{ "Use % to move to the matching parenthesis, bracket, or brace." },
{ "Use & to repeat the last :s command." },
{ "Use ' followed by a mark letter to jump to that mark." },
{ "Use ' to jump to the position where the cursor was last positioned in normal mode." },
{ 'Use \'a to jump to the line containing mark "a".' },
{ "Use ( to move to the beginning of the previous sentence." },
{ "Use ) to move to the beginning of the next sentence." },
{ "Use * to search for the word under the cursor forward." },
{ "Use * to search for the word under the cursor." },
{ "Use , to repeat the last f, F, t, or T command in the opposite direction." },
{ "Use - to jump to the first character of the next-to-last line in the previously edited file." },
{ "Use . to jump to the last change in the current buffer." },
{ "Use / followed by a word to search for that word in the file." },
{ "Use / followed by a word to search forward for that word." },
{ 'Use /search_term to jump to the last occurrence of "search_term" in the current buffer.' },
{ "Use /search_term to search for a specific term." },
{ "Use 0 (zero) to move the cursor to the beginning of the current line." },
{ "Use 0 (zero) to move to the beginning of the current line." },
{ "Use :!% to execute the current file as a shell script. Make sure the file has executable permissions." },
{
"Use :!command to run a shell command from within Vim. For example, :!ls will list the files in the current directory.",
},
{ "Use :!shell-command to execute a shell command without leaving Vim." },
{ "Use :% !column -t to format the selected text into columns." },
{ "Use :% !python -m json.tool to format JSON data." },
{ "Use :% !shfmt to format shell scripts using the shfmt tool." },
{ "Use :%!command to filter the entire file through an external command." },
{ "Use :%!grep search_term to filter the lines containing a specific term." },
{ "Use :%!python to execute Python commands on the entire file." },
{ "Use :%!sort to sort the lines in the current file." },
{ "Use :%TOhtml to convert the current file to HTML format based on Vim's built-in grammar highlighting." },
{
"Use :%TOplain to convert the current file to plain text format, removing Vim's built-in grammar highlighting and formatting.",
},
{ 'Use :%normal @a to execute the macro stored in register "a" on each line of the entire buffer.' },
{ "Use :%s/$/suffix/ to add a suffix to the end of each line." },
{ 'Use :%s//new/g to replace the last search term with "new".' },
{ "Use :%s/\v<regex>/replacement/g to use a regular expression for substitution." },
{ "Use :%s/^/prefix/ to add a prefix to the beginning of each line." },
{ 'Use :%s/old/new/g to replace all occurrences of "old" with "new".' },
{ 'Use :%s/old/new/g to search and replace "old" with "new" in the entire file.' },
{ 'Use :%s/old/new/gc to substitute "old" with "new" in the entire file with confirmation.' },
{ "Use :%y to yank (copy) all lines in the current file." },
{ "Use :, followed by normal <Tab>, to indent the visual selection one level deeper." },
{
"Use :, followed by normal A{desired_text}<Esc>, to append the desired text at the end of each line in a visual selection.",
},
{ "Use :Sex to open the file explorer in a horizontal split window." },
{ "Use :argdo %s/old/new/g | update to perform a search and replace operation across multiple files." },
{
'Use :argdo to apply a command to all files in the argument list. For example, :argdo %s/foo/bar/g replaces all occurrences of "foo" with "bar" in each file.',
},
{
"Use :args **/*.txt to set all the matching .txt files in the current directory and its subdirectories as arguments.",
},
{ "Use :args *.txt to set all the matching .txt files in the current directory as arguments." },
{ "Use :args +<file> to add a file to the end of the argument list." },
{ "Use :args <directory>/*.txt to set all the matching .txt files in a specific directory as arguments." },
{ "Use :args <file1> | argdo <command> to execute a command on each file in the argument list." },
{ "Use :args <filename1> <filename2> to set multiple files as arguments for Vim." },
{ "Use :args to list all the files currently being edited." },
{ "Use :args to list the files currently set as arguments." },
{ "Use :args {file1} {file2} ... to specify multiple files to be edited." },
{
"Use :args | argdo set syntax=python to set the syntax highlighting to Python for all files in the argument list.",
},
{ "Use :args! followed by a glob pattern to remove files from the argument list that match the pattern." },
{ "Use :args! to clear all the arguments previously set." },
{ "Use :b <filename> to switch to a specific buffer." },
{ "Use :b {buffer_number} to switch to a specific buffer." },
{ "Use :badd {filename} to add a file to the buffer list without switching to it." },
{ "Use :bd to close the current buffer." },
{ "Use :bd to delete a buffer." },
{ "Use :bdelete! to forcefully delete the current buffer, discarding any modifications." },
{ "Use :blast to switch to the last buffer." },
{ "Use :blast to switch to the last buffer/file." },
{ "Use :blast! to delete all buffers except the current one." },
{ "Use :bmodified! to list all unmodified buffers." },
{ "Use :bnext to switch to the next buffer." },
{ "Use :bnext! to switch to the next modified buffer, skipping the unchanged buffers." },
{ "Use :bprevious to switch to the previous buffer." },
{ "Use :bprevious to switch to the previous buffer/file." },
{ "Use :bunload {buffer_number} to unload a specific buffer from memory, freeing up resources." },
{ "Use :bw to close the current buffer without saving changes." },
{ "Use :cclose to close the quickfix window." },
{ "Use :cd to change the current working directory within Vim." },
{ "Use :cd {path/to/directory} to change the current working directory." },
{ "Use :cfdo <command> to execute a command on each file in the quickfix list." },
{ "Use :changelist to display a list of changes that can be navigated using g; and g,." },
{ "Use :cnext to jump to the next search result in the quickfix window." },
{ "Use :cnfile to jump to the next occurrence of the pattern in the current file." },
{ "Use :copen to open the quickfix window, displaying the search results." },
{ "Use :cpfile to jump to the previous occurrence of the pattern in the current file." },
{ "Use :cprev to jump to the previous search result in the quickfix window." },
{ 'Use :delmarks a to delete mark "a".' },
{ 'Use :delmarks a-c to delete marks "a", "b", and "c".' },
{ "Use :delmarks! to delete all marks in the current buffer." },
{ "Use :e <filename> to open a file for editing." },
{ "Use :e {filename} to open a specific file." },
{ "Use :e {path/to/file} to open a specific file." },
{ "Use :e! to discard changes and reload the file." },
{ "Use :e! to discard unsaved changes and reload the current file from disk." },
{ "Use :e! to reload the current file and discard unsaved changes." },
{ "Use :earlier 1m to revert changes made in the past minute." },
{
"Use :earlier <time> to revert the buffer to a previous state. <time> can be in various formats like 2m (2 minutes ago) or 2h30m (2 hours 30 minutes ago).",
},
{ "Use :find {filename} to search for a file and open it." },
{ "Use :find {filename} to search for and open a file." },
{ "Use :g!<pattern>/d to delete all lines not matching a pattern." },
{ "Use :g!<pattern>/yank A to yank all lines not matching a pattern into a register." },
{
'Use :g/<pattern>/ to apply a command to lines matching a pattern. For example, :g/foo/delete deletes all lines containing "foo".',
},
{ "Use :g/<pattern>/d to delete all lines matching a pattern." },
{ "Use :g/<pattern>/move <line> to move lines matching a pattern to a specific line number." },
{ "Use :g/<pattern>/normal <commands> to execute normal mode commands on lines matching a pattern." },
{ "Use :g/<pattern>/normal! <commands> to force execution of normal mode commands on lines matching a pattern." },
{ "Use :g/<pattern>/yank A to yank all lines matching a pattern into a register." },
{ "Use :g/search_term/d to delete all lines containing a specific term." },
{ "Use :global/<pattern>/<command> to execute a command on lines matching a pattern." },
{ "Use :grep /pattern/ % to search for a pattern in the current file." },
{ "Use :grep /pattern/ <files> to search for a pattern in multiple files and populate the quickfix list." },
{ "Use :grepadd /pattern/ % to add search results to the existing quickfix list for the current file." },
{ "Use :grepadd /pattern/ <files> to add search results to the existing quickfix list." },
{ "Use :h pattern.txt to access Vim's built-in documentation on pattern matching and regular expressions." },
{ "Use :help :<command> to get help on a specific command." },
{ "Use :help <command> to open the Vim help documentation for a specific command." },
{ "Use :help <keyword> to get help on a specific topic." },
{ "Use :join <count> to join the current line with the next <count> lines." },
{ "Use :join <line number> or :j <line number> to join the current line with a specific line number." },
{ "Use :join <range> or :j <range> to join a range of lines together." },
{ "Use :join or :j to join the current line with the line below it." },
{ "Use :join! <count> to join the current line with the previous <count> lines, reversing the order." },
{ "Use :join! <line number> to join the current line with a specific line number above it, reversing the order." },
{ "Use :join! <range> to join a range of lines together, reversing the order." },
{ "Use :join! to join the current line with the line above it, reversing the order." },
{
"Use :ju[mps] to display a list of jump locations (including marks) that can be navigated using Ctrl+O and Ctrl+I.",
},
{ "Use :later <time> to bring the buffer forward to a more recent state." },
{ "Use :lclose to close the location list window." },
{
"Use :lgrep /pattern/ <files> to search for a pattern in multiple files, displaying the results in a separate window.",
},
{ "Use :line-number to jump to a specific line number." },
{ "Use :lnext to jump to the next search result in the location list window." },
{ "Use :lopen to open the location list window, displaying the search results." },
{ "Use :lprev to jump to the previous search result in the location list window." },
{ "Use :ls to list all open buffers." },
{ "Use :lvimgrep /pattern/ <files> to search for a pattern in multiple files and populate the location list." },
{ "Use :lvimgrepadd /pattern/ <files> to add search results to the existing location list." },
{ "Use :m .-2 to move the current line two lines above." },
{ "Use :m {line_number} to move the current line to a specific line number." },
{ "Use :m<number> to move a line to a specific line number." },
{ "Use :make to run the make command and compile your code." },
{ "Use :marks to display a list of marks in the file." },
{ "Use :mksession {sessionname} to save the current session for later restoration." },
{ "Use :move to move lines within the buffer. For example, :5,10move 15 moves lines 5 to 10 after line 15." },
{ "Use :noh to clear the current search highlighting." },
{ "Use :nohlsearch to turn off search result highlighting." },
{ "Use :normal <commands> to execute normal mode commands on a range of lines." },
{
"Use :normal followed by a sequence of normal mode commands to execute them on each line in the range. For example, :1,5normal! I// comments out lines 1 to 5 by inserting // at the beginning of each line.",
},
{ "Use :oldfiles to display a list of recently edited files." },
{ "Use :q to quit." },
{ "Use :q! to force quit without saving changes." },
{ "Use :r !command to insert the output of a command below the current line." },
{ "Use :r {filename} to insert the contents of a file at the current cursor position." },
{
"Use :r!command to insert the output of a shell command at the current cursor position. For example, :r!date will insert the current date.",
},
{ "Use :reg to display the contents of all registers, including macros." },
{ "Use :registers to display the contents of all registers." },
{ "Use :retab to convert tab characters to spaces or vice versa." },
{ "Use :s/\v^(.{10}).*/\1/ to truncate each line to the first 10 characters." },
{ 'Use :s/old/new/g to search and replace "old" with "new" on the current line.' },
{ 'Use :s/old/new/g to substitute "old" with "new" in the entire file.' },
{ "Use :s/old/new/g# to replace only matches in the lines specified by the last search pattern." },
{ "Use :s/old/new/gI to perform a case-sensitive search and replace." },
{ "Use :s/old/new/gi to perform a case-insensitive search and replace." },
{
"Use :s/old/new/gn to perform a dry run of the search and replace, showing a preview of changes without actually modifying the text.",
},
{ 'Use :s/old/new/gp to print lines containing matches for "old" and their corresponding replacements.' },
{ "Use :sav {filename} to save the current file with a different name and continue editing the new file." },
{ "Use :scriptnames to display a list of sourced scripts in Vim." },
{
"Use :scriptnames! to display the sourced scripts in reverse order, starting from the oldest to the most recently loaded script.",
},
{ "Use :set autoindent to automatically indent new lines based on the previous line's indentation." },
{ "Use :set autoindent to enable automatic indentation." },
{ "Use :set autoread to automatically reload the file if it was changed externally." },
{ "Use :set background=dark or set background=light to set the background color scheme." },
{ "Use :set background=dark to set the color scheme for dark backgrounds." },
{ "Use :set background=light to set the color scheme for light backgrounds." },
{ "Use :set backup to create a backup file when saving changes." },
{ "Use :set colorcolumn=<number> to set a vertical line at a specific column." },
{ "Use :set cursorline to highlight the current line." },
{ "Use :set expandtab to insert spaces instead of tab characters." },
{ "Use :set expandtab to use spaces instead of tabs for indentation." },
{ "Use :set foldmethod=<method> to set the folding method (e.g., manual, syntax)." },
{ "Use :set hidden to allow switching between buffers without saving changes." },
{ "Use :set hidden to keep buffers open when switching between files." },
{ "Use :set hlsearch to highlight search matches." },
{ "Use :set hlsearch to highlight search results." },
{ "Use :set ignorecase to make searches case-insensitive." },
{ "Use :set incsearch to highlight incremental search matches as you type." },
{ "Use :set incsearch to highlight search matches as you type." },
{ "Use :set list to display invisible characters like tabs and line breaks." },
{ "Use :set list to display invisible characters such as tabs and newlines." },
{ "Use :set list! to toggle the display of invisible characters." },
{ "Use :set modeline to enable per-file configuration with modelines at the bottom of the file." },
{ "Use :set mouse=a to enable mouse support in Vim." },
{ "Use :set mouse=a to enable mouse support." },
{ "Use :set nonumber to hide line numbers." },
{ "Use :set nowrap to disable line wrapping." },
{ "Use :set number to display line numbers in the current buffer." },
{ "Use :set number to display line numbers." },
{ "Use :set numberwidth=<number> to set the width of line numbers." },
{ "Use :set paste before pasting code from an external source to preserve formatting." },
{ "Use :set relativenumber to display relative line numbers in the current buffer." },
{ "Use :set relativenumber to display relative line numbers." },
{ "Use :set ruler to display the cursor position and file statistics." },
{ "Use :set scrollbind to bind two windows together for scrolling." },
{
"Use :set scrolloff=<number> to keep a minimum number of lines visible above and below the cursor when scrolling.",
},
{ "Use :set shiftwidth=<number> to set the number of spaces for each indentation level." },
{ "Use :set shiftwidth=<number> to set the number of spaces for indentation." },
{ "Use :set showcmd to display partial commands in the last line of the screen." },
{ "Use :set showcmd to show the current command being typed." },
{ "Use :set showmatch to highlight matching parentheses, brackets, and braces." },
{ "Use :set smartcase to make searches case-sensitive if they contain uppercase letters." },
{ "Use :set smartcase to make searches case-sensitive only if the pattern contains uppercase letters." },
{ "Use :set spell to enable spell checking." },
{ "Use :set spell! to toggle spell checking on and off during your editing session." },
{ "Use :set syntax=off to disable syntax highlighting." },
{ "Use :set syntax=on to enable syntax highlighting." },
{ "Use :set tabstop=<number> to set the number of spaces a tab character represents." },
{ "Use :set tabstop=<number> to set the number of spaces for a tab." },
{ "Use :set title to set the window title to the current file name." },
{ "Use :set to view and modify various Vim options. For example, :set number displays line numbers." },
{ "Use :set undofile to enable undo history even after closing and reopening a file." },
{ "Use :set wildmenu to enable command-line completion." },
{ "Use :set wildmenu to enable command-line tab completion." },
{ "Use :set wrap to enable line wrapping." },
{ "Use :shell or :sh to open a subshell. Enter exit or Ctrl+D to return to Vim." },
{ "Use :sort to sort lines alphabetically." },
{ "Use :sort to sort lines in the current range. For example, :1,10sort sorts lines 1 to 10 alphabetically." },
{ "Use :sort u to remove duplicate lines." },
{ "Use :sort! to sort lines in reverse order." },
{ "Use :sp {filename} to open a file in a new split window." },
{ "Use :split to split the window horizontally." },
{ "Use :tabfind {filename} to search for a file and open it in a new tab." },
{ "Use :tabfirst to move to the first tab." },
{ "Use :tablast to move to the last tab." },
{ "Use :tabnew to open a new tab." },
{ "Use :tabnew {filename} to open a file in a new tab." },
{ "Use :tabnext or gt to move to the next tab." },
{ "Use :tabprevious or gT to move to the previous tab." },
{ "Use :terminal to open a terminal window within Vim." },
{ "Use :undo <undo number> to go back to a specific undo point in the undo history." },
{ "Use :undo to view a tree-like representation of the undo history." },
{ "Use :undolist -1 to display the information about the last change." },
{ "Use :undolist to view a list of changes with corresponding undo numbers and timestamps." },
{ "Use :v/<pattern>/<command> to execute a command on lines not matching a pattern." },
{ "Use :v/<pattern>/d to delete all lines not matching a pattern." },
{ "Use :v/<pattern>/yank A to yank all lines not matching a pattern into a register." },
{ "Use :vimgrep /pattern/ <files> to search for a pattern in multiple files." },
{ "Use :vsplit to split the window vertically." },
{ "Use :vsplit {filename} to open a file in a new vertical split window." },
{ "Use :w to save changes." },
{ "Use :w {filename} to save the current file with a different name." },
{ "Use :windo to execute a command in each window." },
{ "Use :x to save changes and exit only if there were modifications." },
{ "Use :{line_number} to jump to a specific line number." },
{ "Use ; to repeat the last f, F, t, or T command in the same direction." },
{ "Use < to jump to the start of the last visual selection." },
{
"Use <Ctrl+X><Ctrl+L> to trigger whole-line completion, which completes the entire line based on previously typed lines in the buffer.",
},
{ "Use <Ctrl>+<R>= to enter the expression register for performing calculations." },
{
"Use <Tab> for command-line completion. Pressing <Tab> will autocomplete commands, file names, and other elements based on the context.",
},
{
"Use <Tab> to accept a suggested completion and move to the next completion match if multiple options are available.",
},
{ "Use >> to indent the current line." },
{ "Use ? followed by a word to search backward for that word." },
{ "Use @{register} to execute a macro stored in a specific register." },
{ "Use Ctrl + b to move the cursor one page up." },
{ "Use Ctrl + g to display the number of lines, words, and characters in the visual selection." },
{ "Use Ctrl + o to jump back to the previous cursor position." },
{ "Use Ctrl + t to create a new tab." },
{ "Use Ctrl + u to move the cursor half a screen up." },
{ "Use Ctrl + v followed by I to insert text at the beginning of each selected line." },
{ "Use Ctrl + w followed by + to increase the size of the current split window." },
{ "Use Ctrl + w followed by h/j/k/l to navigate between split windows." },
{ "Use Ctrl + w followed by o to maximize the current split window." },
{ "Use Ctrl + w followed by r to swap the current split window with the one below it." },
{ "Use Ctrl + x followed by Ctrl + i to increase the number under the cursor in a visual selection." },
{ "Use Ctrl+R to redo changes that have been undone." },
{ "Use Ctrl+b to move backward one full screen." },
{ "Use Ctrl+d to move forward half a screen." },
{ "Use Ctrl+f to move forward one full screen." },
{ "Use Ctrl+i to jump to the next location (after using Ctrl+o)." },
{ "Use Ctrl+n to open the auto-complete menu while typing." },
{ "Use Ctrl+o to jump to the previous location." },
{ "Use Ctrl+u to move backward half a screen." },
{ "Use Ctrl+w followed by h, j, k, or l to move between split windows." },
{ "Use Ctrl+w followed by h, j, k, or l to switch between split windows." },
{ "Use Ctrl+w followed by w to cycle between windows." },
{ "Use Ctrl+x followed by Ctrl+o to trigger omni-completion." },
{ "Use F followed by a character to move to the previous occurrence of that character on the current line." },
{ 'Use Fx to move the cursor backward to the previous occurrence of the character "x".' },
{ "Use G to move to the end of the file." },
{ "Use H to move to the first visible line in the current window." },
{ "Use J to join the current line with the line below it." },
{ "Use L to move to the last visible line in the current window." },
{ "Use M to move the cursor to the middle line of the visible window." },
{ "Use M to move to the middle visible line in the current window." },
{ "Use N to move to the previous occurrence of the search term." },
{ "Use O to insert a new line above the current line and enter insert mode." },
{
"Use T followed by a character to move just after the previous occurrence of that character on the current line.",
},
{ "Use V to enter line-wise visual mode." },
{ "Use [ to jump to the start of the previously changed or yanked text." },
{ "Use [[ to move to the beginning of the previous section or function." },
{ "Use [{ to move to the beginning of the current block or function." },
{ "Use ]] to move to the beginning of the next section or function." },
{ "Use ]s and [s to move to the next and previous spelling errors." },
{ "Use ]s to move the cursor to the next misspelled word and [s to move to the previous misspelled word." },
{ "Use ]} to move to the end of the current block or function." },
{ "Use ^ to jump to the location where the last insert or change started." },
{
"Use a number prefix before the macro replay command to repeat it multiple times. For instance, 3@a replays macro a three times.",
},
{ "Use ap to select a paragraph in visual mode." },
{ "Use aw to select a word and include trailing whitespace in visual mode." },
{ "Use b to move back to the beginning of the previous word." },
{ "Use b to move the cursor to the beginning of the previous word." },
{ "Use ci( to change the contents inside parentheses." },
{ "Use ciw to change the contents of the current word." },
{ "Use dd to delete a line." },
{ "Use e to move to the end of the next word." },
{ "Use f followed by a character to move to the next occurrence of that character on the current line." },
{ 'Use fx to move the cursor forward to the next occurrence of the character "x".' },
{
"Use g? followed by a motion command (e.g., g?w) to apply Vim's built-in rot13 encryption/decryption on the text within the specified motion.",
},
{ "Use g? to invoke Vim's built-in rot13 encryption/decryption feature on the selected text." },
{ "Use gJ to join the current line with the line below it without inserting a space." },
{
"Use gJ to join the selected lines without adding any extra spaces or characters, as per Vim's built-in text joining rules.",
},
{ "Use gT to switch to the previous tab." },
{ "Use gU to convert the selected text to uppercase, following Vim's built-in text manipulation rules." },
{ "Use gd to jump to the local declaration of a variable or function." },
{ "Use gf to open the file under the cursor." },
{ "Use gg to move the cursor to the first line of the file." },
{ "Use gg to move to the beginning of the file." },
{ "Use gg=G to re-indent the entire file." },
{ "Use gq to reformat the selected lines according to Vim's built-in text formatting rules." },
{ "Use gt to switch to the next tab." },
{ "Use gvU to convert a visual selection to uppercase." },
{ "Use g~ to invert the case of the selected text, following Vim's built-in text manipulation rules." },
{ "Use g~ to toggle the case of the characters in a visual selection." },
{ 'Use ma to create a mark named "a" at the current cursor position.' },
{ 'Use n to jump to the next occurrence of a mark named "n".' },
{ "Use n to move to the next occurrence of the search term." },
{ "Use o to toggle the active end of the visual selection." },
{ "Use p to paste a copied or deleted line." },
{
"Use parentheses to group and prioritize calculations. For example, <Ctrl>+<R>=3*(4+2) will calculate the result of the expression 3*(4+2).",
},
{ "Use q again to stop recording the macro." },
{ 'Use qA to append additional commands to a macro stored in register "a".' },
{ 'Use qa to start recording a macro in register "a".' },
{ "Use t followed by a character to move just before the next occurrence of that character on the current line." },
{
"Use text objects to work with larger units of text. For example, ci( changes the contents inside parentheses, and dat deletes a whole HTML tag.",
},
{
"Use text objects to work with larger units of text. For example, ip selects the entire paragraph, and it selects the text within the current HTML tag.",
},
{ "Use the :reg command to view the contents of registers and examine the stored macros." },
{ "Use the Insert key to toggle between insert mode and replace mode." },
{
"Use the arrow keys to navigate through your command history. Pressing the Up arrow key recalls previous commands, while the Down arrow key moves forward in the history.",
},
{ "Use the dot command to repeat single-character changes, such as inserting or deleting a character." },
{ "Use the dot command with operators like c (change), d (delete), or y (yank) to repeat those operations." },
{
"Use the expression register to perform on-the-fly calculations, dynamic substitutions, and any other mathematical operations directly within Vim.",
},
{
"Use the f command followed by a character to find the next occurrence of that character on the current line. For example, fa moves the cursor to the next occurrence of the letter 'a'.",
},
{
'Use the g flag with the :substitute command (:s) to perform a global replace in replace mode. For example, :%s/old/new/g replaces all occurrences of "old" with "new" in the entire file.',
},
{
"Use the r command followed by a character to replace the character under the cursor without entering replace mode. For example, ra replaces the character with 'a'.",
},
{ "Use u to convert the selected text to lowercase in visual mode." },
{ "Use u to undo the last action." },
{
"Use w to move the cursor to the beginning of the next word and b to move to the beginning of the previous word.",
},
{ "Use w to move to the beginning of the next word." },
{ "Use y to yank the selected text in visual mode." },
{ "Use yy to copy a line." },
{ "Use z= to invoke Vim's built-in spell checker and suggest corrections for misspelled words." },
{ "Use za to toggle the folding of a fold." },
{ "Use zc to close a fold." },
{ "Use zf followed by a motion command to create a fold." },
{ "Use zo to open a fold." },
{ "Use zz to center the line with the cursor in the window." },
{ "Use { to move to the beginning of the previous paragraph." },
{ "Use {line_number}G to move the cursor to a specific line number." },
{ "Use } to move to the beginning of the next paragraph." },
{ "View all marks in the current file with the command :marks." },
{
"You can also use built-in Vim functions and constants in your calculations. For example, <Ctrl>+<R>=sin(45) will calculate the sine of 45 degrees.",
},
{
"You can use :scriptnames to troubleshoot issues by identifying which scripts are being loaded and in what order.",
},
{
"You can use the dot command to repeat changes made in visual mode, such as text selection and indentation adjustments.",
},
}