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

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

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

[複製鏈接]
發表於 2014-11-18 08:47:14 | 顯示全部樓層 |閱讀模式
本帖最後由 IT_man 於 2017-5-6 23:16 編輯 7 u3 C: U/ Q; r- ^
; F8 B1 l0 f4 O- ?- ~6 }
vi指令說明(完整版)1 {7 m7 s+ q% j" x4 `+ v
  • vi 的操作模式
    & l) ~4 k3 B4 t' |, [


4 \- c9 _- P8 D. [9 B2 `

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

  • 輸入模式
    6 }0 d6 |/ F: ~1 k


. N/ W" P  i+ V; S2 P, S       如何進入輸入模式
4 `1 i% c' G% \, w( G" q                a (append)    由游標之後加入資料。2 o2 T4 ~8 E' a; x% _, a) k
                A                   由該行之末加入資料。
% @" p' L! u! o  A                i (insert)        由游標之前加入資料。1 W$ n& e& J6 e9 B6 o$ m0 o( m& S7 P
                I                   由該行之首加入資料。8 I) [- F  b- g0 r
                o (open)       新增一行於該行之下供輸入資料之用。
$ {9 Y4 a7 O& U  d, o7 |                O                  新增一行於該行之上供輸入資料之用。
3 J: C1 `# s5 k( @0 |3 w       如何離開輸入模式
/ N% p# e3 Z" f! J, R             《ESC》          結束輸入模式。
: u* m( X# w8 }( m0 L' v% ^' z
  • 指令模式
    5 @# C$ b' Y$ R

; I; v' x0 C! V0 v
1.游標之移動* p+ q# r9 K' X" Y' P
              h       向左移一個字元。
$ P# A: B* ?5 ~: {5 B9 h" x+ o              j       向上移一個字元。) l% n* z- I- Z
              k       向下移一個字元。* v; f9 c4 V/ j9 E% {/ _5 q, @. V8 H8 }
              l       向右移一個字元。
5 p! q6 h  m6 |& b  [' M) H              0       移至該行之首
' Z* _' _; ^* I              $       移至該行之末。; E& O, r9 S- G! N6 [' A, P9 k
              ^       移至該行的第一個字元處。
7 L4 N' |8 F, r              H       移至視窗的第一列。
4 D% I( k3 }( W$ w0 T3 V              M       移至視窗的中間那列。! g6 u; D2 i: [# T
              L       移至視窗的最後一列。
' O- w8 w) D( X/ J$ L5 A" P             G       移至該檔案的最後一列。
- G& x. Y! Q6 \# i' l0 P             +       移至下一列的第一個字元處。. g, M7 Z9 O4 T* ]" ]
             -       移至上一列的第一個字元處。: N* k& U# J0 {$ m6 L
             (       移至該句之首。 (註一)- D. a5 S, e0 z/ m+ M; T5 C
             )       移至該句之末。' ^( n, J8 l, L# N8 f
             {       移至該段落之首。 (註二): A) V3 a7 @: _
             }       移至該段落之末。/ w: c9 {6 Y  N* r! Z. |
             nG      移至該檔案的第 n 列。% l2 o8 U$ o4 Y1 }" U) c
             n+      移至游標所在位置之後的第 n 列。( U  }/ r5 z+ I; q
             n-      移至游標所在位置之前的第 n 列。
: z! N) a- O* s( c' B0 u+ P1 r            <Ctrl><g>       會顯示該行之行號、檔案名稱、檔案中最末行之行號、游標所在行號佔總行號之百分比。. B* l+ u& P* @* L* v2 i
            註一:句子(sentence)在vi中是指以『!』、『.』或『?』結束的一串字。  m& k+ M* N5 C8 H
            註二:段落(paragraph)在vi中是指以空白行隔開的文字。+ _3 M  r( ^+ }6 C5 `2 ?1 U4 K

6 z8 {7 U0 O+ m% T2.視窗的移動       <Ctrl><f>       視窗往下捲一頁。+ @  B5 Y! ^: p$ T7 R$ \) v3 [3 @6 E3 E
           <Ctrl><b>       視窗往上捲一頁。* k2 C1 g6 t6 v& }
           <Ctrl><d>       視窗往下捲半頁。
8 r+ F2 R* {! b7 g8 G           <Ctrl><u>       視窗往上捲半頁。
6 [3 x9 s7 P$ P% ?           <Ctrl><e>       視窗往下捲一行。
! b+ M3 J  P  ]4 Q# ?, u           <Ctrl><y>       視窗往上捲一行。0 F& k+ J7 g7 u
) G$ F5 F& E! H! O
3.刪除、複製及修改指令介紹 (此單元較少使用)
9 {' k0 V, P0 B7 y* W+ d       d(delete)、c(change)和y(yank)這一類的指令在 vi 中的指令格式為:
* ]- o4 B. Z9 T. Z1 [8 W4 ?* C       Operator + Scope = command8 o$ C5 V& g4 B* {% a5 I9 n
       (運算子)   (範圍)
2 n3 N& d. \+ v. n& X3 k       運算子:
/ v4 V" K  e* b; U       d       刪除指令。刪除資料,但會將刪除資料複製到記憶體緩衝區。
1 g( A& Q9 m1 e       y       將資料(字組、行列、句子或段落)複製到緩衝區。
0 o4 z: A4 w( N) }2 S       p       放置(put)指令,與 d 和 y 配和使用。可將最後delete或yank的資
' l! b1 D( ~+ n, c) e                料放置於游標所在位置之行列下。( `+ E- ]' w5 U6 G6 c
       c       修改(change)指令,類似delete與insert的組和。刪除一個字組、句
7 h( p+ ~' H1 s# p% V8 s. [* a                子等之資料,並插入新鍵資料。
! g3 L7 p) f( o       範圍:2 E. u' L$ d8 P8 _: z+ t
       e       由游標所在位置至該字串的最後一個字元。% V$ @5 B8 a, w( l6 ?$ N& |; `
       w       由游標所在位置至下一個字串的第一個字元。) V7 X0 `4 y. b/ h7 M5 B
       b       由游標所在位置至前一個字串的第一個字元。
8 f3 b: q" b5 V. N0 t) M       $       由游標所在位置至該行的最後一個字元。
) a/ ]1 A% @7 h! Z6 ^+ C- ]  {       0       由游標所在位置至該行的第一個字元。
) b* u) K2 g% l       )       由游標所在位置至下一個句子的第一個字元。
! y/ r5 C! R2 N" e       (       由游標所在位置至該句子的第一個字元。
- P8 B' W) J% U% z       {       由游標所在位置至該段落的最後一個字元。* H1 X+ L- D9 w( M9 _
       }       由游標所在位置至該段落的第一個字元。: c5 `- c+ W* v% a6 l# {; t3 X
       整行動作0 |( }. E/ n- J( K
       dd      刪除整行。
7 `  i$ z- a7 ~, k       D       以行為單位,刪除游標後之所有字元。
% S* e/ k" k6 n       cc      修改整行的內容。
0 S& |5 u( e6 o6 C       yy      yank整行,使游標所在該行複製到記憶體緩衝區。
/ w) o" U3 ]; R# T3 V0 ]: S( X  X' I1 ?' d  r
4.刪除與修改# B2 r2 K; X8 T4 f: {
       x       刪除游標所在該字元。" b  \* {; f0 }. J
       X       刪除游標所在之前一字元。
0 ?3 _$ g. _  P, B2 n+ K# U       dd      刪除游標所在該行。
8 c8 g( z4 C. D       r       用接於此指令之後的字元取代(replace)游標所在字元。
& Z* S2 p' v7 T$ C* X                如: ra 將游標所在字元以 a 取代之。
1 J* T% o- ^* O/ f0 G       R       進入取代狀態,直到《ESC》為止。
4 |  r, {/ j7 s. N" ^  f! G       s       刪除游標所在之字元,並進入輸入模式直到《ESC》。4 _% d, x  w; f
       S       刪除游標所在之該行資料,並進入輸入模式直到《ESC》。
& G9 D0 e, p- O
: ?# J% v! n  q6 s8 c  f) C1 a9 c* S5.搬移與複製
7 Q; Q' `. Q) G0 H8 B) m$ n7 k) _       利用delete 及 put 指令可完成資料搬移之目的。
+ N; |7 X& p4 b1 ?       利用yank 及 put 指令可完成資料複製之目的。7 @/ F, P+ ~: R2 r
       yank 和delete 可將指定的資料複製到記憶體緩衝區,而藉由 put 指令0 S% P. H3 P/ c- N' ^! o
       可將緩衝區內的資料複製到螢幕上。
1 Q' U  g9 c8 L  H: D0 n3 y       例:2 d  h! E5 Z$ n0 W
       搬移一行        ‧在該行執行 dd. I  H- |0 e# q0 c/ X' B( C$ d
                        ‧游標移至目的地9 W) {" `0 P& n) a" f& X; X" K
                        ‧執行 p
+ R$ c4 T; }" h! p6 p2 {" G: H       複製一行        ‧在該行執行 yy9 |, h% t0 g: `6 Z3 o: v
                        ‧游標移至目的地
5 y- _4 ^; f; N3 Y                        ‧執行 p
8 \/ Z& O6 ~& k7 l9 V3 t
$ E* @" A" z3 S3 C+ d6.指令重複
5 `1 [+ i. L. r, g8 v       在指令模式中,可在指令前面加入一數字 n,則此指令動作會重複執行 n0 f2 s3 V9 i. B% s/ S
       次。
/ b; ^/ q2 a: R& `  S; E: k       例:: y% u/ ]1 J% R% j
       刪除10行                ‧10dd
( E8 p8 m0 b" l6 ]6 H, i& N7 C       複製10行                ‧10yy' k0 ?3 o. L4 W% F
                                ‧游標移至目的地- m; Y4 }# H4 c, f% _
                                ‧p
& b- l3 F- O* S2 u       指標往下移10行 ‧10j
( S6 s& q0 Q: ]2 h- I9 r) k  `, G9 e$ q
7.取消前一動作(Undo)5 e( W' d2 d% ?4 A0 b0 @2 d
       即復原執行上一指令前的內容。3 w) \2 E. p2 f: T  E- M
       u       恢復最後一個指令之前的結果。7 M" k* h) j2 v4 Q
       U       恢復游標該行之所有改變。- z( `$ J, Z, }1 r% W/ h4 ^, G: u
6 e: p9 d* M& C0 |9 W/ J' Q" _
8.搜尋
% }% W8 b9 P8 o% S$ e/ W5 j, ^       在vi中可搜尋某一字串,使游標移至該處。" m) f2 s( V6 b6 a* c9 G
       /字串           往游標之後尋找該字串。9 V2 L& s$ A" ~4 b" g# {
       ?字串           往游標之前尋找該字串。
# F/ N1 B5 \0 b' w1 `  g) [       n               往下繼續尋找下一個相同的字串。# X" `' |, y& p0 G! z  q
       N               往上繼續尋找下一個相同的字串。
; R2 p; {% e5 @$ H: C. U; L2 p, g
3 Q$ l+ G. e, r7 n) X, G8 p+ g' B9.資料的連接* b6 n8 v7 x  {- m
       J       句子的連接。將游標所在之下一行連接至游標該行的後面。7 K! D* Z: x6 o! N1 k7 _) m4 u
       若某行資料太長亦可將其分成兩行,只要將游標移至分開點,進入輸入模式
3 X- M0 P% X: c( V- d, S       (可利用a、i等指令)再按《Enter》即可。+ F$ L7 U$ z, Z0 n
) ], W2 L) e& X9 R
10.環境的設定& ~9 S: M& m4 N3 P% f
       :setnu                設定資料的行號。9 U% w" [! C0 `( x; @4 m- H
       :setnonu              取消行號設定。
! P2 }* `% G* J       :setai                自動內縮。1 {! Z$ U# d/ h3 y4 @. n+ d
       :setnoai              取消自動內縮。0 |& s. T% h4 U
       自動內縮(automatic indentation)
4 W" R* \7 Y6 i' [; d       在編輯文件或程式時,有時會遇到需要內縮的狀況,『:set ai』即提供自
5 @  b8 z6 u: k0 A& Q3 Z" w/ K       動內縮的功能,用下例解釋之:
2 D" Z1 I2 g3 S+ t% ]       ‧vi test
# \9 Y( L. n! I5 J       ‧(進入編輯視窗後)
" l1 u/ ~1 A8 N" H( \         this is the test for auto indent/ A" S- Q. S# ?# B, H
         《Tab》start indent           ← :set ai (設自動內縮)! T5 S" J2 I1 _1 C3 b7 f& ^
         《Tab》data
+ b8 c. f; d, _         《Tab》data
  ?- Z; r4 O  n( f         《Tab》data                   ← :set noai (取消自動內縮)  J) P" F8 B* ^9 r! \  n+ b
       the end of auto indent." t* P8 T6 }3 c
       ‧註:<Ctrl><d>可刪除《Tab》字元。' x+ j# Q6 k+ W
& y0 K- I! g: |  X
11.ex指令. U, A4 q6 V+ w5 w9 {
       讀寫資料
, J* y' m& [, j2 P6 @  K       :w                     將緩衝區的資料寫入磁碟中。/ y$ Y- l6 K! |" I
       :10,20wtest   將第10行至第20行的資料寫入test檔案。* }; _- m( ~: `. P+ \' g* n5 O& c
       :10,20w>>test  將第10行至第20行的資料加在test檔案之後。- B8 z( s; V" I+ C; r, V/ y
       :rtest                將test檔案的資料讀入編輯緩衝區的最後。
0 w0 h: q3 E& M  V0 E& M% w       刪除、複製及搬移
; F) `# l+ P- B/ e       :10,20d                刪除第10行至第20行的資料。
$ Q4 W! ~* w% h6 g4 ]3 l4 D       :10d                   刪除第10行的資料。- L( r0 w5 K1 N# b( a3 z% o
       :%d                    刪除整個編輯緩衝區。
% ]( m; }- A3 a* k; R       :10,20co30             將第10行至第20行的資料複製至第30行之後。
' X/ ?1 q( k' z- Q* M       :10,20mo30             將第10行至第20行的資料搬移至第30行之後。
5 [0 i8 ?# @; ~# B0 x; `2 L0 O, O       字串搜尋與取代
: R3 o$ j0 T- e/ I% w       s(substitute)指令可搜尋某行列範圍。
) n( T% }$ r% `. e5 Z       g(global)指令則可搜尋整個編輯緩衝區的資料。
9 Y4 j& z  n2 H& J) k6 Q/ Q0 a       s指令以第一個滿足該條件的字串為其取代的對象,若該行有數個滿足該條" r- M: q& X2 a7 H1 P( W5 _0 P
       件的字串,也僅能取代第一個,若想取代所有的字串則需加上g參數。
* h1 k* M, {3 S5 V       :1,$s/old/new/g                將檔案中所有的『old』改成『new』。
. D) n9 n! T( J8 ]5 K6 s       :10,20s/^/   /        將第10行至第20行資料的最前面插入5個空白。
# m# S& M! E$ {8 }4 a, I: Y       :%s/old/new/g          將編輯緩衝區中所有的『old』改成『new』。$ R. E4 Q/ |1 P8 R# E
$ `4 q: a3 b, p
12.恢復編輯時被中斷的檔案+ k+ q8 {& A& L) g. n
       在編輯過程中,若系統當掉或連線中斷,而緩衝區的資料並還未
2 B9 I' e- i2 w, t       被寫回磁碟時,當再度回到系統,執行下列指令即可回復中斷前! u/ {  ^3 n$ ?  f& l
       的檔案內容。7 M3 ^8 c% O4 V! `# n' F
       %vi -r filename2 S' [- X4 ]+ Z$ F3 O

* W2 ^5 f$ ?. V6 Q* }& E$ ?13.編輯多個檔案/ K( W. Z8 t* o0 n: Y0 j
       vi亦提供同時編輯多個檔案的功能,方法如下:: O6 }' T5 E$ z. \) x
       %vi file1 file2 ..
9 |6 b0 D6 X! F! Y3 @       當第一個檔案編修完成後,可利用『:w』將該緩衝區存檔,而後
2 `! r9 t0 y6 I# ~  Y7 |       再利用 『:n』載入下一個檔案。
' L3 i; m. S5 y* ]  [! V  A
& q4 N3 a$ G) e3 q: [; \. ?3 Z參考:
  A- A; V1 C- ]8 h
' }$ G0 b0 O' X" L( _( Z: Ihttp://chunchaichang.blogspot.tw/2010/08/vim-s.html
% d# A7 V! f6 {! i3 V+ _1 }
回復

使用道具 舉報

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

本版積分規則

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

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

連絡站長.廣告招商

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

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