Linux Commands - Common vi editor commands
                
            
            
            
             
            
            
                           
                
	
		
	
		
	
		
	
		
	
		
            
            
            
                
    
    
     
            
                
                    by
                    Jeremy Canfield  |  
                    Updated: May 25 2024
                    
                          |  Linux Commands articles
                    
                    
                    
                
            
            Toggle between Command / Insert / Replace Modes
| Mode | Command | What it does | 
| Command | i | Changes the mode to "Insert" with the cursor before the current position | 
| Command | a | Changes the mode to "insert" with the cursor after the current position | 
| Command | I | Changes the mode to "insert" with the cursor at the beginning of the current line | 
| Command | A | Changes the mode to "insert" with the cursor at the end of the current line | 
| Command | o | Changes the mode to "insert" and inserts a new line below the current line | 
| Command | O | Changes the mode to "insert" and inserts a new line above the current line | 
| Command | R | Changes the mode to "replace" and lets you replace characters | 
| Insert | esc | Changes the mode to "Command" | 
Save / Quit
| Mode | Command | What it does | 
| Command | :w | Writes / save | 
| Command | :q | Quits vi editor | 
| Command | :q! | Quits vi editor without saving | 
| Command | :x | Write, save, and exit | 
| Command | Shift ZZ | Write, save, and exit | 
| Command | :e! | Returns the document to the last saved copy (undo) | 
Copy / Paste / Change / Replace / Delete Text
| Mode | Command | What it does | 
| Command | yy | "yank", copies the entire line | 
| Command | yw / y2w / y3w | "yank", copies the word / copies 2 words / copies 3 words | 
| Command | p (lower case) | "paste", after the cursor | 
| Command | P (upper case) | "paste", before the cursor | 
| Command | cc | "change", erases the entire line so you can "change" the line | 
| Command | cw / c2w / c3w | "change", allows you to change the word you are on / change 2 words / change 3 words | 
| Command | r | Let's you replace the character the cursor is on | 
| Command | :%s/old/new/g | Finds every occurrence of "old" and replaces it with "new". | 
| Command | :%s/old/new/gi | Finds every occurrence of "old" and replaces it with "new". i means "old" is not case sensitive. | 
| Command | :%s/old/new/gc | Finds every occurrence of "old" and replaces it with "new". c means there is an interactive prompt. | 
| Command | dd | Deletes entire line | 
| Command | dw / d2w / d3w | Deletes the word the cursor is on / deletes 2 words / deletes 3 words | 
| Command | u | undo the last change | 
| Command | U | undo all the changes to the current line | 
Searching
| Mode | Command | What it does | 
| Command | / | Searches, starting at the beginning of the file | 
| Command | ? | Searches, starting at the end of the file | 
| Command | n | Search down for the next match of the string | 
| Command | N | Search up for the next match of the string | 
Moving the cursor
| Mode | Command | What it does | 
| Command | h | Moves the cursor to the left | 
| Command | j | Moves the cursor down one line | 
| Command | k | Moves the cursor up one line | 
| Command | l | Moves the cursor to the right | 
Did you find this article helpful?
If so, consider buying me a coffee over at 