in header_common.htm --> -->

52AV手機A片王|52AV.ONE

 找回密碼
 立即註冊
快捷導航

Yahoo!奇摩搜尋
熱搜: 手機A片
Google奇摩搜尋
熱搜: 手機A片
     
查看: 3352|回復: 0
打印 上一主題 下一主題

[linux指令] Linux下的文字編輯器-vi詳細說明

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2014-11-18 08:47:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

本帖最後由 IT_man 於 2017-5-6 23:16 編輯 " k/ w) e- }4 K/ K! G

( @9 J2 z; B: y! ~! zvi指令說明(完整版)
7 u3 e6 }) v# ~
  • vi 的操作模式( Y/ d4 h* r; s/ J/ W7 B

' B* r& R( _0 {' E8 E# E9 I

vi 提供兩種操作模式:輸入模式(insert mode)指令模式(command mode)。當使用者進入 vi 後,內定即處在指令模式下,此刻鍵入之任何字元皆 被視為指令。在此模式下可進行刪除、修改等動作。若要輸入資料,則需進入輸入模式。

  • 輸入模式. c% I  B, [. Q. f) t% |) p0 F$ V

+ E& K8 p) i4 R4 R. }5 W
       如何進入輸入模式9 y# V& I7 I, n$ B' D
                a (append)    由游標之後加入資料。/ |9 L0 E: C; ~
                A                   由該行之末加入資料。
2 u9 H- [! e0 g- i                i (insert)        由游標之前加入資料。: I; _/ N% |* G5 |; N. W
                I                   由該行之首加入資料。, |) q* t" ?% C- [" A. Z! O  E
                o (open)       新增一行於該行之下供輸入資料之用。! L  V0 C/ a# g4 r+ B6 ~% f
                O                  新增一行於該行之上供輸入資料之用。; t0 {9 M. r1 G# k" v0 J9 t5 W1 ?+ p
       如何離開輸入模式
" G( N  y/ f  f5 b1 O, h             《ESC》          結束輸入模式。
4 k" T; Y+ [/ {" @+ w
  • 指令模式
    1 D9 F: z5 R: i0 ]9 V- f

- I4 {3 M4 N) a& i5 o/ T0 s( o, N
1.游標之移動+ ^, @+ m3 k; f
              h       向左移一個字元。5 \' u, ]9 p! f: j0 D( `7 _. q, |4 U
              j       向上移一個字元。
4 R, P9 y; {% _9 x& e" W9 s              k       向下移一個字元。
; X. v$ E4 C8 i) ~+ v              l       向右移一個字元。
) z7 O7 {' j2 `( Z; {6 q              0       移至該行之首
" [6 {3 Y0 U1 j0 N, l; s7 ^9 B# ?              $       移至該行之末。
7 t" o( q' D3 L% [* q              ^       移至該行的第一個字元處。
# S, T" E& l  u# g* Q              H       移至視窗的第一列。
6 T) I& ^, ]- Y7 f! P  E              M       移至視窗的中間那列。
  ]! p8 I' w: }2 m. l" F              L       移至視窗的最後一列。# F9 q! Y# `9 ]4 u1 K  A
             G       移至該檔案的最後一列。1 k7 s" v' ^7 ^4 o0 o3 d. v; x
             +       移至下一列的第一個字元處。3 ]7 {( Z4 k# `2 _5 A3 n, c
             -       移至上一列的第一個字元處。; u4 x5 q. L, B% z; _! Y, `# k
             (       移至該句之首。 (註一)
$ C# O$ U4 N" y, K7 q             )       移至該句之末。
# T2 T4 Q+ [  _% a1 F             {       移至該段落之首。 (註二)- S* P! [* W- |
             }       移至該段落之末。/ ?# y; v9 x: u/ C
             nG      移至該檔案的第 n 列。
5 c8 _, ?1 ~2 k- c8 y$ j             n+      移至游標所在位置之後的第 n 列。
' W0 Y. X! R+ m: v$ V$ L. @             n-      移至游標所在位置之前的第 n 列。  r3 ?/ C* o- z
            <Ctrl><g>       會顯示該行之行號、檔案名稱、檔案中最末行之行號、游標所在行號佔總行號之百分比。! ]- Z' a3 b( v" B
            註一:句子(sentence)在vi中是指以『!』、『.』或『?』結束的一串字。) ~7 K/ x# |- Y
            註二:段落(paragraph)在vi中是指以空白行隔開的文字。" @# M2 o$ u9 S

  I9 ~; y6 \5 k# A1 D- l5 Z1 D: s5 M2.視窗的移動       <Ctrl><f>       視窗往下捲一頁。
$ f* D4 N: ]: {/ h           <Ctrl><b>       視窗往上捲一頁。2 ]4 N; M9 b" U8 u  N3 @# e8 F! e
           <Ctrl><d>       視窗往下捲半頁。& x7 q  R0 Y: T7 [/ ^
           <Ctrl><u>       視窗往上捲半頁。
% Q9 f  }1 `) p; V7 F4 s. ?           <Ctrl><e>       視窗往下捲一行。/ E) x% h. `. X: X
           <Ctrl><y>       視窗往上捲一行。3 A5 u. {" c; l  Z: L

$ h$ [. ?0 C: @$ Q/ K& f$ X3.刪除、複製及修改指令介紹 (此單元較少使用)$ c$ ^1 p# y! k: t! [& _* A% |
       d(delete)、c(change)和y(yank)這一類的指令在 vi 中的指令格式為:
/ Q: z: @/ Z  m9 i0 ?/ N       Operator + Scope = command
- {6 u' t9 \) i9 O) f  Y9 {: Q       (運算子)   (範圍)
0 a) h+ n! \1 A0 s( @       運算子:/ T1 Q1 s' C4 c/ w2 u
       d       刪除指令。刪除資料,但會將刪除資料複製到記憶體緩衝區。! h- F6 G8 o# \$ _" j( k
       y       將資料(字組、行列、句子或段落)複製到緩衝區。) ^: d; F  W. A( y7 `3 E
       p       放置(put)指令,與 d 和 y 配和使用。可將最後delete或yank的資0 @8 E/ Q4 F  ~; @, D- c2 l5 ?& d
                料放置於游標所在位置之行列下。
. b5 `6 {6 b) W       c       修改(change)指令,類似delete與insert的組和。刪除一個字組、句& G% z  I, L0 B# l. [( J
                子等之資料,並插入新鍵資料。
9 ?7 A  x# F; |: [' g. k3 S       範圍:& x9 w$ D/ _1 \. b; K& ?
       e       由游標所在位置至該字串的最後一個字元。7 g- h0 v! H. D% N6 v5 T7 G) L8 y
       w       由游標所在位置至下一個字串的第一個字元。9 u& E! g9 _0 p' b% f! {- K* C
       b       由游標所在位置至前一個字串的第一個字元。, C7 K! q+ J7 `; x
       $       由游標所在位置至該行的最後一個字元。% ^! g' i8 {: Y
       0       由游標所在位置至該行的第一個字元。8 X$ C; z% c3 I4 w+ x( K: N6 ]1 W! C
       )       由游標所在位置至下一個句子的第一個字元。. o5 {7 g, C+ \- e2 q# L. F
       (       由游標所在位置至該句子的第一個字元。' y" h# \! T$ ^+ B1 B6 R% ]
       {       由游標所在位置至該段落的最後一個字元。
5 _+ V/ Q5 e: }. J7 a       }       由游標所在位置至該段落的第一個字元。! ]9 |' q+ [  ?) c: J+ |+ @5 m" A
       整行動作) n  ^$ h2 o, i8 Q4 ]1 T
       dd      刪除整行。
: A2 d: R* r4 n+ A1 \" r/ n. r       D       以行為單位,刪除游標後之所有字元。
  ]' s3 g9 [; Q1 `       cc      修改整行的內容。5 }% N/ M- a! X* X  S2 K1 t
       yy      yank整行,使游標所在該行複製到記憶體緩衝區。% B/ p4 v1 ^" r0 ?6 v* ?2 x

/ O1 U- |  P0 U" _4.刪除與修改
; O! c; A8 a: J: g       x       刪除游標所在該字元。
0 j( o. U7 U9 }       X       刪除游標所在之前一字元。
# V( a9 s3 G9 ~, F* r8 Q       dd      刪除游標所在該行。
  R# w3 f1 I$ A# K* i; y8 h, E; c       r       用接於此指令之後的字元取代(replace)游標所在字元。1 ?) c0 C. \' u; i7 ]
                如: ra 將游標所在字元以 a 取代之。0 Z9 W- w* K4 X) o1 h0 K4 Y% ]3 h
       R       進入取代狀態,直到《ESC》為止。+ b/ k& D# q7 d9 h
       s       刪除游標所在之字元,並進入輸入模式直到《ESC》。
0 `% }! J7 c7 _3 {, Z       S       刪除游標所在之該行資料,並進入輸入模式直到《ESC》。/ y, B1 d! ^3 n% j% ?+ f5 N
) R9 y( f0 \/ o9 n4 {, K
5.搬移與複製
8 |/ L4 J9 L4 F8 @       利用delete 及 put 指令可完成資料搬移之目的。1 d1 r, ]8 W- Q" f7 Y7 S: r  k* X
       利用yank 及 put 指令可完成資料複製之目的。' f4 O* ~+ n  v4 w
       yank 和delete 可將指定的資料複製到記憶體緩衝區,而藉由 put 指令
' t" `6 U8 t+ v) }+ x. b       可將緩衝區內的資料複製到螢幕上。
2 r. P+ }" m2 A) O" S* U. R6 o: V       例:; f, X7 A3 t# u5 g. A# r7 g& _( I
       搬移一行        ‧在該行執行 dd0 E7 Y5 @. o8 I. n, C
                        ‧游標移至目的地# C& w5 A9 t9 V5 J' y* u" y5 v/ Z2 ]* G
                        ‧執行 p% L& a7 d5 R* H3 V; e$ d
       複製一行        ‧在該行執行 yy
6 K% z1 a  \( q6 C& U                        ‧游標移至目的地
* V& j  H& V' ^                        ‧執行 p; o: ]( Q; n9 c& P( n. `

, |# H+ z8 c$ D, y6.指令重複
. t) G! B0 B( V, V8 q! |6 c* h       在指令模式中,可在指令前面加入一數字 n,則此指令動作會重複執行 n1 b8 P0 }% h! u. T/ T9 y
       次。
! S+ P, i- m$ I1 a, O       例:' f  v: q3 ^2 G: d( W. ~' u1 b
       刪除10行                ‧10dd/ r/ S, T: Y+ \) }
       複製10行                ‧10yy
2 H1 U3 Y, [; O8 b8 h# K                                ‧游標移至目的地
. w) t0 @+ y* f. Y6 Q! Y                                ‧p
4 u- j5 ?0 |4 `& p0 A, \* `       指標往下移10行 ‧10j
, R  u  ]# k* d) v  @8 z+ X& t* [2 J) R+ c8 h' ~3 q
7.取消前一動作(Undo)9 f! H& y) ^  H/ ^7 l' ]* s8 [! f
       即復原執行上一指令前的內容。
  z5 M  P& j# g, ^  Q3 F       u       恢復最後一個指令之前的結果。9 i0 P3 K, q* [- y
       U       恢復游標該行之所有改變。
/ \8 v5 W  D! d: |$ Q
8 F* x/ z7 o5 a% b& s- }, J5 k8.搜尋' n" g8 K0 J8 T1 n6 g
       在vi中可搜尋某一字串,使游標移至該處。
) R. o9 y, K4 ?3 E6 `" ]% O; g       /字串           往游標之後尋找該字串。
3 C& \+ [( c+ P5 q, e       ?字串           往游標之前尋找該字串。
, s3 ]( ^! c* ^1 j* C  K) C       n               往下繼續尋找下一個相同的字串。
( v  U7 n. J& r! \       N               往上繼續尋找下一個相同的字串。7 E/ F) i  ]3 }( A" W

/ t' W2 r4 w, Q4 B$ Z) S6 u1 Y9 m# v9.資料的連接
% s& j% c4 I$ D, q/ j+ w       J       句子的連接。將游標所在之下一行連接至游標該行的後面。8 y5 B( [5 V* K* m
       若某行資料太長亦可將其分成兩行,只要將游標移至分開點,進入輸入模式
  }% p. c. Q! {( Y* S       (可利用a、i等指令)再按《Enter》即可。. s4 G5 s7 ^$ y, b/ a1 A
; U$ }7 t( |( L& u9 y
10.環境的設定! u+ H1 v5 A0 o8 p. i6 r6 t  E
       :setnu                設定資料的行號。$ w" |* d% }, ]) s* x: N! m
       :setnonu              取消行號設定。
2 q6 w1 p8 I' g5 q4 }: N       :setai                自動內縮。
  P; Z" Y+ ^/ B# E  v! G0 i       :setnoai              取消自動內縮。: ?$ F) p6 Y2 A+ `$ F* r2 O
       自動內縮(automatic indentation)
5 O+ G/ X' Y% R       在編輯文件或程式時,有時會遇到需要內縮的狀況,『:set ai』即提供自
- M' c# E( r0 V( D       動內縮的功能,用下例解釋之:4 H/ [! p3 a+ T) x5 Z" G0 ]8 s
       ‧vi test. c6 W0 M1 K! J
       ‧(進入編輯視窗後)
% C+ @. n; j. g( E         this is the test for auto indent
! B+ _9 C3 s5 G         《Tab》start indent           ← :set ai (設自動內縮)
  G1 v, m1 i; }& `" k8 D( B         《Tab》data
& l2 j' w; _' ~; }6 ?         《Tab》data, a" [- a8 Q2 b- V8 p
         《Tab》data                   ← :set noai (取消自動內縮)3 Z$ ~8 h) C8 V* i
       the end of auto indent.1 ]3 L7 s% E$ m6 s$ _
       ‧註:<Ctrl><d>可刪除《Tab》字元。! M: z2 Z( ]4 L- Z

& L# ?8 |5 `7 I2 C4 C, r8 c5 ]11.ex指令  b, C5 `9 ]. \7 g
       讀寫資料
9 j8 G( m- F+ Q7 `& Y$ |" [       :w                     將緩衝區的資料寫入磁碟中。' R/ [, C+ S* y2 `; o# X
       :10,20wtest   將第10行至第20行的資料寫入test檔案。
- Z6 F/ i, _8 F5 P) {& |0 c       :10,20w>>test  將第10行至第20行的資料加在test檔案之後。
# ?" w  j- e' v9 G: G) R/ j       :rtest                將test檔案的資料讀入編輯緩衝區的最後。8 h1 P( K+ x; \6 R# M
       刪除、複製及搬移
1 E$ r, h- L2 I       :10,20d                刪除第10行至第20行的資料。
1 u" x/ b0 d- T3 G       :10d                   刪除第10行的資料。
' d7 ^* n0 L5 ~  i       :%d                    刪除整個編輯緩衝區。
% F. B7 c' H+ F; ?! Z# K8 V       :10,20co30             將第10行至第20行的資料複製至第30行之後。
* @9 P$ ~7 Y& u$ I  s! A; E* @       :10,20mo30             將第10行至第20行的資料搬移至第30行之後。: L1 ^" ~; w% [% e
       字串搜尋與取代) @4 R, ^# H" B9 w" V& u
       s(substitute)指令可搜尋某行列範圍。
, \/ {% X! }1 X       g(global)指令則可搜尋整個編輯緩衝區的資料。
  o4 D+ T/ I$ b7 t$ B3 ?       s指令以第一個滿足該條件的字串為其取代的對象,若該行有數個滿足該條
2 g2 C1 K. y1 t8 ~; \       件的字串,也僅能取代第一個,若想取代所有的字串則需加上g參數。: @- M3 m2 B1 C6 ]$ j3 ]
       :1,$s/old/new/g                將檔案中所有的『old』改成『new』。
* l- B7 W% w& Q) T       :10,20s/^/   /        將第10行至第20行資料的最前面插入5個空白。
. v$ Z8 k9 y! ?: n7 k9 @: ~$ A( e       :%s/old/new/g          將編輯緩衝區中所有的『old』改成『new』。
2 h! Y' p2 p4 o9 U7 b; C7 H$ t% Y5 ]
12.恢復編輯時被中斷的檔案) O( p& y- O1 u* O; m: r8 r
       在編輯過程中,若系統當掉或連線中斷,而緩衝區的資料並還未
# \& r* M% v- n. d       被寫回磁碟時,當再度回到系統,執行下列指令即可回復中斷前. l0 E+ j( }& x: z2 C
       的檔案內容。* a7 d# k9 T0 K" O% b
       %vi -r filename- o. s8 C" Y7 ]* V3 w% N' h

  E8 z( g2 o- O$ _3 R9 e% @8 q) N13.編輯多個檔案# L6 x9 a& |8 B8 Z
       vi亦提供同時編輯多個檔案的功能,方法如下:
9 y  z$ J5 T1 v8 o* X/ u       %vi file1 file2 ..- z0 @3 Y9 T! n; q0 n' T* b
       當第一個檔案編修完成後,可利用『:w』將該緩衝區存檔,而後
# i1 r8 @: e/ m       再利用 『:n』載入下一個檔案。2 {* H; e" o. v. S! \
6 l% J5 S# a% R3 U2 v  n$ H
參考:1 j9 v, u& B& c' R
( A5 S! ~  w5 F9 ~6 u4 @8 I1 S# n
http://chunchaichang.blogspot.tw/2010/08/vim-s.html
& e# V# u% q+ M( j/ A# b- B
-->
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則


-->

聚BT福利

本區塊內容依據『電腦網路內容分級處理辦法』為限制級網站,限定年滿18歲以上或達當地國家法定年齡人士方可進入,且願接受本站各項條款,未滿18歲 謝絕進入瀏覽。為防範未滿18歲之未成年網友瀏覽網路上限制級內容的圖文資訊,建議您可進行網路內容分級組織ICRA分級服務的安裝與設定。 (為還給愛護 本站的網友一個純淨的論壇環境,本站設有管理員)

QQ|小黑屋|手機板|52AV手機A片王

GMT+8, 2024-10-16 11:38 , Processed in 0.071894 second(s), 16 queries .

連絡站長.廣告招商

[email protected] | QQ:2405733034     since 2015-01

裸聊妹 快速回復 返回頂部 返回列表