summaryrefslogtreecommitdiffhomepage
path: root/vim.html.markdown
diff options
context:
space:
mode:
Diffstat (limited to 'vim.html.markdown')
-rw-r--r--vim.html.markdown225
1 files changed, 119 insertions, 106 deletions
diff --git a/vim.html.markdown b/vim.html.markdown
index 00a44807..fb2fc81f 100644
--- a/vim.html.markdown
+++ b/vim.html.markdown
@@ -3,6 +3,7 @@ category: tool
tool: vim
contributors:
- ["RadhikaG", "https://github.com/RadhikaG"]
+ - ["kaymmm", "https://github.com/kaymmm"]
filename: LearnVim.txt
---
@@ -19,70 +20,71 @@ specific points in the file, and for fast editing.
## Basics of navigating Vim
```
- vim <filename> # Open <filename> in vim
- :help <topic> # Open up built-in help docs about <topic> if any exists
- :q # Quit vim
- :w # Save current file
- :wq # Save file and quit vim
- ZZ # Save file and quit vim
- :q! # Quit vim without saving file
- # ! *forces* :q to execute, hence quiting vim without saving
- ZQ # Quit vim without saving file
- :x # Save file and quit vim, shorter version of :wq
-
- u # Undo
- CTRL+R # Redo
-
- h # Move left one character
- j # Move down one line
- k # Move up one line
- l # Move right one character
-
- Ctrl+B # Move back one full screen
- Ctrl+F # Move forward one full screen
- Ctrl+D # Move forward 1/2 a screen
- Ctrl+U # Move back 1/2 a screen
+ vim <filename> # Open <filename> in vim
+ :help <topic> # Open up built-in help docs about <topic> if any exists
+ :q # Quit vim
+ :w # Save current file
+ :wq # Save file and quit vim
+ ZZ # Save file and quit vim
+ :q! # Quit vim without saving file
+ # ! *forces* :q to execute, hence quitting vim without saving
+ ZQ # Quit vim without saving file
+ :x # Save file(only when the file is modified) and quit vim
+
+ u # Undo
+ CTRL+R # Redo
+
+ h # Move left one character
+ j # Move down one line
+ k # Move up one line
+ l # Move right one character
+
+ Ctrl+B # Move back one full screen
+ Ctrl+F # Move forward one full screen
+ Ctrl+D # Move forward 1/2 a screen
+ Ctrl+U # Move back 1/2 a screen
# Moving within the line
- 0 # Move to beginning of line
- $ # Move to end of line
- ^ # Move to first non-blank character in line
+ 0 # Move to beginning of line
+ $ # Move to end of line
+ ^ # Move to first non-blank character in line
# Searching in the text
- /word # Highlights all occurrences of word after cursor
- ?word # Highlights all occurrences of word before cursor
- n # Moves cursor to next occurrence of word after search
- N # Moves cursor to previous occerence of word
+ /word # Highlights all occurrences of word after cursor
+ ?word # Highlights all occurrences of word before cursor
+ n # Moves cursor to next occurrence of word after search
+ N # Moves cursor to previous occurrence of word
- :%s/foo/bar/g # Change 'foo' to 'bar' on every line in the file
- :s/foo/bar/g # Change 'foo' to 'bar' on the current line
- :%s/\n/\r/g # Replace new line characters with new line characters
+ :%s/foo/bar/g # Change 'foo' to 'bar' on every line in the file
+ :s/foo/bar/g # Change 'foo' to 'bar' on the current line
+ :%s/\n/\r/g # Replace new line characters with new line characters
+ :'<,'>s/foo/bar/g # Change 'foo' to 'bar on every line in the current visual selection
# Jumping to characters
- f<character> # Jump forward and land on <character>
- t<character> # Jump forward and land right before <character>
+ f<character> # Jump forward and land on <character>
+ t<character> # Jump forward and land right before <character>
# For example,
- f< # Jump forward and land on <
- t< # Jump forward and land right before <
+ f< # Jump forward and land on <
+ t< # Jump forward and land right before <
# Moving by word
- w # Move forward by one word
- b # Move back by one word
- e # Move to end of current word
+ w # Move forward by one word
+ b # Move back by one word
+ e # Move to end of current word
# Other characters for moving around
- gg # Go to the top of the file
- G # Go to the bottom of the file
- :NUM # Go to line number NUM (NUM is any number)
- H # Move to the top of the screen
- M # Move to the middle of the screen
- L # Move to the bottom of the screen
+ gg # Go to the top of the file
+ G # Go to the bottom of the file
+ :NUM # Go to line number NUM (NUM is any number)
+ H # Move to the top of the screen
+ M # Move to the middle of the screen
+ L # Move to the bottom of the screen
```
## Help docs:
@@ -104,28 +106,28 @@ Vim is based on the concept on **modes**.
- Ex Mode - used to drop down to the bottom with the ':' prompt to enter commands
```
- i # Puts vim into insert mode, before the cursor position
- a # Puts vim into insert mode, after the cursor position
- v # Puts vim into visual mode
- : # Puts vim into ex mode
- <esc> # 'Escapes' from whichever mode you're in, into Command mode
+ i # Puts vim into insert mode, before the cursor position
+ a # Puts vim into insert mode, after the cursor position
+ v # Puts vim into visual mode
+ : # Puts vim into ex mode
+ <esc> # 'Escapes' from whichever mode you're in, into Command mode
# Copying and pasting text
- # Operations use the vim register by default
- # Think of it as vim's private clipboard
+ # Operations use the vim register by default
+ # Think of it as vim's private clipboard
- # Yank ~ copy text into vim register
- y # Yank whatever is selected
- yy # Yank the current line
+ # Yank ~ copy text into vim register
+ y # Yank whatever is selected
+ yy # Yank the current line
- # Delete ~ yank text and delete from file
- d # Delete whatever is selected
- dd # Delete the current line
+ # Delete ~ yank text and delete from file
+ d # Delete whatever is selected
+ dd # Delete the current line
- p # Paste text in vim register after the current cursor position
- P # Paste text in vim register before the current cursor position
+ p # Paste text in vim register after the current cursor position
+ P # Paste text in vim register before the current cursor position
- x # Delete character under current cursor position
+ x # Delete character under current cursor position
```
## The 'Grammar' of vim
@@ -142,64 +144,75 @@ A few important examples of 'Verbs', 'Modifiers', and 'Nouns':
```
# 'Verbs'
- d # Delete
- c # Change
- y # Yank (copy)
- v # Visually select
+ d # Delete
+ c # Change
+ y # Yank (copy)
+ v # Visually select
# 'Modifiers'
- i # Inside
- a # Around
- NUM # Number (NUM is any number)
- f # Searches for something and lands on it
- t # Searches for something and stops before it
- / # Finds a string from cursor onwards
- ? # Finds a string before cursor
+ i # Inside
+ a # Around
+ NUM # Number (NUM is any number)
+ f # Searches for something and lands on it
+ t # Searches for something and stops before it
+ / # Finds a string from cursor onwards
+ ? # Finds a string before cursor
# 'Nouns'
- w # Word
- s # Sentence
- p # Paragraph
- b # Block
+ w # Word
+ s # Sentence
+ p # Paragraph
+ b # Block
# Sample 'sentences' or commands
- d2w # Delete 2 words
- cis # Change inside sentence
- yip # Yank inside paragraph (copy the para you're in)
- ct< # Change to open bracket
- # Change the text from where you are to the next open bracket
- d$ # Delete till end of line
+ d2w # Delete 2 words
+ cis # Change inside sentence
+ yip # Yank inside paragraph (copy the para you're in)
+ ct< # Change to open bracket
+ # Change the text from where you are to the next open bracket
+ d$ # Delete till end of line
```
## Some shortcuts and tricks
<!--TODO: Add more!-->
```
- > # Indent selection by one block
- < # Dedent selection by one block
- :earlier 15m # Reverts the document back to how it was 15 minutes ago
- :later 15m # Reverse above command
- ddp # Swap position of consecutive lines, dd then p
- . # Repeat previous action
- :w !sudo tee % # Save the current file as root
- :set syntax=c # Set syntax highlighting to 'c'
- :sort # Sort all lines
- :sort! # Sort all lines in reverse
- :sort u # Sort all lines and remove duplicates
- ~ # Toggle letter case of selected text
- u # Selected text to lower case
- U # Selected text to upper case
- J # Join the current line with the next line
+ > # Indent selection by one block
+ < # Dedent selection by one block
+ :earlier 15m # Reverts the document back to how it was 15 minutes ago
+ :later 15m # Reverse above command
+ ddp # Swap position of consecutive lines, dd then p
+ . # Repeat previous action
+ :w !sudo tee % # Save the current file as root
+ :set syntax=c # Set syntax highlighting to 'c'
+ :sort # Sort all lines
+ :sort! # Sort all lines in reverse
+ :sort u # Sort all lines and remove duplicates
+ ~ # Toggle letter case of selected text
+ u # Selected text to lower case
+ U # Selected text to upper case
+ J # Join the current line with the next line
# Fold text
- zf # Create fold from selected text
- zo # Open current fold
- zc # Close current fold
- zR # Open all folds
- zM # Close all folds
+ zf # Create fold from selected text
+ zd # Delete fold on the current line
+ zD # Recursively delete nested or visually selected folds
+ zE # Eliminate all folds in the window
+ zo # Open current fold
+ zO # Recursively open nested or visually selected folds
+ zc # Close current fold
+ zC # Recursively close nested or visually selected folds
+ zR # Open all folds
+ zM # Close all folds
+ za # Toggle open/close current fold
+ zA # Recursively toggle open/close nested fold
+ [z # Move to the start of the current fold
+ ]z # Move to the end of the current fold
+ zj # Move to the start of the next fold
+ zk # Move to the end of the previous fold
```
## Macros
@@ -210,9 +223,9 @@ you use, until you stop recording. On invoking a macro, it applies the exact
same sequence of actions and commands again on the text selection.
```
- qa # Start recording a macro named 'a'
- q # Stop recording
- @a # Play back the macro
+ qa # Start recording a macro named 'a'
+ q # Stop recording
+ @a # Play back the macro
```
### Configuring ~/.vimrc