From 2754dcd8ea99ba1c61e352e8282ec7316efa352e Mon Sep 17 00:00:00 2001 From: ilya Date: Fri, 2 May 2025 14:43:53 +0500 Subject: [PATCH] vim cheet sheet --- new-info.txt | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 90 insertions(+), 3 deletions(-) diff --git a/new-info.txt b/new-info.txt index 873928f..aa4a33b 100644 --- a/new-info.txt +++ b/new-info.txt @@ -10,6 +10,7 @@ Commands: :help Ctrl-W -- find help with window management command :help usr_toc.txt -- all user manuals breef look + Word / file navigation (3): fh | 3fl -- move cursor to the "h" letter of the current line f -- aborts search @@ -47,6 +48,7 @@ Commands: :marks p -- to see where mark are specified :marks pF -- to see where several marks are specified + Making small changes (4): d$ -- deletes to the end of the line cc -- like dd, but changes line @@ -73,6 +75,7 @@ Commands: I -- insert to the begin of the line A -- append to the end of the line + Editing more than one file (7): :edit foo.txt -- opens other file instead of current :write -- save current file delta @@ -98,21 +101,105 @@ Commands: "l3Y -- yank three whole lines to the l register "fp -- put register buffer to the cursor position "wdaw -- delete text to register - :write >> myfile -- append current file to another file + :write >> myfile -- append current file to another file. To append only + few lines do it in visual mode. + vim -R file -- open file in readonly mode. Can edit it by appending + ! to the write command + vim -M file -- do it to forbid making any changes in a file + :saveas move.c -- to save current file to the other file and start + edit other file - Window management: + + Splitting windows (8). Skipped 8.07 about vimdiff: Always starts from Ctrl-W Ctrl-W h -- to the left window Ctrl-W j -- to the bottom window Ctrl-W l -- to the top window Ctrl-W l -- to the right window - Ctrl-H H -- move window to left Ctrl-H J -- move window to bottom Ctrl-H K -- move window to top Ctrl-H L -- move window to right + :qall -- close all winfows + :wall -- write all changes + :wqall -- write and close all files + :qall -- close Vim and throw all changes + vim -o|-O -- open several files in split mode + :[vertical] all -- open args files in split mode + vimdiff one.c two.c -- open in diff mode + :leftabove {cmd} -- left or above the current window + :aboveleft {cmd} -- idem + :rightbelow {cmd} -- right or below the current window + :belowright {cmd} -- idem + :topleft {cmd} -- at the top or left of the Vim window + :botright {cmd} -- at the bottom or right of the Vim window + :tabedit -- open another file in tabe mode + gt -- go to the next tab + gT -- go to the previous tab + :tabonly -- to close all other tabs + + Making big changes (10): + q[a-z] -- start and end record commands + @[a-z] -- execute recorded command + @@ -- execute previous executed recorded command + Example: + qa Start recording a macro in register a. + ^ Move to the beginning of the line. + i#include " Insert the string #include " at the beginning + of the line. + $ Move to the end of the line. + a" Append the character double quotation mark (") + to the end of the line. + j Go to the next line. + q Stop recording the macro. + + You can paste command records and edit them, than yank them to register + again. + You can append to a register by using uppercase letter. "aY "AY + :s/x/y -- substitute first occurrence on current line + :s/x/y/g -- substitute every occurence on the current line + :%s -- substitute on all lines + :%s/x/y/c -- ask about any substitution + :%s/x/y/p -- print out last line, that this command changes + :s+one/two+one or two+ -- use "+" delimiter in substution + Command ranges: + :1,5s/this/that/g -- substitute on 1-5 lines. Line 5 is included + :54s/this/that/ -- substitute on one line + :.write otherfile -- write only current string to file + :.,$s/yes/no -- substitute in the lines from the cursor to the end + :?^Chapter?,/^Chapter/s=grey=gray=g -- substitute in range between word + "Chapter" + There is also offsets before and after the word + :'t,'b -- you can also use marks as the range borders + :5 -- change current and next 4 lines + + :[range]global/{pattern}/{command} | g: + Find a match for a pattern and execute command there. + g+//+s/foobar/barfoo/g -- replace word in all lines with // (C++ style) + Ctrl-V A -- append text after visual block + Ctrl-V $A -- append text in the end of every string in visual blck + Ctrl-V C -- change text + Ctrl-V ~ -- swap case + Ctrl-V U -- make uppercase + Ctrl-V u -- make lowercase + Ctrl-V r -- fill the whole block with one character + :read file.txt -- the file named "file.txt" will be inserted in cursor + place + gUw -- make word all uppercase + guw -- make word all lowercase + gUU -- make whole line uppercase + guu -- make all line lowercase + g~~ -- switch case in whole line + :read !ls -- read the contents of the current directory to the + cursor + Ctrl-L -- redrow the screen + + + Clever tricks (12): + Hints: There is lowercase and uppercase marks. Uppercase marks are global, they can help you to switch between the files. Lowercase marks are local for one file. +