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

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

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

[複製鏈接]
發表於 2014-11-18 08:47:14 | 顯示全部樓層 |閱讀模式
本帖最後由 IT_man 於 2017-5-6 23:16 編輯
5 ]5 A5 z" l4 ~+ o4 M! w& y" ?; ?+ k
vi指令說明(完整版)
) O6 a; f& n/ }& S; e
  • vi 的操作模式/ i3 q  x( {( F2 k- o- m

# M' D- ^  v5 e$ m: q

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

  • 輸入模式
    - s; O: |* l% l$ A3 m

9 R; D5 l2 z+ k0 `
       如何進入輸入模式" z7 r. \! J# M0 A* z! C, L* g
                a (append)    由游標之後加入資料。
1 B, J2 N& I8 [( s, q5 P. C$ b                A                   由該行之末加入資料。
! q1 K- o2 W& J                i (insert)        由游標之前加入資料。
* x" `2 B2 ]' S) |! M2 `& C                I                   由該行之首加入資料。
6 I/ y) t4 M' f+ q* ]$ y2 ?                o (open)       新增一行於該行之下供輸入資料之用。
, s# k" Q2 E4 u& ~) p                O                  新增一行於該行之上供輸入資料之用。& L1 k, @3 ~6 J* |2 F( o: [
       如何離開輸入模式5 |2 D" W$ f0 j" A+ G" `  a/ w
             《ESC》          結束輸入模式。
8 P  X; _: R! d+ P
  • 指令模式4 f0 }8 f9 ^" K

7 E/ w/ y* F! U% u# u2 d" f
1.游標之移動/ N# g. @0 E' z. X; t* G/ g
              h       向左移一個字元。  _1 k' `; |& n  r0 ]+ n9 l
              j       向上移一個字元。
( y* e  [+ k9 r& E7 w" w7 X6 M              k       向下移一個字元。
! G) q' w" |! s4 ~3 _              l       向右移一個字元。# `& D. Y; C+ a4 k' z
              0       移至該行之首/ e" _$ _  e( C) O% ^, o
              $       移至該行之末。
2 R2 j& X1 U" {$ f& M# ^              ^       移至該行的第一個字元處。
6 c5 H0 V1 z) p2 _              H       移至視窗的第一列。
0 m, ?/ }4 c8 R3 I$ Y7 J0 R              M       移至視窗的中間那列。
1 ]# H4 r. H4 d8 [2 p              L       移至視窗的最後一列。2 v1 }: m# F' U1 N5 n
             G       移至該檔案的最後一列。2 B7 \, ~. M- U& z" N
             +       移至下一列的第一個字元處。
* {& x) j( b4 h  N5 c             -       移至上一列的第一個字元處。8 W3 ?/ ]1 A- G' `4 X7 H- Z4 g$ j
             (       移至該句之首。 (註一)
( K: J- a. R) m; b) M             )       移至該句之末。8 Y( B/ m! ^) O2 o7 V
             {       移至該段落之首。 (註二)
$ n7 p6 c) J7 [! ~             }       移至該段落之末。! x4 y' p: J. ~6 w8 k
             nG      移至該檔案的第 n 列。" A  p5 ]) ~- E7 k* V7 D
             n+      移至游標所在位置之後的第 n 列。- l1 u$ J" y" l8 y' x7 ]
             n-      移至游標所在位置之前的第 n 列。5 q+ J% Y6 e# G7 l( R) q7 s
            <Ctrl><g>       會顯示該行之行號、檔案名稱、檔案中最末行之行號、游標所在行號佔總行號之百分比。
2 n) D" [- o( B+ O1 t3 h            註一:句子(sentence)在vi中是指以『!』、『.』或『?』結束的一串字。
6 @8 z' F0 P' T6 d/ E            註二:段落(paragraph)在vi中是指以空白行隔開的文字。
+ U+ v1 v. u& b# a% u. \: {( e" [9 t7 ?- j" H8 j0 @% l; v
2.視窗的移動       <Ctrl><f>       視窗往下捲一頁。
" u  F5 L1 b" F" S& @           <Ctrl><b>       視窗往上捲一頁。6 r7 C; }  I2 g5 c+ B
           <Ctrl><d>       視窗往下捲半頁。
! q" Z6 O% X& j* O           <Ctrl><u>       視窗往上捲半頁。
) H  M# A4 w" }" z* R- O0 d2 G           <Ctrl><e>       視窗往下捲一行。
  O+ i* D# M# Q/ {# K           <Ctrl><y>       視窗往上捲一行。% P$ y! Z: u0 Y/ o! A
* E) [0 z. W. p8 Q1 W# X6 O, O
3.刪除、複製及修改指令介紹 (此單元較少使用)' Y7 S" p; ]% D- l7 b- i1 p
       d(delete)、c(change)和y(yank)這一類的指令在 vi 中的指令格式為:
  t$ S( G0 c/ [       Operator + Scope = command  \5 G/ r, k5 b6 ~3 K) N
       (運算子)   (範圍)
# B0 r2 F) Y2 ~( _7 s       運算子:
) }% M& W; O( g# i* k$ @7 f       d       刪除指令。刪除資料,但會將刪除資料複製到記憶體緩衝區。
/ C& \" z* Y1 c+ P       y       將資料(字組、行列、句子或段落)複製到緩衝區。
- s3 H0 q' {& M$ S, p% H' |       p       放置(put)指令,與 d 和 y 配和使用。可將最後delete或yank的資
! C8 |& F1 h. X: A+ t                料放置於游標所在位置之行列下。9 h% y3 Y4 R4 y  }
       c       修改(change)指令,類似delete與insert的組和。刪除一個字組、句
( E" ?6 |2 x6 X1 ]7 F4 j                子等之資料,並插入新鍵資料。. ]- Q8 F8 }2 j! J/ m
       範圍:
$ c1 R- m" z6 g9 T8 H       e       由游標所在位置至該字串的最後一個字元。
9 x2 u( A2 h9 P; ]) c7 {! V" y$ C# i       w       由游標所在位置至下一個字串的第一個字元。
( F" P3 b. |. O  w  o, M, j       b       由游標所在位置至前一個字串的第一個字元。
: o# M  O5 H# T6 ^" Z1 V       $       由游標所在位置至該行的最後一個字元。1 y( w' @" A3 H/ {& Z- n
       0       由游標所在位置至該行的第一個字元。0 \% O" |' @7 I7 G
       )       由游標所在位置至下一個句子的第一個字元。
7 l* P9 U/ o3 E- v3 E9 G       (       由游標所在位置至該句子的第一個字元。
3 ^2 l6 l+ P9 V2 v6 c/ |       {       由游標所在位置至該段落的最後一個字元。9 d1 P1 I4 ?  w! ~
       }       由游標所在位置至該段落的第一個字元。( a, d  ?, f) N( S- v
       整行動作
" b' q$ [! p( H; @( A% k5 R" s       dd      刪除整行。
4 j7 u# F3 a% F       D       以行為單位,刪除游標後之所有字元。; l" U/ Z4 [5 S: f# Q1 K  z# e
       cc      修改整行的內容。- \! J( v- @" I" q" X" y: h2 [
       yy      yank整行,使游標所在該行複製到記憶體緩衝區。
6 X0 e1 e) m: v9 y1 L) o' \: _6 `
4.刪除與修改9 }- `3 x) x$ ^# j+ A4 G6 Z
       x       刪除游標所在該字元。0 v$ k0 Q& q* S7 B. ?
       X       刪除游標所在之前一字元。
0 q0 Q+ B" c, E' a1 v7 O       dd      刪除游標所在該行。
, M: d( O9 ^9 X$ D0 c6 {4 X       r       用接於此指令之後的字元取代(replace)游標所在字元。
" ~. o0 g) i5 C3 B, W  z4 {                如: ra 將游標所在字元以 a 取代之。
) G+ k% O: x4 `       R       進入取代狀態,直到《ESC》為止。3 f, l: `5 B' C
       s       刪除游標所在之字元,並進入輸入模式直到《ESC》。( Y9 T$ F, H' ]" n" K5 n
       S       刪除游標所在之該行資料,並進入輸入模式直到《ESC》。3 I& q  {7 I: U8 G* `' H7 E, @

& S8 \8 c' o# v9 B, o7 \4 {& v0 Q& @5.搬移與複製5 P% k9 t4 V! }/ g. w0 {
       利用delete 及 put 指令可完成資料搬移之目的。0 Z8 q! O) n$ D, `, O
       利用yank 及 put 指令可完成資料複製之目的。1 h1 G- h' z" y; m+ q
       yank 和delete 可將指定的資料複製到記憶體緩衝區,而藉由 put 指令
6 z+ K; E7 B8 Q       可將緩衝區內的資料複製到螢幕上。; N7 Y: a8 H% ~7 i2 F! ^2 C
       例:3 c- X8 J& H. D; K
       搬移一行        ‧在該行執行 dd
! c. y  h" Z4 `7 p" a0 U                        ‧游標移至目的地
( V# ]& Y0 ]% ~* [" w! f0 a- z                        ‧執行 p
! d7 ^% \2 E( s9 X/ h4 M       複製一行        ‧在該行執行 yy
& z3 s8 z7 B' g6 i0 P* i7 E3 J                        ‧游標移至目的地
' \* n* T  o) o+ V( e1 A; h  g                        ‧執行 p7 [  L; @+ r) S* \4 {
- D2 }6 A- P$ G8 c; ~
6.指令重複5 s2 ?( s7 G) m9 b
       在指令模式中,可在指令前面加入一數字 n,則此指令動作會重複執行 n& B7 x) F+ }7 N0 w
       次。
9 ~  w% y) C- n0 Q0 G$ D& c( \9 E" r       例:
0 O7 R! n0 [* g' O       刪除10行                ‧10dd
9 ?* s& U9 A3 \( |" F  l       複製10行                ‧10yy
+ D" X" P) a! W  s4 N# O. T, {                                ‧游標移至目的地
( ^' _- l7 {" D' i6 P9 v                                ‧p8 C. {) d. b( w
       指標往下移10行 ‧10j
# g  _  c6 o* T' P# V
: T" p$ S  d6 W- o7.取消前一動作(Undo)* Z( _" Y( x# K1 b& A
       即復原執行上一指令前的內容。
# N2 O. x* f% X6 d% T# t% b! R       u       恢復最後一個指令之前的結果。1 Z: u! i  i) F5 z
       U       恢復游標該行之所有改變。
$ S& q4 t2 Y- }; }
- Y4 b9 q; F1 F( G3 t& {) c8.搜尋
  b* L3 x! n8 D8 ?( y       在vi中可搜尋某一字串,使游標移至該處。
! M/ I' J7 _. h       /字串           往游標之後尋找該字串。
5 k0 G0 a5 S" c2 j) i+ s       ?字串           往游標之前尋找該字串。. L) o( l( r* u, N6 D
       n               往下繼續尋找下一個相同的字串。
/ T% S' }6 ]+ Z! a7 P8 v0 t       N               往上繼續尋找下一個相同的字串。) _/ t, A1 y% s3 r  }! J, C2 H3 `

$ C" m- j4 R& G' l9.資料的連接
+ r7 n$ z  X, u* m. i$ z: H6 ?$ L. T       J       句子的連接。將游標所在之下一行連接至游標該行的後面。
) I! P: |$ W2 Z6 f; `5 p6 A       若某行資料太長亦可將其分成兩行,只要將游標移至分開點,進入輸入模式
8 @8 U( [. E" B* t2 h* r( `" o       (可利用a、i等指令)再按《Enter》即可。, P- n$ s  j& k$ w) u8 l8 J# _/ B
: l; o2 X9 i5 k. B. R3 R: L$ J
10.環境的設定- h. i% i% D" H: \! m, Y
       :setnu                設定資料的行號。0 q2 g/ W( ~, m' j( L* [) k
       :setnonu              取消行號設定。3 T! j7 \* f& @/ E
       :setai                自動內縮。
: ?+ J3 @) g! k  [% c       :setnoai              取消自動內縮。/ f/ Z  F' R5 c7 D5 n# n
       自動內縮(automatic indentation)6 F4 E' ]% S& i1 H# C! X$ k
       在編輯文件或程式時,有時會遇到需要內縮的狀況,『:set ai』即提供自3 v3 B- ^& h8 I1 _8 ]; [# O- C* w
       動內縮的功能,用下例解釋之:  `6 W* @" E$ G; d% z  u( z" I
       ‧vi test9 g0 j8 H6 y6 x+ N' j  {
       ‧(進入編輯視窗後)
. v; h$ V1 Y0 G         this is the test for auto indent
# ]. C) X% [* y" y" F# K1 }8 m: m         《Tab》start indent           ← :set ai (設自動內縮)
( f$ `& w- \2 U         《Tab》data
0 D; D2 d6 p5 V4 ~         《Tab》data
5 \3 o2 S- V0 Q) {/ ]         《Tab》data                   ← :set noai (取消自動內縮). c8 U" A$ }7 p! d
       the end of auto indent.
5 [. ^! X' z/ K) M       ‧註:<Ctrl><d>可刪除《Tab》字元。% M1 u+ I  d8 ]

( c9 p1 ~" O  \3 P8 J9 p11.ex指令
; v* M2 C4 s, q' F, y/ L- R. g       讀寫資料6 f8 L! c4 n, W
       :w                     將緩衝區的資料寫入磁碟中。  ]+ \# Q' e) I! s
       :10,20wtest   將第10行至第20行的資料寫入test檔案。
: _) s; O$ |+ Z6 _  e& r  b: I. j       :10,20w>>test  將第10行至第20行的資料加在test檔案之後。' j, Q9 j2 W) e9 N
       :rtest                將test檔案的資料讀入編輯緩衝區的最後。! X$ ?. Y& k+ i/ l' Z- x# D
       刪除、複製及搬移3 `6 s  C. o: l5 s' X1 a$ z+ E! s
       :10,20d                刪除第10行至第20行的資料。0 m2 K0 A' \% t
       :10d                   刪除第10行的資料。
* Y- e0 J2 \  O' y$ i" K       :%d                    刪除整個編輯緩衝區。
- f  ~" d! g( c7 m; r       :10,20co30             將第10行至第20行的資料複製至第30行之後。6 E8 \; f6 x8 F& ]$ I! H
       :10,20mo30             將第10行至第20行的資料搬移至第30行之後。
- N6 v8 |6 |9 l/ n3 f7 J       字串搜尋與取代: H; Z9 K2 I1 f2 B
       s(substitute)指令可搜尋某行列範圍。. r! S/ D, e1 w5 |7 w0 T) Y. N
       g(global)指令則可搜尋整個編輯緩衝區的資料。6 E; C. A3 j) b" D* h$ z9 D" M
       s指令以第一個滿足該條件的字串為其取代的對象,若該行有數個滿足該條+ `7 y  i5 z. p* g8 D" @* [; |
       件的字串,也僅能取代第一個,若想取代所有的字串則需加上g參數。- k& {; _( u  N+ o$ L7 ]% l* B
       :1,$s/old/new/g                將檔案中所有的『old』改成『new』。
, z4 c1 Q5 r& E9 J" w       :10,20s/^/   /        將第10行至第20行資料的最前面插入5個空白。
/ x* w& m6 y' c, @. G       :%s/old/new/g          將編輯緩衝區中所有的『old』改成『new』。
- j( Q9 v8 D# B& ^$ |! s( {0 f( ?- z9 T8 D- i" x
12.恢復編輯時被中斷的檔案  q# S/ B1 t: i1 F
       在編輯過程中,若系統當掉或連線中斷,而緩衝區的資料並還未
5 Z4 W0 y- ^# G/ g$ l& G! F       被寫回磁碟時,當再度回到系統,執行下列指令即可回復中斷前
9 `; U7 |' L6 Z" d$ I0 A$ i1 E- O       的檔案內容。- y. ]! G" H+ C! g7 S+ J/ T
       %vi -r filename9 B& S4 F$ V8 J
* i) c# F' g5 |6 O+ H
13.編輯多個檔案, W) |. m* r. q! W- E+ L
       vi亦提供同時編輯多個檔案的功能,方法如下:
8 e' h1 n$ s9 K       %vi file1 file2 ..
' q, N3 v  o5 O2 X$ f- K0 y( ~       當第一個檔案編修完成後,可利用『:w』將該緩衝區存檔,而後5 X( M' Y- q  [2 x2 ~
       再利用 『:n』載入下一個檔案。
6 K- w1 }: P. o; V* A' Q
& N# L/ l! T/ E+ s( q參考:
& E" t. D2 W+ q6 U. Y
- ~# S) i- X6 Q8 H, g0 [: uhttp://chunchaichang.blogspot.tw/2010/08/vim-s.html9 }, B3 z5 \( C! A! h4 `/ i
回復

使用道具 舉報

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

本版積分規則

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

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

GMT+8, 2026-7-5 16:39 , Processed in 0.007897 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

連絡站長.廣告招商

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

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