in header_common.htm --> -->

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

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

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

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

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

本帖最後由 IT_man 於 2017-5-6 23:16 編輯 9 g9 j8 ^- o* F3 W! f# X0 L
- c4 T* K0 O9 n) `9 q# K% |& v
vi指令說明(完整版)
% d1 o+ Z# j& n4 x  C' j7 I
  • vi 的操作模式- K+ W2 c& L. z5 o6 Y1 n, E

) I( `' S) v  h& V3 {& v, B

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

  • 輸入模式
      h8 G( u( ~/ C8 B% y1 o


1 \! `8 [& V7 L! o' a, p8 x       如何進入輸入模式; x, E: b6 ]) k2 F5 O
                a (append)    由游標之後加入資料。& h/ Z- N5 w7 C% h+ s/ f: ~, w& e
                A                   由該行之末加入資料。& J" Q' b/ Z" H2 m* d, d) }+ o% k
                i (insert)        由游標之前加入資料。# c" A" t: d# j; l$ B2 L  c
                I                   由該行之首加入資料。
; G; o" y4 W  }3 ^1 g' n4 ?0 s                o (open)       新增一行於該行之下供輸入資料之用。, x. ?2 N- x  X, b+ ]1 G
                O                  新增一行於該行之上供輸入資料之用。9 N6 |6 Z; G( M8 k
       如何離開輸入模式
% I1 i- D9 z. c  J6 W7 }             《ESC》          結束輸入模式。
8 v4 O% ]) T% |6 ]! G' c
  • 指令模式# I9 e( J1 m  c! ~( y


5 u6 V0 l  S: I  s1.游標之移動' M: Q' c! V4 L& Z3 z' j) m
              h       向左移一個字元。$ j7 `' z4 E4 H( v, W. ^, l
              j       向上移一個字元。5 r6 D& u+ G+ ?/ T
              k       向下移一個字元。
  ~. e3 T( v7 f! x" h              l       向右移一個字元。
& D# j: n. g- E1 M/ \* ~! \9 q              0       移至該行之首
7 Z9 [$ f2 Z' m1 i, @# T0 v              $       移至該行之末。
8 D6 h6 z1 v' n7 p9 l2 @              ^       移至該行的第一個字元處。# f; J+ X8 I. A* Q1 R0 z
              H       移至視窗的第一列。
- L7 N) v: Z$ P- y* }  u4 }              M       移至視窗的中間那列。* v6 x/ R! n- {9 q4 [  }
              L       移至視窗的最後一列。$ F2 ^! `1 a; Q$ z! I" s) ~! ]9 z2 T
             G       移至該檔案的最後一列。
+ C. d/ I$ z: p2 v/ V5 b: s9 y             +       移至下一列的第一個字元處。
* ~+ i  O% J; @) x             -       移至上一列的第一個字元處。
# z; ~4 K& y- I  ?             (       移至該句之首。 (註一)
/ j" Y1 }. y! S# o' G             )       移至該句之末。
% p& j# e1 e! ^* X. J3 [             {       移至該段落之首。 (註二)5 d8 H) s4 o+ N6 }
             }       移至該段落之末。4 x6 z) ]. l; z/ G+ ]
             nG      移至該檔案的第 n 列。% e# M8 r  n# f' X9 ?
             n+      移至游標所在位置之後的第 n 列。
/ C* `" T/ `: }# ?, i. Z5 }             n-      移至游標所在位置之前的第 n 列。- u6 @3 L3 \4 e( B/ p, J
            <Ctrl><g>       會顯示該行之行號、檔案名稱、檔案中最末行之行號、游標所在行號佔總行號之百分比。  H0 {! f) }$ c; H
            註一:句子(sentence)在vi中是指以『!』、『.』或『?』結束的一串字。
5 s1 n, y* \1 t$ }6 Z            註二:段落(paragraph)在vi中是指以空白行隔開的文字。
' P3 M5 T( U7 `$ ?; \7 m  E( O: s. ~
2.視窗的移動       <Ctrl><f>       視窗往下捲一頁。+ F0 d- M& v; l( S' t# p, \
           <Ctrl><b>       視窗往上捲一頁。
) L0 @9 T3 \0 ]# K           <Ctrl><d>       視窗往下捲半頁。
# B' F: E+ j1 i' L           <Ctrl><u>       視窗往上捲半頁。
, u+ e0 d4 w& ^1 V           <Ctrl><e>       視窗往下捲一行。) f. h0 v$ a% @% ^
           <Ctrl><y>       視窗往上捲一行。  |3 x" Y: T8 ?# v

/ K/ s) }- b5 @5 q3 A/ k3.刪除、複製及修改指令介紹 (此單元較少使用)1 {* j0 G6 i1 G- m2 F$ w
       d(delete)、c(change)和y(yank)這一類的指令在 vi 中的指令格式為:
! l5 Z4 e4 f& `, H       Operator + Scope = command
( ]+ f! v7 u, b& |0 z. Z% Y       (運算子)   (範圍)
! z3 X$ ]$ I4 @/ R: V3 W       運算子:
3 ]. L" ?5 t; s       d       刪除指令。刪除資料,但會將刪除資料複製到記憶體緩衝區。
5 d5 G+ A% h5 W* c! \. Y       y       將資料(字組、行列、句子或段落)複製到緩衝區。
/ [; L3 Y% b0 L+ X, C# q9 Z       p       放置(put)指令,與 d 和 y 配和使用。可將最後delete或yank的資3 z- I1 R" m$ |! o  g( {
                料放置於游標所在位置之行列下。: o& |' j  v$ R9 W+ _
       c       修改(change)指令,類似delete與insert的組和。刪除一個字組、句
& A0 G& J0 U8 X! o( D4 Q: ^                子等之資料,並插入新鍵資料。# E3 n" G+ x9 y+ v; z' h  D
       範圍:( P0 I( w- G3 ?6 p+ b! U; `/ V
       e       由游標所在位置至該字串的最後一個字元。
) x+ p4 q( b" a$ |1 ~/ `       w       由游標所在位置至下一個字串的第一個字元。3 A2 {. a1 r1 z  @% c
       b       由游標所在位置至前一個字串的第一個字元。! `9 X9 {- m- O# u  b
       $       由游標所在位置至該行的最後一個字元。
3 n' i. }  t4 C       0       由游標所在位置至該行的第一個字元。2 ~$ L( i7 x, ^1 j) f
       )       由游標所在位置至下一個句子的第一個字元。$ m& V0 ~0 D- k% C
       (       由游標所在位置至該句子的第一個字元。
8 p* J. w) v1 U4 c; W       {       由游標所在位置至該段落的最後一個字元。
4 J2 K0 q+ P! y' K9 ^& C       }       由游標所在位置至該段落的第一個字元。
$ Z, L; {# K' r; ]$ w! O0 O2 C       整行動作3 v0 U  }1 Y2 J2 C/ Z4 d
       dd      刪除整行。% \8 ^% H/ C$ l/ g  O. W
       D       以行為單位,刪除游標後之所有字元。
& b. Y: C9 y  b6 ]7 F       cc      修改整行的內容。9 T4 Y- |4 @* w  A. ]7 V1 F$ J
       yy      yank整行,使游標所在該行複製到記憶體緩衝區。
# Y5 a/ n# N8 t
) r2 d: \1 Q/ C6 e4.刪除與修改
  ~4 H  f- i5 `# o& S, L       x       刪除游標所在該字元。
4 w* g2 D7 j6 e( ?# o& I       X       刪除游標所在之前一字元。
; ?6 h" i1 g; M" \  W; f       dd      刪除游標所在該行。
+ Z5 t# N& v4 y( U  m, S       r       用接於此指令之後的字元取代(replace)游標所在字元。
; X% B" Z; D% Y* U4 }                如: ra 將游標所在字元以 a 取代之。4 t7 r" \) b: l. G1 n8 }
       R       進入取代狀態,直到《ESC》為止。) ]$ z7 v# `2 J6 d, \3 f8 V
       s       刪除游標所在之字元,並進入輸入模式直到《ESC》。! a. l! _8 V& B. S
       S       刪除游標所在之該行資料,並進入輸入模式直到《ESC》。
& M$ k) ^+ n5 r$ Z* p# j" i- u' K( w. c4 O. [4 l, V- f. G: h
5.搬移與複製# n/ ^8 q) ^- A4 s7 Q/ j( v: P
       利用delete 及 put 指令可完成資料搬移之目的。5 P3 O+ v* ^' N: F# H/ Y
       利用yank 及 put 指令可完成資料複製之目的。
5 }7 A1 K& i2 T2 \0 s% M       yank 和delete 可將指定的資料複製到記憶體緩衝區,而藉由 put 指令5 ^' @9 x2 F* n0 k
       可將緩衝區內的資料複製到螢幕上。
) u+ p2 P0 W3 H0 K7 s+ g       例:
  z; H; q" D# I) q  ~       搬移一行        ‧在該行執行 dd
4 S( ?* j, E6 p                        ‧游標移至目的地
: f" h# {: u# h( H* C1 H                        ‧執行 p
) n7 w+ X+ J3 S! e       複製一行        ‧在該行執行 yy
2 x3 I8 I+ u& M; a( _+ r/ m0 F                        ‧游標移至目的地
* ?1 a8 _9 P6 k, [% A, i                        ‧執行 p, U* Z: M7 _: i$ K1 [
/ K/ E# t0 z6 N2 @# }+ u
6.指令重複7 X" F& V0 p% g3 M0 T
       在指令模式中,可在指令前面加入一數字 n,則此指令動作會重複執行 n* Y# R  O- ]$ p; ]# G
       次。
6 M) L+ b5 L+ w0 Q+ G3 j       例:& I+ @0 l( C) j1 u
       刪除10行                ‧10dd
; l& m4 \/ `/ E8 `" u# _       複製10行                ‧10yy
, K4 Q$ @5 W$ S- U( S% c$ c                                ‧游標移至目的地
) M4 U8 x; A0 V8 r6 a% [                                ‧p
+ o- P3 O/ G  j       指標往下移10行 ‧10j
% A4 g- h% c9 V0 _6 u$ V5 i7 [  j) w) F2 F# d) X4 g9 ?
7.取消前一動作(Undo)% ]; `& Z) J8 k: O, ?& a! t
       即復原執行上一指令前的內容。7 S. ]2 b. F% E5 D2 b0 x
       u       恢復最後一個指令之前的結果。& x! I0 J) d3 l4 R  }2 _; B
       U       恢復游標該行之所有改變。/ l. q- k) ]3 t* J
7 |3 _9 [# f5 O
8.搜尋
4 u- d1 w$ u/ \1 ?       在vi中可搜尋某一字串,使游標移至該處。
& Z" E# e' X" |! `  r$ b& q; @       /字串           往游標之後尋找該字串。
3 r& K& B1 O1 q0 \" `- S# T" {       ?字串           往游標之前尋找該字串。
$ ?9 A/ [) x0 A) f, |, T' T6 T       n               往下繼續尋找下一個相同的字串。, q8 k# z' y8 q8 y& V
       N               往上繼續尋找下一個相同的字串。
5 z; L2 c( O1 Y' I
9 U+ ^( m4 r# d7 ?* h; O9.資料的連接% R3 P- H8 C2 {1 i1 h4 e3 l% |
       J       句子的連接。將游標所在之下一行連接至游標該行的後面。
' E% O* D7 n7 o+ L' g; w8 B       若某行資料太長亦可將其分成兩行,只要將游標移至分開點,進入輸入模式( ]+ N* S; _; ]. w& K( T
       (可利用a、i等指令)再按《Enter》即可。6 ?* r+ ^; C; k, k4 a9 V

3 f( k- Z- I$ p5 ]* D7 O10.環境的設定! l7 c; e$ D, c3 v+ `- E# d* y6 B
       :setnu                設定資料的行號。
" g  ]3 D/ `4 `$ j- q6 D# H, @, p       :setnonu              取消行號設定。, B7 y0 o4 M8 w
       :setai                自動內縮。
7 A9 ^. o) h9 E8 L: \% t4 ^% a( w       :setnoai              取消自動內縮。
% h: q5 b7 W1 A$ V       自動內縮(automatic indentation)
1 C  }8 Q" I0 |5 d; \- G! w8 P7 R       在編輯文件或程式時,有時會遇到需要內縮的狀況,『:set ai』即提供自
/ ?; _7 o2 H! m! W: s       動內縮的功能,用下例解釋之:
& P1 `5 Q  s) L% _       ‧vi test- O) Z5 U0 k2 Q
       ‧(進入編輯視窗後)
6 y1 t' Y% V2 v& X  F         this is the test for auto indent
. M/ ~1 ?; @6 @: ?; ~         《Tab》start indent           ← :set ai (設自動內縮): H1 s9 D& S. O' Y; D# C
         《Tab》data
3 E2 x, {4 q' u5 n$ F; @         《Tab》data6 f* {+ A! X) ~
         《Tab》data                   ← :set noai (取消自動內縮)
# _( p0 P+ u. ^       the end of auto indent.
7 E9 Q, |9 n0 y" V+ {8 E% W       ‧註:<Ctrl><d>可刪除《Tab》字元。% A! P% ^+ j1 Q; u: j5 q

! [8 R2 T" ?: z8 j  U$ f2 b11.ex指令9 Z9 O* P' a$ e
       讀寫資料
0 G3 j9 O7 D8 C. d; R; Y3 U       :w                     將緩衝區的資料寫入磁碟中。
" A2 n! s( s. |6 V7 K9 j$ T       :10,20wtest   將第10行至第20行的資料寫入test檔案。
/ _) }. l: R- ?' Q       :10,20w>>test  將第10行至第20行的資料加在test檔案之後。
3 U( o. m' A: D& f       :rtest                將test檔案的資料讀入編輯緩衝區的最後。
; O  G! b) l1 ]" M/ C       刪除、複製及搬移9 k7 _2 f3 a6 F
       :10,20d                刪除第10行至第20行的資料。+ f2 o/ q' M  b# e3 k
       :10d                   刪除第10行的資料。
& q6 z! Z+ W; M       :%d                    刪除整個編輯緩衝區。
0 v7 L( t3 t* f4 m% Z" Q       :10,20co30             將第10行至第20行的資料複製至第30行之後。
; @; F8 M" r9 a       :10,20mo30             將第10行至第20行的資料搬移至第30行之後。
  r+ A4 g# R0 m, J. q       字串搜尋與取代
8 o& m- A* [) s6 J       s(substitute)指令可搜尋某行列範圍。
1 q4 c0 F3 [5 P1 _+ z0 ?& E  n# l       g(global)指令則可搜尋整個編輯緩衝區的資料。
. O9 }8 I1 f. B+ b* h       s指令以第一個滿足該條件的字串為其取代的對象,若該行有數個滿足該條
2 [6 R$ o% L2 J/ d/ j! ~! B       件的字串,也僅能取代第一個,若想取代所有的字串則需加上g參數。3 F! t, g  ^  h  ~) [4 {! S" H. K
       :1,$s/old/new/g                將檔案中所有的『old』改成『new』。
/ E0 ^7 ?6 G, l6 f1 C8 I% `3 f. M       :10,20s/^/   /        將第10行至第20行資料的最前面插入5個空白。
+ [7 @" ^# L) k, Y2 a4 P& V5 x       :%s/old/new/g          將編輯緩衝區中所有的『old』改成『new』。# |! J; j+ K6 b5 k6 f

4 b% O& ^' a2 r9 P. t. R# `5 E! C" B12.恢復編輯時被中斷的檔案
  N; T" T5 i1 w" S& [& b3 z! i       在編輯過程中,若系統當掉或連線中斷,而緩衝區的資料並還未
8 c8 B4 H" p& E. ^       被寫回磁碟時,當再度回到系統,執行下列指令即可回復中斷前
  ^7 z0 m0 A" y       的檔案內容。
6 `/ Y$ M7 X7 x7 ?8 Y, N  p/ ^" D       %vi -r filename
0 W* ]5 `1 i9 w; z. y+ R1 i2 m# I2 f9 z$ _
13.編輯多個檔案$ u( d0 G+ F# B" b; T
       vi亦提供同時編輯多個檔案的功能,方法如下:6 s4 k- ]: o9 ^
       %vi file1 file2 ..8 V) Z0 {5 [. o
       當第一個檔案編修完成後,可利用『:w』將該緩衝區存檔,而後
# ?$ q- l2 y5 j7 X       再利用 『:n』載入下一個檔案。, v; O  D  _1 x) k) [6 [

. ~! f. {6 j! r5 M# c1 j參考:
7 J* h* n) u/ A
2 Y; |! M' U$ O% k1 H2 A: Jhttp://chunchaichang.blogspot.tw/2010/08/vim-s.html9 h, N. b8 `; A& U4 ]9 g
-->
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則


-->

聚BT福利

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

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

GMT+8, 2024-12-24 01:08 , Processed in 0.065743 second(s), 16 queries .

連絡站長.廣告招商

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

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