diff --git a/vim.md b/vim.md index cf2b9aa..7bd586c 100644 --- a/vim.md +++ b/vim.md @@ -1,6 +1,14 @@ +# Vim Reference + +This is intended as a brief reference for beginners. + +Vim does have a built in reference for each key, that can be accessed via + + :h + # Basics -Inserting text, saving and closing the buffer +## Inserting Text `i` - Insert Text at the cursor @@ -10,6 +18,12 @@ Inserting text, saving and closing the buffer `A` - Insert text at the end of the line +`o` - Insert a new line below the current line + +`O` - Inserts a new line above the current line + +## Saving and Quitting + `esc` - Pressing escape will put you in normal mode, then pressing `:` will put you into command mode @@ -19,11 +33,13 @@ will put you into command mode `Ctrl + ZZ` - Write and quit (`:wq`) `Ctrl + ZQ` - Force quit (`:q!`) -# Movement +# Motions for Movement -These can also be used with other commands, such as dw to delete to next word +Motions can also be used with other commands, such as dw to delete to next word or while selecting a visual block. +Vim reference `:h motion.txt` + `h,l` - Left, Right `j,k` - Down, Up @@ -47,8 +63,30 @@ or while selecting a visual block. `5w` - Move forwards 5 words, this also works with most commands +`f` - Moves to the next occurance of that character, good for quotes + +`%` - Jump to matching parenthesis, either forwards or back + +# Visual Selection + +Visually highlight the selection being made + +`v` - Select characters + +`V` - Select entire lines + +`Ctrl + v` - Visual block selection + +Visual mode, can also be used with motions + +`vi(` - Visually select the inside of some parenthesis + +`va{` - Visual select the the {} and their contents + # Deleting and Clipboard +Deleting, yanking, and pasting. Like other commands, can use motions too! + `x` - Delete/cut character under cursor `d` - Delete/cut selection @@ -81,15 +119,47 @@ or while selecting a visual block. `N` - Previous search result -# Replace/Change +# Replace/Change/Substitute -c Change -cw -ci( - Change inside ( { " -:s/x/y Replace x for y on the selected line -:%s/x/y Replace x for y on each line +## Replace + +`r` - Replaces the whatever is at the cursor with the character + +`R` - Replace mode. This enters an insert mode that writes over everything. + +## Change + +The more powerful alternative of replace + +`c` - Change. This will delete the selection, and put you into insert mode + +Yet again, this command can make use of, and gets its power from motions! + +`cw` - Change word +`c$` - Change contents to the end of the line +`ci(` - Change inside ( { " + +## Substitute + +This is the "change and replace" of vim. It makes use of regex. + +`:s/x/y` - Replace the first instance of x to y on the selected line + +`:s/x/y/g` - Replace globally all instances of x to y on the current line. + +`:%s/x/y/g` - Replace all instances of x to y on each line + +`:s/x/y/gc` - Replace all instances on the line, but prompt for each change + +# Cool stuff + +`.` - Repeats the last command. Eg. ci( will occur again # Buffers Splits Multitasking + +Vim can open numerous files/buffers at the same time. +These can be in tab like buffers, or in a splitscreen view. + :r :e filename :bn @@ -101,9 +171,13 @@ ci( - Change inside ( { " Ctrl + ww Ctrl + wr Switch the splits around -# Visual Selection +# Setting variables in Vim + +Vim has extra features disabled by default, that can be very useful! + +`:set lines` - This adds line numbers -`v` - Select lines -`V` - Select the current line -`Ctrl + v` - Visual selection in characters +`:syntax on` - Turns syntax highlighting on +These variables can be added into a file called ~/.vimrc to automatically run +every time vim opens.