Vi编辑器的基本使用方法

vi编辑器是所有Unix及Linux 系统 下标准的编辑器,它的强大不逊色于任何最新的文本编 辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍 vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。
+ N* |# u% /4 S" /: K
& J& [4 k9 B$ G 1、vi的基本概念1 Y! E5 h( y9 j& B2 ^, y
  基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
* ~, k; ~) a9 F6 K/ h
; k3 G+ M5 n5 N5 Y1 ] 1)        命令行模式command mode)
! e& W" J8 U% ] % r: R: J4 /  O
  控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
1 N% s$ `8 Q# @3 k" C2 ?7 ]1 s
  w+ r3 U5 q# _8 a 2)        插入模式(Insert mode)
: U' y/ y. {2 R# C& U8 H4 s, v / m7 B, S; v6 j* G: G8 I
  只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。: H( i* P! D; E7 E, c* f8 ^4 J4 V

( M; s) T1 W* I& H# x' D0 { 3)        底行模式(last line mode)* /8 R3 w' x' s& s

$ G- k- g1 C1 j% m: S1 f   将文件保存或退出 vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
7 ?3 L, u. J* J: o0 Z6 W8 m  ~
5 H; e  z9 [) D 不过一般我们在使用时把vi简化成两个模式, 就是将底行模式(last line mode)也算入命令行模式command mode)。
" Z7 s6 k& ]7 E+ J % K! L+ V( @4 Z( s: J1 [, u1 p" R
2、vi的基本操作# f0 c6 B5 |$ x& o
a)         进入vi
8 ^% d9 p9 _/ [4 f 3 t: D8 d# l8 d. [3 B
  在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:
3 U5 o3 `" B& h
. u: A8 q, K5 R- B4 Z9 M' ^# C    $ vi myfile
* b( `- N4 x/ n& /5 h$ k
- M3 n5 u* N8 W' v( g 5 U1 L. O- q! b# y$ u6 }
  不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到 「插入模式(Insert mode)」再说吧!
  f2 x9 T2 U' L% Z6 Y. w. B! P
# b- H2 r# S* Q' g  A% /. B b)        切换至插入模式(Insert mode)编辑文件2 @+ r" Z" I3 o. i

1 m) v" r' J4 f+ a; Q1 /   在「命令行模式 (command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。9 U6 m3 o* }. /! s

1 F& w" x6 |9 o9 j: m$ l- Q- ?. j+ n c)        Insert 的切换 1 H: ^% p  [2 i

3 e" M/ u: b! g( P   您目前处于「插入模式 (Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。
4 v2 v; Y* @( }! J1 y9 F8 N + H8 k8 x/ E) J8 y
d)        退出vi及保存文件
在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:, B' /0 G7 }$ `# ?2 O. L% @
, [: W; g2 V  ^# ^0 K
: w filename  (输入 「w filename」将文章以指定的文件名filename保存)
) z/ I! g' R/ e) C
" `4 H; |* n" D( N# r8 s0 } : wq          (输入「wq」,存盘并退出vi)1 O8 f5 c% {( Q$ n

2 u5 y4 U+ q9 }+ U' B  p$ v : q!           (输入q!, 不存盘强制退出vi)
( g! d* T6 [0 /4 Q4 @; n 3 N9 j1 y! /0 {
  @  M) k! k# K
3、命令行模式(command mode)功能键
  y+ f4 c+ g7 @4 Z/ u; Q 1).       插入模式
4 s; /7 z$ t+ J2 v. e, A3 z; p 0 u1 z( v6 D+ D9 {) /) G
  按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
& W: l* z3 P( x5 {6 I
( J: m# x! @: y6 M   按「a」进入插入模式后,是从目前 光标所在位置的下一个位置开始输入文字;
, S: X5 {3 c( z- s  u/ ?+ |
: U/ q2 b$ [$ C1 t4 c0 r   按「o」进入插入模式 后,是插入新的一行,从行首开始输入文字。7 P* r' ?; o4 A; D) Q$ /$ N. C
4 D$ J8 R' _$ r3 e0 T; /- r
2).       从插入模式切换为命令行模式+ e9 a4 B! D5 d, E8 `- [

) /9 y# ~2 S1 D   按「ESC」键。
  R& f4 y- }  D3 M. Z! l
5 `6 n5 f' K2 M 3).  移动光标
& [( ^1 s3 o/ ~4 w) L5 }3 x ) f6 o: }4 g, O& T! {+ q
  vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。8 U9 K' W% v4 f) c4 [' R
& d5 C( S8 e- o4 U. L4 y
  按「ctrl」+「b」:屏幕往“后”移动一页。, ^. }$ ^0 O$ i6 m% a* `/ k$ n  E1 A

+ T% p3 m5 ?1 t4 S# b* v$ t   按 「ctrl」+「f」:屏幕往“前”移动一页。* O/ W2 j1 R% d, d6 S
# c7 f9 S2 h5 a5 l$ L. r
  按「ctrl」+「u」:屏幕往“后”移动半页。+ g! W: U- L& o- E

0 E' O- Q+ `6 u5 a3 {  d1 [) F   按 「ctrl」+「d」:屏幕往“前”移动半页。3 z2 {9 ~! U# d: ^' z* C( U' `) z

9 T, [  ^! d7 u* |- O2 /   按数字「0」:移到文 章的开头。$ a2 p6 I8 V9 e8 N- i! ^( t' P/ z
, ]  u0 k( M9 e/ h  a7 t" x& z
  按「G」:移动到文章的最后。1 s0 P; T( J, k. F. o3 o- Y' {
- f' K2 e5 @, {0 k( p/ Z; k* R' J
  按「$」:移动到光标所在行的“行尾”。7 M; x4 {# o  /
$ V. U1 Q: G0 a$ g9 ?8 |2 R: Y
  按「^」:移动到光标所在行的“行首”
. @& g& i1 R6 d) g" Z5 c : `% J3 H& r7 N
  按「w」:光标跳到下个字的开头
* J6 p7 s& J5 d' p2 I % a% F) I5 J9 {* ^- D8 W3 p
  按「e」:光标跳到下个字的字尾
! j. G) A7 F. z# E3 c( T0 ~ 6 O& }, `0 M5 p- x
  按「b」:光标回到上个字的开头
( f& t" R2 H5 W, q& U7 X
0 |' {3 d7 d) P2 |0 U& B   按「#l」: 光标移到该行的第#个位置,如:5l,56l。
  P) Z" I2 k2 J9 I+ t4 |& r 8 f0 C; q. Z! m/ n6 u5 o0 y9 p
4).  删除文字. j2 W& @4 g% U3 r
& S2 v% I0 y& g% N
  「x」:每按一次,删除光标所在位置的“后面”一个字符。" b* y. H1 f( I# U
6 o' Z: U4 L2 ~  Z5 }8 ]' y1 n
  「#x」:例如,「6x」表示删除光标所在位置的“后面”6个字符。$ |6 f. e% }; u7 U
/ e* k' d3 Y+ U8 X: L& e7 I
  「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符。
& /  A2 T. g! A - F* y6 t. H6 K7 I. h
  「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符。
( S# i6 c' [. K7 `, G
2 i- Y; c2 P/ |0 v   「dd」:删除光标所在行。
- o& r# b# U. r. w8 G" O 5 K% y" I0 w7 ^1 G& r& Q
  「#dd」:从光标所在行开始删除#行
5).  复制
( r! c1 ]4 Y& H) t% N- ~' l # l4 U, {; N* r* ]
  「yw」:将光标所在之处到字尾的字符复制到缓冲区中。8 v$ t! s& |7 v7 R# M0 n

5 B5 P2 ]7 a$ r   「#yw」:复制#个字到缓冲区
6 N' l8 D2 W. J& D0 |( S! Y- v
- y# C( Q% G: H- A1 F8 f   「yy」:复制光标所 在行到缓冲区。
% D- ^6 D  A# V% H * |6 j4 P8 K7 o
  「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。; C+ _" m$ A' h1 ~$ z5 {, ^

8 m8 h1 Z% Z" p! B/ x   「p」:将缓冲区内的字符贴 到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
" S/ }4 e5 G7 b' S, I 1 |; j( P, {# Y- P* e3 g
6).  替换
% U9 T! D7 f  j) N! @+ M
+ p0 z+ {" F6 D: T6 O; U; x% V& /    「r」:替换光标所在处的字符。
* R) c+ c, S: @- N- Q0 a' L; T ! p8 Y, @: C2 c* j2 m; i' ]
  「R」:替换光标所到之处的字符,直到按下「ESC」键为止。' K0 P% q5 X8 ~
+ w( _6 r$ y4 s  h
7).  回复上一次操作
% |4 h! b6 i9 |) p 6 k: ~8 k3 V3 h& s9 Y
  「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。% F+ T/ j& T$ M0 ?1 n
/ b, s. O# ?* {' ]
8).  更改; b0 j$ @! Z+ `( W
7 w" ~  t# M9 v+ N8 ?6 L, v" d6 X
  「cw」:更改光标所在处的字到字尾处2 l# E4 M4 u, ~

0 v% p3 y6 X; h# d2 v# W+ m   「c#w」:例 如,「c3w」表示更改3个字+ /8 _/ J6 L' S* [, [0 m; p/ n9 A$ V
" j* Q6 q1 m( [8 U( o( i
9).  跳至指定的行% G0 {: /6 U6 d; q# q7 A
+ d. p" ^/ b* _
  「ctrl」+「g」列出光标所在行的行号。9 K4 m1 o, A* ]$ c

1 W7 k2 g: P2 l" B- y" s   「#G」:例如, 「15G」,表示移动光标至文章的第15行行首。
' w( r" h8 B/ I/ [ 1 s# w9 h& H* ?9 r  [
4、Last line mode下命令简介+ c9 D0 O2 u$ V
  在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。) b& E; ?  W! r1 d

6 O2 d6 _" m5 w( P+ S5 i A)       列出行号: M) F9 v7 X, b, q! p3 s
$ J, c# A* M. z+ S+ I$ p
 「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。 2 U/ C! m7 {& {

2 f6 k: W/ x1 @1 X# R" E* w1 d B)        跳到文件中的某一行
+ Y- N/ @- }( b8 a( a* }) Z 7 B& ^0 G1 p: e/ ?; b$ x+ L
 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。  I: q5 A+ X; q3 O/ I  B# ]
; Z1 v  w) }. n2 H
C)       查找字符1 /9 U+ X! k1 J4 c

. f& }! C" N3 S: x% ^, r, Y  「/关键 字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。
1 /; n$ h; A' t
1 y1 u7 j4 M: A0 C2 f2 H7 m2 t+ M  「? 关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。
( `* d9 g2 `- B; I& D- W' |- d/ ~
& N' U, c/ z3 J' p/ a( / D)       保存文件! /, s; Y8 E2 A

: B8 ]+ n/ i) t% u0 ]2 {  「w」:在冒号输入字母 「w」就可以将文件保存起来。9 X/ J7 i8 C/ ]- S* j
1 O( _. A. ~( r- ^
E)        离开vi
8 F/ ~- F% G0 c
, m6 J- p% R7 X" g2 R  「q」:按「q」就是退出,如 果无法离开vi,可以在「q」后跟一个「!」强制离开vi。
! U. i, /" c1 t3 k' v7 `  I 3 Q7 t) E: M2 d
 「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。
5、vi命令列表
3 L( Y. ?5 c/ d6 R( J3 `" O 1、下表列出命令模 式下的一些键的功能:
3 c( ]$ z! ^7 W' G$ l ) L/ m, `0 V; ~! J
h
# /0 l8 q1 d7 i 左移光标一个字符
% V- e- c7 S, C$ a% ?9 A- i 6 {/ t4 M2 p8 j2 ]! t+ g
l, g5 f4 G: i7 I$ F
右移光标一个字符$ g0 M. a- d( {5 B& J+ q
" P$ m& f& B. B3 J
k. /4 L* c4 t! r4 M9 c# d
光标上移一行9 z: e  @8 ^$ m& s5 k  }# j0 P

% M6 B! n9 F; r, t0 T; ?; i+ b" q0 f j/ D  P  a1 r' d5 r* @( @
光标下移一行" E7 f+ A) x6 p8 `  N# x6 K

" k! `* {  R5 /3 ?; i; / ^
) I, p% }# R6 M% D- l 光标移动至行首9 y2 M3 t, V: {4 ~. a* }  S' B

: B# G  M6 M! [1 }( x$ t0 p9 j; b 0
1 i& `- n4 d& O5 Q" N$ _& /, g1 P 数字“0”,光标移至文章的开头# {/ x& P# [) Z( q% o

* f2 {+ k3 v; X  l. L- t G
; V5 w0 F2 x! l5 r  X 光标移至文章的最后
$ _3 `0 j) d* H" X, E/ |/ g & h/ O" r, y. p+ }0 c+ f
$! @8 ], m. R. U3 Y) V( J4 l
光标移动至行尾; k8 c8 O" f) H$ k

6 X' r& E5 g! |- m* q# r- l! U& k) ? Ctrl+f1 H0 t/ ?9 S! d$ o; T6 K! o
向前翻屏5 X9 v3 @+ y8 b
# X; C" h. j2 m7 y( G
Ctrl+b
6 b( e/ S4 w8 H0 `2 H. R 向后翻屏
5 |& E3 z% W3 r# M0 c9 ^- x0 N0 F' f' v " ~8 @( S7 r4 y9 J
Ctrl+d& D8 v8 b0 x1 l. n& O9 U
向前翻半屏
2 n% }& F- d* M6 C+ p 1 ]% i& Q" c, ?) }7 f4 ^
Ctrl+u
8 e) t2 G3 T& ?+ q1 M 向后翻半屏
* r4 `; Z- L3 k0 u. S
8 Y; i( s0 ?  /+ v3 k# G, z! m i
8 W) W* H9 D) w  Y 在光标位置前插入字符$ }# [5 S5 |0 r" b' H( y8 ^7 }

6 _+ H5 t- n1 Y/ _ a4 `6 j8 ?# v2 j
在光标所在位置的后一个字符开始增加
# `7 e' G4 v& S2 }- ?2 o: I3 D! w7 J
! q: ?! v1 {$ @! u o
* Z- m/ l, C. f1 l 插入新的一行,从行首开始输入+ V. {; z2 H6 m( N
) g- c3 ?3 N# b) c4 I) {2 k, k
ESC
  M- S5 ]% I: R* L' e7 Y 从输入状态退至命令状态
% m2 |1 Q" s% s8 X6 U7 X
- |' }! M7 a4 @0 C# k x
- @% T; i! g7 t4 V1 h2 t* A9 V 删除光标后面 的字符
; i0 g1 f: _5 E, O+ q0 o
, i: h! M3 Z1 S7 G3 n #x4 T( z  h, z3 h' z
删除光标后的#个字符
2 O3 |, W; x9 q2 |# a 2 i2 |: n' s. K. [" l
X. L6 M/ t3 N7 w
(大写X),删除光标前面的字符" H& j2 I. J2 H, N
! L7 S) /5 K' f* r6 |& q1 y) Q
#X: t  A% m7 u% d3 R
删除光标前面的#个字符
" T$ l" f6 G; G" ?$ ?
3 Y0 x$ @; C5 A. h- { dd# K1 N) m3 |% B$ D
删除光标所在的行
, a* o' J/ _  Z" q. P& C8 W1 K
; Q& Z4 j, n9 b, x' e" h #dd( e3 m7 @% `9 U" a) z( u" s
删除从光标所在行数的#行
yw
) b1 A$ D! x6 h' h5 @8 w 复制光标所在位置的一个字
2 G) H3 E9 _. A) y6 U2 A: i
) w2 M+ v* Z1 Z/ K; p #yw
9 E5 V/ I: n5 `' @; P9 I1 W7 y 复制光标所在 位置的#个字
$ d5 i0 e' b2 @6 e 5 u- u& ?% J* P9 Y) B
yy
( {$ a7 l1 L& s. q3 a6 Y3 J 复制光标所 在位置的一行
/ {# e( k' ~/ _0 ]) L( e
) z0 X6 b, K3 l) O/ a" x #yy
& P5 x$ J  p8 z2 k( v" l 复制从光标所在行 数的#行/ V  W5 K5 J  C+ Z( E
) r# p! a! [% i
p5 s* i& o: t) [, y) G, s( b' Z. L
粘贴* e- G( U6 a( d$ b1 G7 h6 ?
% x: @# C, J/ ]9 ^) Z- a
u+ a/ w% V  m- x/ `5 T. D9 T
取消操作
  z8 @/ h+ J! K2 t
$ y( V4 D0 q# |' x, v" I$ t cw0 Y! u1 W4 n8 f% H0 [+ P8 Q
更改光标所在位置的一个字# y, e& }/ V4 K7 p
8 i( F0 z4 q2 o% `; @
#cw
/ u$ A) B" ?7 D- R7 X/ n5 g" y 更改光标所在 位置的#个字  q, M& Y( I8 k' l! a
2 ]9 m5 G0 y1 W6 K  {( j
: s6 I6 F9 U- P, ?. D- P7 k
2、下表列出行命令模式下的一些指令
' A1 `& w4 _  R; N, T  i5 Y# y! ] w filename% ^8 S: i/ |" N, z2 t
储存正在编辑的文件为filename
3 L& @2 b8 @' Y4 /+ X/ f5 I$ f/ Q
+ y- Z0 /4 U* E8 c wq filename: ?3 }, p! D4 D4 e0 v# q
储存正在编辑的文件为filename,并退出vi8 u: e: C: ?4 a; q" U. H$ B

' j  E/ L3 /% D3 r# d- }- O! S$ c q!4 d1 A% h, h5 B5 P  j' D
放弃所有修改,退出vi
) s6 R; /8 J( C. Q( }
5 W/ S% ~5 O. y" H8 p4 T2 z* W- V set nu2 v; O8 B# }: h8 c" H) _
显示行号
* F. d( x( U4 f. p- @4 ]7 {7 O9 Z+ T $ `8 U% E* X( p5 a
/或?
4 v7 C! j# j/ c 查找,在/后输入要查找的内容
: x- ~% Q4 q% h+ [) k/ j7 n3 }7 J
7 K: Z- {. I! V n+ l4 C2 S/ ]7 b4 M- ]
与/或?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?联用)继续查找,直到找到为止。
7 p3 a) U! {& V
) w+ y0 w" v/ r7 A8 c/ z
9 ^4 P4 N# c" v) R3 W 对于第一次用vi,有几点注意要 提醒一下:
+ w5 g' x" u4 K3 W0 z8 p- P$ d3 {6 h 1、 用vi打开文件后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。切换方法:在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。   Q) W# E1 @: f' Y
2、编辑好后,需从插入模式切换为命令行模式才能对文件进行保存,切换方法:按「ESC」键。 8 f9 J- J( o3 B' q6 h$ c3 |% w
3、保存并退出文件:在命令模式下输入:wq即可!(别忘了wq前面的:)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值