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

 找回密碼
 立即註冊
快捷導航
  • 我愛av論壇BBS
  • 手機A片
  • 自拍偷拍外流區
  • 貼圖區
  • 52av裸聊室
  • 中文-中國主播
Yahoo!奇摩搜尋
熱搜: av4u論壇
Google搜尋
熱搜: av4u論壇
     
查看: 4121|回復: 0

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

[複製鏈接]
發表於 2014-11-18 08:47:14 | 顯示全部樓層 |閱讀模式
本帖最後由 IT_man 於 2017-5-6 23:16 編輯
) I" C2 X2 r7 u0 [" d. A$ G( `+ r# R1 H: ^: j
vi指令說明(完整版)
  P; C7 }: P( y5 F' ]; N
  • vi 的操作模式+ c/ e- v3 ^3 N& Z


3 [  ^3 H% \; f  m

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

  • 輸入模式3 e2 c& N2 W( G4 U- g

2 j1 t; a% C4 r7 a
       如何進入輸入模式' z5 R8 h/ K6 l# R$ G+ y) i, J. Q
                a (append)    由游標之後加入資料。7 G: w. e- a: g; S+ ?0 I3 Y
                A                   由該行之末加入資料。
" `/ o5 t( V. _6 T( m& L  O% Y                i (insert)        由游標之前加入資料。
; P6 O& R' U3 \2 H' `                I                   由該行之首加入資料。
6 L; S" m( F& q, y                o (open)       新增一行於該行之下供輸入資料之用。' m* J* I2 r( I4 N5 Y7 k5 D
                O                  新增一行於該行之上供輸入資料之用。( |- G) `' T" [( O& w
       如何離開輸入模式
2 n9 E1 z( j3 N5 m! C% Q) ]             《ESC》          結束輸入模式。
) W" r) W, o+ U& z2 z
  • 指令模式
    ; ]1 o$ ], g1 _

, T5 |, A6 T1 O
1.游標之移動
, h6 {5 U0 n  R3 @& m8 M& @( O, G              h       向左移一個字元。
6 Y5 e) }! G2 a2 [              j       向上移一個字元。, B( m2 }, k4 w3 e! E7 Z
              k       向下移一個字元。
" c1 q: P1 P; O* v              l       向右移一個字元。
; r2 Z% N8 X9 w% M  E1 i1 a. Z* |              0       移至該行之首. G, k& \/ o* |
              $       移至該行之末。
3 P5 @# l. \  @( d0 m( ~7 ]' K+ F              ^       移至該行的第一個字元處。' n5 s& O/ M' t; Z  O+ ~& E
              H       移至視窗的第一列。
2 I% d* Q$ J/ `: `7 A/ R              M       移至視窗的中間那列。: d$ Y3 e! G1 U
              L       移至視窗的最後一列。
2 d2 Y. |4 {6 S! b4 h" ?! i& [             G       移至該檔案的最後一列。# T. r# f* E0 O3 D
             +       移至下一列的第一個字元處。
5 y; K  H: o+ a' ^             -       移至上一列的第一個字元處。
7 M" E, M/ l' `& D8 T1 c             (       移至該句之首。 (註一)# z8 r& a2 r% J: w- R
             )       移至該句之末。9 C+ u4 l# c; E
             {       移至該段落之首。 (註二)  O9 U+ B4 G8 W) F, N- G
             }       移至該段落之末。
, }% Q, w: ~8 A9 d* d- ?             nG      移至該檔案的第 n 列。8 J* K- x# W' T; N! q% N
             n+      移至游標所在位置之後的第 n 列。
, @/ |- _6 [3 n0 Z$ f8 H             n-      移至游標所在位置之前的第 n 列。2 E& m9 M  E% K/ J+ R/ h5 {
            <Ctrl><g>       會顯示該行之行號、檔案名稱、檔案中最末行之行號、游標所在行號佔總行號之百分比。) b& v, H" M! m7 ^4 ?# T6 A/ V1 N( ^
            註一:句子(sentence)在vi中是指以『!』、『.』或『?』結束的一串字。
' y" e: y. Y+ j4 c& l1 z            註二:段落(paragraph)在vi中是指以空白行隔開的文字。) H: A7 F  `3 i9 g2 E

5 x6 y  s) O& k+ V& r4 M% @# E2.視窗的移動       <Ctrl><f>       視窗往下捲一頁。
9 P+ n  T* p- t8 R# z. R% Z           <Ctrl><b>       視窗往上捲一頁。
  ]* z2 P' N5 G. \1 V6 w/ I* E; Z; W           <Ctrl><d>       視窗往下捲半頁。% v5 Y- u3 G1 e$ }
           <Ctrl><u>       視窗往上捲半頁。
2 h, u& j5 U) m9 _5 `. k8 F8 `* C" W           <Ctrl><e>       視窗往下捲一行。
8 \2 Q4 b; j5 w3 _; X+ _           <Ctrl><y>       視窗往上捲一行。" `3 d, H. D9 Y2 _) E" J
. Q" C9 ]7 e2 _6 ~# _5 e
3.刪除、複製及修改指令介紹 (此單元較少使用)# u5 x! T. I. g
       d(delete)、c(change)和y(yank)這一類的指令在 vi 中的指令格式為:- Y' E$ h! ^9 n# e
       Operator + Scope = command
& u: P* r/ ^- n  i7 E       (運算子)   (範圍)
& y9 }; p  x  Z1 J       運算子:
+ j1 R6 {+ t' y2 w- @       d       刪除指令。刪除資料,但會將刪除資料複製到記憶體緩衝區。7 s6 }7 D& }7 k$ j) V, [
       y       將資料(字組、行列、句子或段落)複製到緩衝區。: v$ s1 [* H# g4 o  r
       p       放置(put)指令,與 d 和 y 配和使用。可將最後delete或yank的資
6 D( o8 ^3 u7 N0 l0 S9 b                料放置於游標所在位置之行列下。" t" P% ~& }8 ~3 I; [' o
       c       修改(change)指令,類似delete與insert的組和。刪除一個字組、句- r; D1 N" U: {: a$ o
                子等之資料,並插入新鍵資料。
+ T7 ]+ F- a! p7 P- T8 \& ^5 t       範圍:& C2 d6 e' W" f& v; E2 U% G* g
       e       由游標所在位置至該字串的最後一個字元。+ U3 E2 L9 }! X  F
       w       由游標所在位置至下一個字串的第一個字元。* C2 L: B! ]# i; e: \4 P5 b
       b       由游標所在位置至前一個字串的第一個字元。
! l7 o. x$ t& m  V       $       由游標所在位置至該行的最後一個字元。
/ Z" B9 ]5 e: w, R       0       由游標所在位置至該行的第一個字元。( r& f) T+ d+ n9 g
       )       由游標所在位置至下一個句子的第一個字元。
1 L. A5 K5 J0 x: T6 g3 I       (       由游標所在位置至該句子的第一個字元。
  Y( `: K8 R  H6 ~: U       {       由游標所在位置至該段落的最後一個字元。
1 |' f$ `, O/ E* E& {       }       由游標所在位置至該段落的第一個字元。* |* Q! r+ C  |- U. a
       整行動作6 m0 V2 h( @9 R% F( C  i+ u
       dd      刪除整行。8 J2 e9 H* `5 ~3 Z  @% r
       D       以行為單位,刪除游標後之所有字元。
1 }4 N5 O7 V  f: l       cc      修改整行的內容。
7 Y4 k5 l+ Y% y" r5 `       yy      yank整行,使游標所在該行複製到記憶體緩衝區。
( ?" a5 E9 s. _+ {9 \" O
# y. t, D1 {' w7 Q& I4.刪除與修改
$ c" [! s7 ~5 {" H( R" S       x       刪除游標所在該字元。
  |- c' Z! j( v- {  l$ |* V. ^       X       刪除游標所在之前一字元。, @, E, f, {1 v5 m- m% y7 ]
       dd      刪除游標所在該行。6 v* k/ @7 w8 |- l7 ?1 L
       r       用接於此指令之後的字元取代(replace)游標所在字元。
9 T: W  C3 H+ N6 R. l8 f( ^                如: ra 將游標所在字元以 a 取代之。
& b' L) R& W; o% _9 R       R       進入取代狀態,直到《ESC》為止。
$ S. ^6 J! F$ X       s       刪除游標所在之字元,並進入輸入模式直到《ESC》。
0 G$ q1 M7 _7 Z# X7 l       S       刪除游標所在之該行資料,並進入輸入模式直到《ESC》。
. T6 D" V& ]8 i  \3 k# q" `* G: B7 N8 w4 n  {
5.搬移與複製2 G% L. S! I% e/ u& J1 }
       利用delete 及 put 指令可完成資料搬移之目的。: C. c8 d' D$ ^
       利用yank 及 put 指令可完成資料複製之目的。
- S/ Z8 \& E- {  T9 t       yank 和delete 可將指定的資料複製到記憶體緩衝區,而藉由 put 指令
, {. {1 V9 U0 R0 ?2 U! u1 K" I       可將緩衝區內的資料複製到螢幕上。' q  P. B* W, g) @2 O
       例:
/ I0 h# g/ I# Z1 m) }       搬移一行        ‧在該行執行 dd' I( b9 q1 @' v& A5 J8 \9 H5 a
                        ‧游標移至目的地5 Z4 c9 L" N$ D* x- c6 a- d* D
                        ‧執行 p
3 H% x+ \, v( E. q0 H/ |       複製一行        ‧在該行執行 yy) ]3 p* `- x: C$ `
                        ‧游標移至目的地
' {% B# h- ]5 Z                        ‧執行 p% W3 y  G% y' e1 n: Y. f  d7 K
: z# w; D; Y- Y0 [
6.指令重複
( x5 p  B3 h' x       在指令模式中,可在指令前面加入一數字 n,則此指令動作會重複執行 n' c1 _1 d) G. f+ U5 D; m
       次。: D2 `" p4 @& @; v0 X) M
       例:
& u- N7 A8 m+ q* Y- y       刪除10行                ‧10dd
6 l0 t: L. R2 [5 x4 E; ^       複製10行                ‧10yy
! H! O. {0 ^9 w6 v( f& G3 A                                ‧游標移至目的地+ V0 p8 S" L' |$ ^9 i9 n( U% D
                                ‧p7 E$ K6 M% t" H6 E; {
       指標往下移10行 ‧10j
3 c3 e, N: K5 |0 ]- P2 ?  \/ X5 V. r1 ^3 D: `% H3 I" t) l
7.取消前一動作(Undo), `0 [# U* D/ M8 B2 Y7 L. {- O
       即復原執行上一指令前的內容。% M2 J% M% _  \7 C) X
       u       恢復最後一個指令之前的結果。( x5 E& q; n$ K! h
       U       恢復游標該行之所有改變。
) H/ B9 u( L9 B$ w9 Z% V: s4 v. \, i/ d, ?" ~. I: l2 m
8.搜尋2 M& h2 m; H" k
       在vi中可搜尋某一字串,使游標移至該處。
# p/ U% ~0 e3 y$ M       /字串           往游標之後尋找該字串。; `) O& K  C" S. v
       ?字串           往游標之前尋找該字串。- d* G4 D7 Z: O( W
       n               往下繼續尋找下一個相同的字串。: f3 D8 f. ^: |- _4 D* i$ z
       N               往上繼續尋找下一個相同的字串。- S* m' r  ~6 u1 W
" V1 H8 l' |2 _; ~! m" ~
9.資料的連接
' s0 N3 f2 o  \# D4 h; t) B       J       句子的連接。將游標所在之下一行連接至游標該行的後面。, x5 P5 j: w2 u0 d) M% n
       若某行資料太長亦可將其分成兩行,只要將游標移至分開點,進入輸入模式
! d0 Z  X, D' L/ g       (可利用a、i等指令)再按《Enter》即可。0 C: j: x4 {$ u' J3 x) }7 c' M

2 {: H3 I3 y2 j10.環境的設定
, I8 n- p8 p8 q. L( p4 D! P- ?, w; E       :setnu                設定資料的行號。
7 ^5 j% |/ ~/ w: \7 V       :setnonu              取消行號設定。+ @) k* n! @: T) ]  G6 N
       :setai                自動內縮。9 V. {( E4 y& s, B. X, x7 T
       :setnoai              取消自動內縮。. w; r  Q5 l( s3 b1 z7 d* y1 K
       自動內縮(automatic indentation)1 _: C* l- `6 `  H$ W
       在編輯文件或程式時,有時會遇到需要內縮的狀況,『:set ai』即提供自; i- H7 X2 k1 E$ F4 B  h; {
       動內縮的功能,用下例解釋之:. v. E2 T8 e4 D' O+ I
       ‧vi test
  M3 V0 y3 h6 o7 h$ l* J3 W6 g       ‧(進入編輯視窗後)* j3 ]/ e0 F' z5 u2 C* t; A
         this is the test for auto indent* ]; c+ y+ Q: R: s
         《Tab》start indent           ← :set ai (設自動內縮)* Q9 i* v& @  K5 p6 x' C
         《Tab》data* Y( B! Z. c% W+ U- [1 z, B
         《Tab》data/ r$ f( o- r4 l
         《Tab》data                   ← :set noai (取消自動內縮). N' D( |0 h$ p! S& Z# d( [
       the end of auto indent.1 c+ _3 R0 P8 e% h1 G9 O
       ‧註:<Ctrl><d>可刪除《Tab》字元。3 i  k# q# Z6 d8 r. t- n2 |9 h

" z2 T0 h  N) Q! N11.ex指令& W' {$ ^; F- h) S( @
       讀寫資料
# v. u+ Z4 h' E# t% E       :w                     將緩衝區的資料寫入磁碟中。, T; r/ j1 H' u
       :10,20wtest   將第10行至第20行的資料寫入test檔案。( K& z, }/ F$ E* p) {, L; T5 [! b
       :10,20w>>test  將第10行至第20行的資料加在test檔案之後。; I8 B1 c% N3 v9 Q; D, y* K
       :rtest                將test檔案的資料讀入編輯緩衝區的最後。9 e" F2 H  L0 a  ?7 |
       刪除、複製及搬移$ f4 \9 h% X6 c( m/ B2 k& W
       :10,20d                刪除第10行至第20行的資料。
+ f' R/ j9 g7 T       :10d                   刪除第10行的資料。- c4 b0 S5 [6 ]6 i: L! E
       :%d                    刪除整個編輯緩衝區。
: E# v; V6 I; }3 v' f       :10,20co30             將第10行至第20行的資料複製至第30行之後。
& m; O& x  O# _1 W9 c( r/ K4 e       :10,20mo30             將第10行至第20行的資料搬移至第30行之後。
) Q; `' f1 h7 P2 F3 B       字串搜尋與取代% l9 M% I' W6 p4 L' F: T; M, {
       s(substitute)指令可搜尋某行列範圍。' I& a4 J" [' U$ ]1 ?
       g(global)指令則可搜尋整個編輯緩衝區的資料。
; N& L9 V0 Z  Y1 m$ H9 f" R       s指令以第一個滿足該條件的字串為其取代的對象,若該行有數個滿足該條- b7 `9 x2 z  ?, U  x* Z& C
       件的字串,也僅能取代第一個,若想取代所有的字串則需加上g參數。
6 |) j* {' O4 P: d) Z1 i. K       :1,$s/old/new/g                將檔案中所有的『old』改成『new』。$ T9 l% R+ Q2 I6 }
       :10,20s/^/   /        將第10行至第20行資料的最前面插入5個空白。
3 c3 Z6 v' Y2 _; Z6 H1 k% v       :%s/old/new/g          將編輯緩衝區中所有的『old』改成『new』。
6 z4 m: H  k( O2 K( c
% f1 j7 p  N. \8 O# c/ t12.恢復編輯時被中斷的檔案6 a: @, a$ W7 P( p$ ^% Y
       在編輯過程中,若系統當掉或連線中斷,而緩衝區的資料並還未
& ^; I/ t% R4 F$ t9 Z       被寫回磁碟時,當再度回到系統,執行下列指令即可回復中斷前
1 [7 u) t5 F* u8 ?       的檔案內容。
! l6 _1 C( a+ V$ ?       %vi -r filename/ Q& g0 h& R& w

1 L: t7 o  @8 t  Z: `( |13.編輯多個檔案/ _2 Z: Q8 l' M, W
       vi亦提供同時編輯多個檔案的功能,方法如下:
. L$ s# E0 f: b8 {) W2 A& Y3 b       %vi file1 file2 ..7 V5 b2 w( F+ w
       當第一個檔案編修完成後,可利用『:w』將該緩衝區存檔,而後
+ ?! Y. z, A1 ]( ^       再利用 『:n』載入下一個檔案。
: p- P. Z8 u, f/ ~0 w, D" L  w4 q% x) M; b
參考:
9 t  b6 k" Y2 U/ j- ?2 Z: E7 l) g% t) J
& W- _1 K  b" Q+ m2 W1 Ehttp://chunchaichang.blogspot.tw/2010/08/vim-s.html
/ _+ O3 I5 m1 D4 `) q
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

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

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

GMT+8, 2026-5-1 06:26 , Processed in 0.008035 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

連絡站長.廣告招商

[email protected] | Telegram:@asa00061     since 2015-01

快速回復 返回頂部 返回列表