in header_common.htm --> -->

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

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

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

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

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

本帖最後由 IT_man 於 2017-5-6 23:16 編輯
- S' X0 t$ D5 D1 M6 q4 N4 T; @
0 _1 W( B  q' h4 gvi指令說明(完整版). A  O  }# I( W. J9 c4 f) |  V, ~5 f
  • vi 的操作模式* e6 Z/ e  R( {- J, L


% x, f# H6 c; L4 ~# z6 T

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

  • 輸入模式  e$ V$ T7 Y* O8 [

% S  w6 g. j0 {* A- p3 e5 T; Z
       如何進入輸入模式
2 p& ^( e" ^: C& [& w                a (append)    由游標之後加入資料。
7 V& E* W0 |2 u                A                   由該行之末加入資料。
0 D) O8 Z4 ^+ W2 N+ J: s                i (insert)        由游標之前加入資料。( Z) p9 e; g' q& A" x
                I                   由該行之首加入資料。
+ c) a- P; R3 c8 Z: Z0 D( h" ~* l                o (open)       新增一行於該行之下供輸入資料之用。0 \8 Y3 O; R" ^* R! u- U
                O                  新增一行於該行之上供輸入資料之用。
2 J0 t8 K9 n. D( `9 j5 g. l, `       如何離開輸入模式( e$ V8 ~9 q! v1 x
             《ESC》          結束輸入模式。
2 L3 N- x  G/ Z- w, h
  • 指令模式
    0 ?* x! R" \- @

& p3 v+ q$ k6 G( M* F$ Q
1.游標之移動
! E  X& j  C  F$ }              h       向左移一個字元。
& w2 {$ t; B( j+ q( V+ G              j       向上移一個字元。1 G" {5 U/ u1 H! ?
              k       向下移一個字元。
! ?& O7 l0 o3 h7 D              l       向右移一個字元。/ r, z3 z& g: Y6 Q; w
              0       移至該行之首- Y4 _$ }8 Y' N+ e
              $       移至該行之末。
: L9 p& [2 G+ L              ^       移至該行的第一個字元處。9 Z2 ]0 C7 Y/ {1 W% i' u9 l
              H       移至視窗的第一列。
  I; J3 H7 Z% |% r6 d4 R9 r              M       移至視窗的中間那列。# t9 r) ?# Q# w. ~/ S% N/ Y% c
              L       移至視窗的最後一列。
# Q  ?8 S/ e) ^& H2 L- m             G       移至該檔案的最後一列。
+ m% R  V; D2 V, d2 M; c) N; m             +       移至下一列的第一個字元處。1 m# c5 u! U- v  T$ V& U
             -       移至上一列的第一個字元處。6 b7 f3 p8 s' t, b' S2 r
             (       移至該句之首。 (註一)( R' q9 ^6 V4 I8 P. v
             )       移至該句之末。
  L8 s! t: a1 Y2 C7 D7 C8 z             {       移至該段落之首。 (註二)
% V% D  j( ?1 R& g4 Q             }       移至該段落之末。5 u3 a& O2 D$ Q: q$ K8 T! C
             nG      移至該檔案的第 n 列。
+ @0 _+ i4 P" |- c: G             n+      移至游標所在位置之後的第 n 列。* J7 I8 i/ q1 x& e- t0 q
             n-      移至游標所在位置之前的第 n 列。
3 a/ l4 @' @) ~6 l; ]# ~% i            <Ctrl><g>       會顯示該行之行號、檔案名稱、檔案中最末行之行號、游標所在行號佔總行號之百分比。
) I6 M; D+ x( v: `            註一:句子(sentence)在vi中是指以『!』、『.』或『?』結束的一串字。  H$ e! K5 j( O" E8 T, H7 n' T) U
            註二:段落(paragraph)在vi中是指以空白行隔開的文字。7 }2 w3 E! D! E5 Y5 D& V
: D: J2 G/ W$ Q/ M
2.視窗的移動       <Ctrl><f>       視窗往下捲一頁。" _( r! a" z  |0 s  P: s2 N0 _
           <Ctrl><b>       視窗往上捲一頁。$ l" P1 A  [4 m8 k/ f& U- u2 q
           <Ctrl><d>       視窗往下捲半頁。
" E4 U) n. Q( `" ~: |( E           <Ctrl><u>       視窗往上捲半頁。
3 E( U9 q' |9 V+ X6 g           <Ctrl><e>       視窗往下捲一行。
( [# M5 f3 K/ y1 _* h  v: \           <Ctrl><y>       視窗往上捲一行。% E( Q" s9 h: b( \

9 \9 w- C1 I) p0 ?+ b! J& E. A3.刪除、複製及修改指令介紹 (此單元較少使用)) U5 z* ~) h9 ?# z' Q& {6 z  p
       d(delete)、c(change)和y(yank)這一類的指令在 vi 中的指令格式為:+ z1 g7 V) L) U" n8 ~$ d2 P: a+ b
       Operator + Scope = command  `1 T. @' {2 i- \& y) C, B' o
       (運算子)   (範圍)
2 Z/ M4 y! q& k* r  p8 G5 K. }7 W7 e       運算子:
6 u: H6 |7 j  X' j/ W* G3 j; Y       d       刪除指令。刪除資料,但會將刪除資料複製到記憶體緩衝區。5 ?8 i9 b" r0 V+ |% J
       y       將資料(字組、行列、句子或段落)複製到緩衝區。
# N3 ?$ n& M, e2 W5 W  l       p       放置(put)指令,與 d 和 y 配和使用。可將最後delete或yank的資9 N, m: S- r. J: e3 I) ^
                料放置於游標所在位置之行列下。/ o: a' v; I3 Z) V, V/ W! @) ?& L
       c       修改(change)指令,類似delete與insert的組和。刪除一個字組、句
% n5 c' X3 f5 C( \                子等之資料,並插入新鍵資料。3 J8 G% |, W- r
       範圍:
$ G! `* D6 F! i9 O' b) C       e       由游標所在位置至該字串的最後一個字元。8 k- z* K& T* N/ V0 F$ M! h0 T
       w       由游標所在位置至下一個字串的第一個字元。% ?9 g4 |: o, t$ w3 f  U
       b       由游標所在位置至前一個字串的第一個字元。' q2 D1 v6 z1 @; B
       $       由游標所在位置至該行的最後一個字元。' s+ i9 A3 ?' {1 t* F% C
       0       由游標所在位置至該行的第一個字元。
+ `. E2 m) p0 w! T       )       由游標所在位置至下一個句子的第一個字元。* \. d1 h. n' P1 O+ x# u- `
       (       由游標所在位置至該句子的第一個字元。
, R% h. w( Y8 @6 r6 Q. D( z$ ~, B' b       {       由游標所在位置至該段落的最後一個字元。3 K1 b3 S, k, P0 H+ z- I
       }       由游標所在位置至該段落的第一個字元。7 L0 q9 M3 k8 j: [& `
       整行動作  J# a; C# d0 V' K& t5 U3 D- }
       dd      刪除整行。
+ ]1 ~& S* u) c       D       以行為單位,刪除游標後之所有字元。
$ e6 o, e7 ?7 g5 w       cc      修改整行的內容。
$ i1 Q8 v. P  m8 i6 N       yy      yank整行,使游標所在該行複製到記憶體緩衝區。: `& N9 k7 a7 {: U" W! U
1 R* F9 w  c5 n& s4 \' h5 S
4.刪除與修改
+ w6 x8 A4 M. i0 E2 P( Y1 e/ d; H- L       x       刪除游標所在該字元。- ~2 w/ z6 s$ B' l+ F
       X       刪除游標所在之前一字元。2 v2 H9 i7 Y0 f6 }3 P1 d0 N
       dd      刪除游標所在該行。
" [+ I# \6 S6 T6 I! ]4 e       r       用接於此指令之後的字元取代(replace)游標所在字元。
7 A; ]/ E( Y* p- ?9 e0 Q8 u* D% K                如: ra 將游標所在字元以 a 取代之。( r7 U9 i; h/ Q9 V' `( J5 [
       R       進入取代狀態,直到《ESC》為止。
0 P+ r6 p1 w, o- r$ R       s       刪除游標所在之字元,並進入輸入模式直到《ESC》。
$ ?4 U' i) F) |7 m0 E1 K9 K       S       刪除游標所在之該行資料,並進入輸入模式直到《ESC》。' x3 X9 z' }) G
' U1 \7 W; c( r  v+ V
5.搬移與複製
; ]2 g, ~2 S) i8 r       利用delete 及 put 指令可完成資料搬移之目的。
# u* H) P! `1 {$ d       利用yank 及 put 指令可完成資料複製之目的。5 Y6 _% e9 z5 U! I3 c9 Y
       yank 和delete 可將指定的資料複製到記憶體緩衝區,而藉由 put 指令
4 b8 |+ }9 X# _3 J' i" J1 e       可將緩衝區內的資料複製到螢幕上。) i# J( Z  l0 E7 X) U' [; o& |' p
       例:! A, @7 r% l; y
       搬移一行        ‧在該行執行 dd2 M% s% l  y2 q  |
                        ‧游標移至目的地
/ D+ W( L8 r/ d$ ~, A9 X; k, F                        ‧執行 p
. Z2 A4 o3 S* Z0 M+ ], x0 b! D       複製一行        ‧在該行執行 yy
( \1 O) L! v" `8 k$ @                        ‧游標移至目的地6 }. C' g$ b1 r. I# Q
                        ‧執行 p% E& m5 c+ q! e# t; t  `
: P, y- }" ^/ T  p& U: R* Y1 ?: U
6.指令重複6 y+ P0 E( I/ @# u/ O2 g
       在指令模式中,可在指令前面加入一數字 n,則此指令動作會重複執行 n
' O7 Y# ?% C  }" @       次。3 X. r7 r' D! R# N! F
       例:
4 M% t0 k' T5 B4 p2 Q4 a/ D: P       刪除10行                ‧10dd" _  j: I  B' c+ O
       複製10行                ‧10yy! g4 i8 P$ F/ |1 d
                                ‧游標移至目的地
) H3 J; x, _( G& O5 |% S* _                                ‧p
6 P' c: g; P: S' p& |- ]       指標往下移10行 ‧10j# ]; i" G! S# |8 D7 w

1 z4 m+ k; t" ^; D; L# g& B7 P& S7.取消前一動作(Undo)$ a: X/ D5 L4 G, Y) U- ?
       即復原執行上一指令前的內容。
- q% }) ]. e+ [       u       恢復最後一個指令之前的結果。
$ j) w6 B7 ^) u- U8 Z) o; c, Z       U       恢復游標該行之所有改變。3 o+ c1 \9 }/ v, B# B

. a* A5 y9 E6 r8 X: F* p" _! e8.搜尋* ^5 T2 _7 `) g
       在vi中可搜尋某一字串,使游標移至該處。) @/ Z& n9 C, ?8 V, l
       /字串           往游標之後尋找該字串。- H2 d9 B8 F. S  ]% O6 T
       ?字串           往游標之前尋找該字串。0 O  D$ A; u) @
       n               往下繼續尋找下一個相同的字串。
# R3 L+ R2 j4 N& B, X       N               往上繼續尋找下一個相同的字串。9 {# }" H( t) D" Q$ X; \4 t

' q0 ^8 q5 F0 \* Z% e/ E9.資料的連接2 S0 ~) [" C" W" V
       J       句子的連接。將游標所在之下一行連接至游標該行的後面。
" |/ u$ {6 J- y2 k6 n0 F+ m       若某行資料太長亦可將其分成兩行,只要將游標移至分開點,進入輸入模式' @/ q0 T4 K- g) l, r
       (可利用a、i等指令)再按《Enter》即可。: i' v9 ~9 }- g/ C& k& N

; j* B: i4 c$ U0 i10.環境的設定' J) d, |* U0 J7 l/ U0 P
       :setnu                設定資料的行號。
- w, Q  D+ S+ G, K2 f% G2 k: y. L       :setnonu              取消行號設定。
3 I( n& m: s7 i( v4 A4 c! A       :setai                自動內縮。
# b+ J6 A  C% a( y       :setnoai              取消自動內縮。0 I9 o) p/ j8 s7 [; I
       自動內縮(automatic indentation)
- h8 @1 \" d" d9 V6 Z4 n! R8 D       在編輯文件或程式時,有時會遇到需要內縮的狀況,『:set ai』即提供自+ G: x: q# @2 r2 {/ |
       動內縮的功能,用下例解釋之:" \1 i5 R; \5 Y2 A% L
       ‧vi test5 u7 E3 Y7 m) F1 l: `
       ‧(進入編輯視窗後)' M, D  X( V$ v3 T1 W: R& e7 I
         this is the test for auto indent
; h# j! z; Z  e. M         《Tab》start indent           ← :set ai (設自動內縮)
1 v8 B& ^1 H: V( d" o  k* P         《Tab》data) t; |" |, |- h
         《Tab》data
8 [* r1 U5 Q+ y4 a/ y9 R, ?0 c0 Q: h         《Tab》data                   ← :set noai (取消自動內縮)) j8 S/ O: K! C; `) m
       the end of auto indent.; j3 a; m1 T( h- h8 ]- F' V0 `
       ‧註:<Ctrl><d>可刪除《Tab》字元。0 R$ R) P; C  D9 G
+ n) `* X5 }/ d( @" a0 X( i
11.ex指令+ `, [1 A) w9 C/ i% B
       讀寫資料
& J8 z2 S" k$ r* E6 s. V) ^       :w                     將緩衝區的資料寫入磁碟中。
8 U' B& m/ r) L4 m# [       :10,20wtest   將第10行至第20行的資料寫入test檔案。
0 q  Q/ w! R( B, Z6 p6 \: x7 `( f       :10,20w>>test  將第10行至第20行的資料加在test檔案之後。
/ i( X( I% N9 @       :rtest                將test檔案的資料讀入編輯緩衝區的最後。
. r" l9 W! O/ S& Q1 Y, A       刪除、複製及搬移/ z$ \0 p& x$ ^3 J2 t! A' B0 k. e3 ~
       :10,20d                刪除第10行至第20行的資料。4 t% ?2 C# L' q% r- L
       :10d                   刪除第10行的資料。6 |0 n; j( B2 t: M, h2 X
       :%d                    刪除整個編輯緩衝區。
- ~3 D) _) {. ~* o$ A       :10,20co30             將第10行至第20行的資料複製至第30行之後。1 [7 D& R& ^8 S% g& ?$ m* S
       :10,20mo30             將第10行至第20行的資料搬移至第30行之後。
  o; n( J# }; A' {  j) f       字串搜尋與取代7 `8 n' e0 H% v- H1 U
       s(substitute)指令可搜尋某行列範圍。2 m8 {( P. U, C8 ?: {
       g(global)指令則可搜尋整個編輯緩衝區的資料。
$ ^( ~0 ]/ ?& E       s指令以第一個滿足該條件的字串為其取代的對象,若該行有數個滿足該條
4 v- h$ u0 W. g; {" D) Q       件的字串,也僅能取代第一個,若想取代所有的字串則需加上g參數。. i' [" z5 @& i# G" e$ ?( E
       :1,$s/old/new/g                將檔案中所有的『old』改成『new』。
9 O( Y  l: c! E; T8 F6 C5 K5 e9 L       :10,20s/^/   /        將第10行至第20行資料的最前面插入5個空白。
1 m- b. ^, ]& u/ O, s% V2 x       :%s/old/new/g          將編輯緩衝區中所有的『old』改成『new』。+ I4 A) |; y: N$ H8 ?, ^

. z$ H( k" ?0 C* T8 w; z( G12.恢復編輯時被中斷的檔案" ?: Z/ _8 x- w% U" Q" ]" K
       在編輯過程中,若系統當掉或連線中斷,而緩衝區的資料並還未: c+ [7 W, Y# n5 L5 s; n
       被寫回磁碟時,當再度回到系統,執行下列指令即可回復中斷前
) z) M& [) n5 B: C       的檔案內容。; ^. u8 B) B6 C& D0 U9 R, [, A' |
       %vi -r filename
8 ?- r1 N& O0 E( [  o
; c1 J9 ^0 W; {3 R! p13.編輯多個檔案
: \0 }5 i# r2 f' V       vi亦提供同時編輯多個檔案的功能,方法如下:, h- h9 Y/ Z& |7 a
       %vi file1 file2 ..
1 R* F5 x$ ?1 K: ?" w       當第一個檔案編修完成後,可利用『:w』將該緩衝區存檔,而後
7 J5 U4 n2 P) `2 l. b3 R" g       再利用 『:n』載入下一個檔案。
3 _3 Z& z/ |# @% r1 Y6 p7 v- ~+ L8 ^9 ]0 c6 w) v
參考:9 R5 F7 [6 C# G# E& }

& }- R$ b) i2 c, Xhttp://chunchaichang.blogspot.tw/2010/08/vim-s.html5 t8 y( J  ?1 b5 |3 g( \
-->
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則


-->

聚BT福利

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

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

GMT+8, 2024-10-3 20:28 , Processed in 0.071012 second(s), 16 queries .

連絡站長.廣告招商

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

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