A common occurrence in text editing is to replace one word or phase by another. To locate instances of particular sets of characters (or strings), use the following commands.
/string
search forward for occurrence of string in text
?string
search backward for occurrence of string in text
n
move to next occurrence of search string
N
move to next occurrence of search string in opposite direction/noun <enter>
press n
search for same word in farward direction
fc
find next charecter c on the current line
Fc
find previous charecter c on the current line
after searching try this ctrl+O and ctrl+I observe the differences
search and replace globally:
:[address]s/search_string/replace_word[/g]
searches a word in whole file and tries to replace all the line
:s/bigger/biggest
replaces the string bigger on current line with biggest
:1,s/ch1/ch2/g
searches and replace every occurance of ch1, before or on the current line, with string ch2
:1,$s/ten/10/g
searches and replace every occurance of ten, with 10 globally
[eg: ten -> 10 ; tenthstand -> 10thstand; tenfor -> 10for]
:1,$s/<ten>/10/g
replace every occurance of word ten with the 10
[1,$ with % in some version ]
[eg: ten -> 10 only ]
:.,.+10s/every/each/g
replace every occurance of the string "every" by the string "each" on the current line the tenth floolwing line
[eg:everything -> eachthing]
:s/\<short\>/"&"/
replace the word short on the current line with "short" with quotation marts
5 - line 5
77,100 - lines 77 throug 10inclusive
.,$ - from current line throuth end of the buffer
1,$ - entire work buffer
% - entire work buffer
1,. - beginning of work buffer through current line
.,.+10 - current line through 10th following line
saving a file and working with files:
:r filename<Return>
read file named filename and insert after current line
(the line with cursor)
(the line with cursor)
:w<Return>
write current contents to file named in original vi call
:w newfile<Return>
write current contents to a new file named newfile
:12,35w smallfile<Return>
write the contents of the lines numbered 12 through 35 to a new file named smallfile
:w! prevfile<Return>
write current contents over a pre-existing file named prevfile some basic commands:
General Startup To use vi: vi filename To exit vi and save changes: ZZ or :wq To exit vi without saving changes: :q! To enter vi command mode: [esc] A number preceding any vi command tells vi to repeat
that command that many times.
Cursor Movement
j move down
k move up
l move right (spacebar)
[return] move to the beginning of the next line
$ last column on the current line
0 move cursor to the first column on the
current line
^ move cursor to first nonblank column on the
current line
w move to the beginning of the next word or
punctuation mark
W move past the next space
b move to the beginning of the previous word
or punctuation mark
B move to the beginning of the previous word,
ignores punctuation
e end of next word or punctuation mark
E end of next word, ignoring punctuation
H move cursor to the top of the screen
M move cursor to the middle of the screen
L move cursor to the bottom of the screen
G move to the last line in the file
xG move to line x
z+ move current line to top of screen
z move current line to the middle of screen
z- move current line to the bottom of screen
^F move forward one screen
^B move backward one line
^D move forward one half screen
^U move backward one half screen
^R redraw screen
( does not work with VT100 type terminals )
^L redraw screen
( does not work with Televideo terminals )
r replace character under cursor with next
character type
R keep replacing character until [esc] is hit
i insert before cursor
a append after cursor
A append at end of line
? finds a word going backwards
/ finds a word going forwards
f finds a character on the line under the
cursor going forward
F finds a character on the line under the
cursor going backwards
t find a character on the current line going
forward and stop one character before it
T find a character on the current line going
backward and stop one character before it
; repeat last f, F, t, T
. repeat last command
u undoes last command issued
U undoes all commands on one line
xp deletes first character and inserts after
second (swap)
J join current line with the next line
^G display current line number
% if at one parenthesis, will jump to its mate
mx mark current line with character x
'x find line marked with character x
NOTE: Marks are internal and not written to the file.
Any commands form the line editor ex can be issued
upon entering line mode.
To enter: type ':'
To exit: press[return] or [esc]
copies (reads) filename after cursor in file
currently editing
:r filename
:w saves the current file without quitting
:# move to line #
:$ move to last line of file
SHELL ESCAPE
executes 'cmd' as a shell command.
:!'cmd'
No comments:
Post a Comment