Vim Setup and Basics
Describes how to setup vim using a popular vimrc and explains the basics.
Search and Replace
?
Up
g# # N Find n * g*
Prev Prev Prev / Next Next Next
Partial Current Match Down Match Current Partial
Match Word Word Match
Delete from cursor to the end of a search:
d/pattern/e<Enter>
Yank (copy) from cursor to beginning of previous “pattern”:
y?pattern<Enter>
Search and replace:
:%s/search/replace/
The previous searchs and repleaces only the first occurence of the pattern in each line of the current buffer %
.
To replace all occurences in all lines (not just the first) use:
:%s/search/replace/g
Other useful search flags:
:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]
c
Confirm or skip each matchi
Ignore caseI
Case-sensitiven
Show number of matches (non-destructive)p
Print matching lines
Use scopes for search to act on either the current line or the entire file:
:%s/a/b/
A leading percent (denotes the current buffer) searches all lines in the current file.
:s/a/b/
Omit the percent to search only the current line.
:.,`a s/a/b/
Complicated ranges are possible. This searches from the cursor (.
) to mark a
. Search ranges work with lines not characters.
Other ways to specify a line:
.
Current line+5
Five lines down-3
Three lines up1
Line one of buffer$
Last line of buffer%
All lines in buffer't
Position mark t/pattern/
Next line where pattern matches (Also try?patter?
)
To see the range, use visual mode v
. Use o
to reposition the cursor to the other end of the region.
Use the range specifier :'<,'> s/a/b/
to search in the visually selected region.
You can use global command to execute a command on all lines that match a pattern.
:[range]g[lobal]/{pattern}/[cmd]
#
Show matches with line numbersd
Delete matching linesy
Yank matching linesnormal {command}
Execute an extended sequence
Show lines and line numbers where pattern occures:
:g/pattern/#
Delete blank lines:
:g/^$/d
Yank lines after the one that match:
:g/pattern/+y
Comments