Normal mode commands: -> for navigating the file opened in vim: h: to go left. l: to go right. j: to go down. k: to go up. ctrl + f: To do page down. Similar to page down button. ctrl + b: To do page up. Similar to page up button. z + : To bring the focus of vision to the top where the cursor is currently present. z + z: To bring the focus of vision to the center where the cursor is currently present. w: To move the cursor by one word on the file. It include the punctuation as a word.(move one word forward) W: To move the cursor by one word on file. It don't include the punctuation as a word.(move one word forward) b: To move the cursor by one word on file. It include the punctuation as a word.(move on word backward) B: To move the cursor by one word on file. It don't include the punctuation as a word.(move on word backward) 0: To move the first column of the current line the cursor is present. ^: To move the first letter of the first word of the current line the cursor is present. $: To move the last letter of the last word of the current line the cursor is present. gg: To move the first column of the first line of the file. G: To move to the last line of the file. gg or G: To move the particular as mentioned. ctrl + g: To know the current line we are on, the file name, the percentage of we have covered according to current cursor position. g + (ctrl+g): To get more detailed information of whatever the previous was showing. -> Deleting text from file in normal mode: x: To delete the right side byte of the current cursor position. X: To delete the left side byte of the current cursor position. Using d to delete words with motion operation: {motion} for ex: dw (this delete the what the w command would move the cursor by) dw: To delete a word in front of the current cursor position. dl: To delete next byte towards right from current cursor position on current line. dh: To delete next byte towards left from current cursor position on current line. dj: To delete whole current line and the line below. dk: To delete whole current line and the line above. d$: To delete from current position of cursor to the end of the line. d0: To delete from current position to the first letter of the current line the cursor is present. D: Equivalent of of what d$ dd: To delete the current line entirely no matter where the cursor is present currently on that same line. dd: To delete the 3 lines below from current line where the cursor is present. Note: is telling in short hand on how many times the delete-command given should be executed. Same as the command shown above (dd). dw: delete-word command to be executed numbers of times. For ex: 3w = Repeat word motion 3 times. d3w = Delete the 3w motion. 2d3w = Delete the 3w motion 2 times. Line mode: -> for navigating using line mode: : : To go to the particular . :$ : To move to the last line in the file. !(exclamation mark): This Operator can be used to force the commands for ex: :q! is used to force quit the vim even if the changes on files are not saved. -> help command (for vim documentation): :help : It will open vim documentation. :help [command] : It will open documentation to a specific location where the specification for that specific command is present. :help {subject} : It will open documentation to a specific location where the specification for the given subject. :h : It is a short cut for :help in line mode. (CTRL+w) + (CTRL+w): It is used to switch b/w windows currently open in vim for editing. (CTRL+o): Take you to the location where the previous search is done in the document. (CTRL+i): Take you to the location where the next search is done in the document. (CTRL+]): Place the cursor on the "subject" you want to search (for ex. linewise) and press this command. Note: Anything between [] in help documentation means it is optional in vim. For autocompleting a command which is to be searched in help documentation click CTRL+D, which shows suggestation. To iterate through all the suggestion without writing it explicity use key. To iterate in reverse order use +. -> Cut, Copy and Paste: * d and x cut text, not just delete it. * cut = delete and save into a register. * Register is a clipboard-like storage location. * This register is also known as default register or unnamed register. > for pasting the text present in the default register use p command. > if the line is cut using dd command then using 'p' will paste it below the current line where the cursor is present. > if 'P' command is used then it will paste above the current line where the cursor is present. > if a character is cut using 'x' or 'X' command using 'p' will paste the character just after the current postion of the cursor. > similarly, if 'P' command is used it will paste the character just before the current position of the cursor. Note: > The data cutted is linewise then it will paste below/above current line. > The data cutted is characterwise then it will paste before or after the current line. > Standard - Vim terminology: Cut = Delete Copy = yank paste = put > for yanking(copying) use 'y' command. > Just like 'd' command behavior with 'p' command is same. * Undo command: > To undo the action of previous command, use 'u' command to undo the action. > To redo the same command undone by undo 'u' command use 'CTRL+r' command. * Type of registers: > Named registers : "a to "z > Number register : "0 to "9 > unnamed register : "" > unnamed register contains the data with acquired from one of the commmands d, x, c, y and s. c -> , s -> substitute. > "0 : Most recently yanked data > "1 : The data which is deleted recently. > "2 : The data which was deleted second last time. > "3 : and so on till "9.... > use :reg to see the content of each register. > use :reg wherer arg -> register name to show the content + arg can be string containing all the registers named concatenated into a single string. -> Transforming and Substituting: * Inserting: @ Command :- Shift + i or CAPS + i (Capital i) What does it do? It put the mode in insert mode and put the cursor in the first character of the first word of the current line where the cursor is present. @ Command :- Shift + a or CAPS + a (Capital a) What does it do? It put the mode in insert mode and put the cursor after the last character of the last word of the current line where the cursor is present. @ Command :- o What does it do? It puts the mode in insert mode and put the cursor below the line where the current cursor is present. @ Command :- Shift + o What does it do? It puts the mode in insert mode and put the cursor above the line where the current cursor is present. * Replacing (Replace Mode): @ Command :- Shift + r or CAPS + r (Capital r) What does it do? It pust the mode in replace mode. In replace mode, wherever the cursor is present, it will start to replace each character as we type and the previous character will be over-written by the new character. * Changing (Changing Mode): @ Command :- + c + What does it do? It delete the series of bytes, based on the word-motion given, and put the mode in INSERT mode. can be any type of word motion that we have learnt. Here, can be used to put the deleted or "replaced" word into the register which we use to store as intended. For example: "a + c + w It will store the word into register "a which is replaced by using command c + w. @ Command :- Shift + c or CAPS + c (capital + c) What does it do? Replace the sequence of characters from current cursor position is present at till end of the line. @ Command :- cc Replace the entire current line where the cursor is present. @ Command :- ~ What does it do? Switch over the case of the character where the current is present. @ Command :- g + ~ + What does it do? Switch over the cases of the each character based on the motion command range. @ Command :- g + U + What does it do? Changes the entire case of each character to upper-case based on the motion command range. @ Command :- g + u + What does it do? Changes the entire case of each character to lower-case based on the motion comand range. -> Joining: @ Command :- Shift + j or CAPS + j (Capital + j) What does it do? Joins the line below the current line where the cursor is present to single line and add a space to it or add a double space if there is a period at the end of the current line. @ Command :- g + J + What does it do? Do the same thing as "J" command. Only difference is that it doesn't add any space between joining lines. -> Searching commands: @ Command :- f + What does it do? Searches for the next occurence of the character passed as an argument from current cursor position on the same line. NOTE THE WORD, SAME LINE. @ Command :- F + What does it do? Do the same thing as previous command, but in opposite direction. @ Command :- ; What does it do? It repeat the command from the above two, whichever was executed first. For example, if F + is executed, it will repeat the same command. @ Command :- , What does it do? It do the opposite of what ";" command does. For example, if F + is executed, it will execute f + action, repeatedly. It will do the opposite of whichever above mentioned command was executed first. @ Command :- t + What does it do? It search for the and place the cursor just one position before the current cursor. Note that, using the same command again will not move the cursor to next position w.r.t same that was mentioned earlier. We can use ";" and "," command to repeat the mentioned command even if the cursor is present just before the searched , it pass through the current position. Note that the searching is done from left to right. @ Command :- T + What does it do? It perform operation and behave in similar manner as done by t + command. But, the searching is done in reverse order. **Note** All these are motion-commands. That means, we can use it with Editing commands like d (delete), c (changing), y (yanking), etc. @ Command :- / What does it do? It searches for the . Using "n" command will search for next occurance in current opened file. Using "N" command does the same thing. But, in opposite direction. **Note** For "/" command for searching the incsearch option should be set. If it is not, we can use following line command: :set is To check if the configuration is set use command: :set is? For highlighting the searches, check for: Check :set hls? Output: nohlsearch Do: :set hls Note that hlsearch is enabled will highlight the s' until new search is done which in turn highlight the new . To turn off the highlight, use: :nohls. It will turn-off the highlights not disable it permanently. %% Trick %% > Using "/" command to find a string or string containing the pattern specified and pressing enter will take to the first such matching string. > If we now use "c + w" command the cursor which is present at the first letter of the word will delete that word and we type certain word. > After getting out of the insert mode, pressing "n" command will move the cursor the cursor to the next string and pressing the command "." will repeat the changes that we did for first string i.e. repeat the process that we performed above.