Advanced VI Editor Commands
For experienced users looking to enhance their editing efficiency:
Example: Use :s/old/new/g to replace all occurrences of “old” with “new” in the current line.
Command |
Effect |
:set nu |
Display line numbers in the editor. |
:set nonu |
Hide line numbers. |
:wq |
Save changes and exit the editor. |
😡 |
Save changes and exit (similar to :wq). |
:e filename |
Open a different file for editing. |
gg |
Go to the first line of the file. |
G |
Go to the last line of the file. |
/pattern |
Search for ‘pattern’ in the file. |
n |
Repeat the last search forward. |
N |
Repeat the last search backward. |
Using Visual Mode for Selection
To select text for editing:
Example: Press v, then use arrow keys to select text, followed by commands like d to delete or y to yank (copy).
Command |
Effect |
v |
Select text character by character. |
V |
Select entire lines. |
Ctrl + v |
Select a block of text (visual block mode). |
d |
Delete selected text. |
y |
Yank (copy) selected text. |
Using Macros for Repetitive Tasks
To record and execute macros:
Example: Press q a, perform actions, then press q again to stop recording. Execute with @a.
Command |
Effect |
q{register} |
Start recording a macro into {register} (e.g., qa). |
@{register} |
Execute the macro stored in {register}. |
@@ |
Repeat the last executed macro. |
Sophisticated Search and Replace
To perform complex replacements:
Example: Use :%s/old/new/gc, where ‘c’ prompts for confirmation before each replacement.
Command |
Effect |
%s/pattern/replacement/gc |
Replace ‘pattern’ with ‘replacement’ globally with confirmation. |
:g/pattern/d |
Delete all lines matching ‘pattern’. |
:v/pattern/d |
Delete all lines not matching ‘pattern’. |
Navigating Between Files with Buffers
To manage multiple files efficiently:
Example: Use commands like :bn (next buffer) or :bp (previous buffer).
Command |
Effect |
:ls |
List all open buffers. |
:b{number} |
Switch to buffer {number}. |
:bd |
Delete a buffer from the list. |
:bn |
Go to the next buffer. |
:bp |
Go to the previous buffer. |
Differentiating Between Modes with Highlighting
To visually distinguish between modes:
Example: Set syntax highlighting with: :syntax on in command mode.
Command |
Effect |
:syntax on |
Enable syntax highlighting. |
:syntax off |
Disable syntax highlighting. |
:set hlsearch |
Highlight search results. |
:set nohlsearch |
Turn off search highlighting. |
:set wrapscan |
Wrap search at end of file. |
Scripting and Command-Line Editing in VI
To automate tasks using scripts:
Example: Use :source script.vim to execute commands from a script file.
Command |
Effect |
:source filename.vim |
Execute commands from filename.vim. |
:r filename |
Read content from filename into current buffer. |
:w !command |
Write output of current buffer to an external command. |
:!command |
Execute an external command without leaving vi. |
:sh |
Open a shell prompt while in vi. |
Advanced Navigation Commands in VI
For experienced users looking to enhance their navigation skills in the VI editor:
Example: Use :10 to move the cursor directly to line 10 of the file.
Command |
Effect |
0 |
Move to the beginning of the current line. |
$ |
Move to the end of the current line. |
w |
Move forward to the beginning of the next word. |
b |
Move backward to the beginning of the previous word. |
e |
Move to the end of the current word. |
H |
Move to the top of the screen. |
M |
Move to the middle of the screen. |
L |
Move to the bottom of the screen. |
nH |
Move down to the nth line from the top of the screen. |
nL |
Move up to the nth line from the bottom of the screen. |
Scrolling Commands for Efficient Navigation
To scroll through your document without moving the cursor:
Example: Use Ctrl + d to scroll down half a page, or Ctrl + u to scroll up half a page.
Command |
Effect |
Ctrl + f |
Scroll forward one full screen. |
Ctrl + b |
Scroll backward one full screen. |
Ctrl + d |
Scroll down half a screen. |
Ctrl + u |
Scroll up half a screen. |
Navigating Between Lines and Characters Quickly
To move through lines and characters efficiently:
Example: Type 5j to move down five lines at once.
Command |
Effect |
{number}j |
Move down {number} lines. |
{number}k |
Move up {number} lines. |
{number}h |
Move left {number} characters. |
{number}l |
Move right {number} characters. |
f{char} |
Move forward to next occurrence of character {char}. |
F{char} |
Move backward to previous occurrence of character {char}. |
Navigating with Marks and Jumps
To set marks for quick navigation:
Example: Use ma to set mark ‘a’, then jump back with ‘a.
Command |
Effect |
ma |
Set mark ‘a’ at current cursor position. |
‘a |
Jump back to mark ‘a’. |
`a |
Jump back to exact position of mark ‘a’. |
:marks |
List all set marks. |
Navigating with Search Commands
To quickly find text in your document:
Example: Use /search_term to search for “search_term”.
Command |
Effect |
/pattern |
Search forward for ‘pattern’. |
?pattern |
Search backward for ‘pattern’. |
n |
Repeat last search in same direction. |
N |
Repeat last search in opposite direction. |
Edward Dan
Monday 21st of October 2024
Kudos to the you for compiling such a comprehensive guide. Keep up the excellent work!