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

 找回密碼
 立即註冊
查看: 1948|回復: 0

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

[複製鏈接]
發表於 2014-11-18 08:47:14 | 顯示全部樓層 |閱讀模式
tid=95& 本帖最後由 IT_man 於 2017-5-6 23:16 編輯 0 l  D9 i  @# m5 G$ `- R& `  L
5 v, L7 E, I1 v$ ~8 g0 ^( a* N
vi指令說明(完整版)- z; u* r& I0 K8 m; ]5 ]. ?/ L  m: w
  • vi 的操作模式
    & U( m3 y3 G  E8 u6 E+ A


3 q; p+ [9 G, f+ v

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

  • 輸入模式" M, ~5 {9 y  H+ h3 w& V& i0 w


7 C8 r5 i. s3 j( z7 K2 J       如何進入輸入模式* D0 w8 ~: t" V1 Y
                a (append)    由游標之後加入資料。$ r: e. o2 @& {" {! R1 a7 W
                A                   由該行之末加入資料。
! H$ ]5 R9 Q' k$ E                i (insert)        由游標之前加入資料。
2 B& K9 l9 i% f                I                   由該行之首加入資料。
2 M3 {# M! q8 ?/ U                o (open)       新增一行於該行之下供輸入資料之用。
8 G. \8 p6 Q, ~* I5 l                O                  新增一行於該行之上供輸入資料之用。
5 X% k2 B: K. M+ J2 w       如何離開輸入模式
5 Z4 V, v. e. C: y  m+ N5 A6 b             《ESC》          結束輸入模式。2 o5 P& E/ n. O
  • 指令模式: j  z0 W8 T& U  v' l" |9 O


: r6 O) n) a5 B5 G- i1.游標之移動
& F! p" g2 Y4 Y9 M9 k6 d3 {              h       向左移一個字元。' e/ Q# k% O6 ]  L. Q
              j       向上移一個字元。4 z# E9 C- ?3 i- W5 ~
              k       向下移一個字元。
6 n* H' W) ]" K              l       向右移一個字元。  ]; l/ I% l4 r: L, _9 H, b# M
              0       移至該行之首
* d* D( C7 Z; t! K& A              $       移至該行之末。) Q3 }- u  Q; D7 r' d  j" z
              ^       移至該行的第一個字元處。' p" _8 j2 }$ f: v; ^
              H       移至視窗的第一列。
, G& ~) m' |8 b- \4 W, J( Y              M       移至視窗的中間那列。! e+ q6 {$ L9 ~. [2 N
              L       移至視窗的最後一列。
$ L+ J4 e0 t$ }) r# x1 e( R             G       移至該檔案的最後一列。
" T7 p( {' `+ O( E) G. U# E             +       移至下一列的第一個字元處。
" f. n; \. v7 g/ T2 o             -       移至上一列的第一個字元處。. d6 ]5 |0 |: ~' e2 K8 W1 E
             (       移至該句之首。 (註一)/ e- E1 M2 F" a2 x6 ?3 P
             )       移至該句之末。3 g. \0 D) s! i3 w5 ^! U
             {       移至該段落之首。 (註二)
$ S. K0 S8 b7 j% l+ Z             }       移至該段落之末。/ w! R- Z" M  W% G6 M& m0 h/ Y
             nG      移至該檔案的第 n 列。
$ H) F0 x* s, e. h             n+      移至游標所在位置之後的第 n 列。
& U, b: Y" k- a             n-      移至游標所在位置之前的第 n 列。
. V, R4 g  E5 g0 T" c: b8 r            <Ctrl><g>       會顯示該行之行號、檔案名稱、檔案中最末行之行號、游標所在行號佔總行號之百分比。
8 K/ N% a6 E3 W$ D            註一:句子(sentence)在vi中是指以『!』、『.』或『?』結束的一串字。
% l1 t* s  ^2 |: @  H3 k) a            註二:段落(paragraph)在vi中是指以空白行隔開的文字。0 I0 o, I1 |- p& ]

) [/ g$ e* T# ]( I* _# i9 U; K, p( E2.視窗的移動       <Ctrl><f>       視窗往下捲一頁。0 v4 D. h# X) r/ [. n9 r0 ~
           <Ctrl><b>       視窗往上捲一頁。
& T* J0 q% @& Q+ W; y8 X. J& D           <Ctrl><d>       視窗往下捲半頁。
# u$ x) C6 Y  f, @           <Ctrl><u>       視窗往上捲半頁。
" Y! Y, h+ C, Q3 E% `4 `5 G7 G           <Ctrl><e>       視窗往下捲一行。
8 _7 e- A! `+ {# ?9 G* I0 x# X0 o           <Ctrl><y>       視窗往上捲一行。1 e- `7 ]: D/ H6 ~  a! k. L

/ r9 e* F. B: o9 |3.刪除、複製及修改指令介紹 (此單元較少使用)) `( U  b5 a! Z6 @# G: U  U; E7 `
       d(delete)、c(change)和y(yank)這一類的指令在 vi 中的指令格式為:9 ^- ]2 d3 ]+ X+ j- F
       Operator + Scope = command
. A! t+ `) y7 C; S0 \  c4 g       (運算子)   (範圍). J/ _; J. R4 o* G) r% F
       運算子:
: X. e# l# I/ s5 S& ^       d       刪除指令。刪除資料,但會將刪除資料複製到記憶體緩衝區。
& k9 n; v. n5 w- ?       y       將資料(字組、行列、句子或段落)複製到緩衝區。+ ~+ Z) [* d0 o8 c
       p       放置(put)指令,與 d 和 y 配和使用。可將最後delete或yank的資
8 M( ]$ f) f) L/ M# ?( a                料放置於游標所在位置之行列下。0 H& H/ p' h2 a0 a
       c       修改(change)指令,類似delete與insert的組和。刪除一個字組、句
. s% Z0 T. N' ^* S( T3 r7 I                子等之資料,並插入新鍵資料。# V. U: ?0 u% I; r
       範圍:
5 q6 U2 B" K" _3 `) P; L  o       e       由游標所在位置至該字串的最後一個字元。
6 k3 O9 ^8 ?9 e       w       由游標所在位置至下一個字串的第一個字元。
7 Y6 p. j* B, o- y. n       b       由游標所在位置至前一個字串的第一個字元。: x5 ?! b3 X3 i2 B, p  a
       $       由游標所在位置至該行的最後一個字元。$ A& q2 C3 [( t* s: x5 o$ v
       0       由游標所在位置至該行的第一個字元。
6 j7 G  M8 k: O! r% _       )       由游標所在位置至下一個句子的第一個字元。$ }3 O' z+ K7 x; D+ u! [( z( ?
       (       由游標所在位置至該句子的第一個字元。
$ G' Y1 y9 l. O" ~/ t; I0 l  E       {       由游標所在位置至該段落的最後一個字元。7 w! I7 K2 w- `, C: M4 p  H4 ]
       }       由游標所在位置至該段落的第一個字元。" Q4 Q4 e# W. M$ J$ j. l; W
       整行動作
2 K5 M0 N' G8 U& W' ?; x       dd      刪除整行。
$ ~( B6 Q' s2 z& L8 o, i       D       以行為單位,刪除游標後之所有字元。* u% C/ T* a7 Q0 W* I' _
       cc      修改整行的內容。
2 O1 R1 b4 q4 [/ C+ k       yy      yank整行,使游標所在該行複製到記憶體緩衝區。7 P& j; [( J( T4 |. G5 w/ L. r; c6 j

6 u2 j8 d6 g& ]  f3 f0 x7 I4.刪除與修改" D% l# ~3 Q4 ?0 {4 _# g! q
       x       刪除游標所在該字元。1 w+ w& j* t  @9 S' y
       X       刪除游標所在之前一字元。8 Y3 B3 `! w+ g  O# J( ~+ I
       dd      刪除游標所在該行。& O9 p) j4 P' ]- A3 Q
       r       用接於此指令之後的字元取代(replace)游標所在字元。  {5 V- f; e: Y; ]7 g5 p, @2 ]2 W
                如: ra 將游標所在字元以 a 取代之。
' [: B- e  _4 }1 m       R       進入取代狀態,直到《ESC》為止。
  h$ \. }- F/ Q/ P$ }) I2 G       s       刪除游標所在之字元,並進入輸入模式直到《ESC》。$ s; I: K  w# h4 d$ Q
       S       刪除游標所在之該行資料,並進入輸入模式直到《ESC》。) ~/ v5 [3 l" A& B+ ]
7 [6 P4 {# @1 y2 V
5.搬移與複製
- g& D8 O0 U: y# p! U       利用delete 及 put 指令可完成資料搬移之目的。
- a4 w% Q0 t0 m. t       利用yank 及 put 指令可完成資料複製之目的。
8 S3 ?8 _) `* A6 b$ L$ V# p       yank 和delete 可將指定的資料複製到記憶體緩衝區,而藉由 put 指令
9 R/ ~1 w  |+ x: ?  A* u& s! B, ?! E% D; ?       可將緩衝區內的資料複製到螢幕上。
# p1 H3 d) P) D# ]0 o0 C& S       例:  J& e& J/ {5 f) `4 e4 i
       搬移一行        ‧在該行執行 dd- H1 i4 Z" O! y* K7 q# p
                        ‧游標移至目的地
! w1 c! |$ t1 o( |                        ‧執行 p
4 S: M7 m/ w6 r, H6 N& F       複製一行        ‧在該行執行 yy5 |* C: B8 }/ C3 ~
                        ‧游標移至目的地* r8 N1 l3 x5 O
                        ‧執行 p0 b- ?  L' Z) b

& x/ M2 F- v4 W# Y& v1 x. M6.指令重複6 a. F& ^9 `1 w( C8 g0 S0 t4 s
       在指令模式中,可在指令前面加入一數字 n,則此指令動作會重複執行 n0 }) k1 }; G: V% o: Y8 Q
       次。# \$ ^1 |. E% h% y2 w4 q
       例:& e* \5 \% A" ^0 d6 L( J: F
       刪除10行                ‧10dd
' E4 {* [2 M& D. V) d* U       複製10行                ‧10yy
0 h: X9 h, y& o  A                                ‧游標移至目的地
3 {# E- Q8 Y. x$ K$ _. P                                ‧p8 X5 K$ p, k7 f$ z" P9 }
       指標往下移10行 ‧10j
: M" |5 G8 r' R
# G. ]5 X; T* v# o7.取消前一動作(Undo)4 X! T5 k% p3 Q- z/ V% ?/ y8 t
       即復原執行上一指令前的內容。' l. ]- w. q7 k5 C6 d; _
       u       恢復最後一個指令之前的結果。
7 Q7 X/ L* `5 r, s       U       恢復游標該行之所有改變。
5 c3 n- ~& {# D2 Q- @) R  Q9 A0 j# `1 r$ s; c
8.搜尋
! \/ d6 ]  u, L( _* @       在vi中可搜尋某一字串,使游標移至該處。
; E& z. A  i. I' e       /字串           往游標之後尋找該字串。& ?3 t" j# z+ ^/ ]3 q: a. [1 i
       ?字串           往游標之前尋找該字串。
* J4 t/ J: |$ ]/ ?( j$ V       n               往下繼續尋找下一個相同的字串。2 Q2 f# O* _- T; U9 s) x
       N               往上繼續尋找下一個相同的字串。
9 P3 B1 G1 P$ I  ~8 a9 Y
5 g  {/ C  Q2 R# i, d9.資料的連接
% Z5 g( ?# `) d) i1 |2 |* j       J       句子的連接。將游標所在之下一行連接至游標該行的後面。
7 }2 n3 a3 \& E! @$ f# S       若某行資料太長亦可將其分成兩行,只要將游標移至分開點,進入輸入模式
. y6 O7 Z3 N8 ~       (可利用a、i等指令)再按《Enter》即可。2 F& H( r+ E% V) ?$ A: e* J+ D' O" ~
3 a4 f2 k7 V1 b  R. c
10.環境的設定
' M& r; L; w8 H7 H* K1 ~* W       :setnu                設定資料的行號。# \- d6 N; Q# |/ M3 B
       :setnonu              取消行號設定。
; C: F) e8 s6 _3 E- X+ ?       :setai                自動內縮。
6 R9 Z$ N! N1 C: M       :setnoai              取消自動內縮。; C! j" K8 Y7 y: p$ r" r5 v
       自動內縮(automatic indentation)
! |" P' n7 T( z5 q       在編輯文件或程式時,有時會遇到需要內縮的狀況,『:set ai』即提供自
3 z3 s* u, @$ m/ [$ E       動內縮的功能,用下例解釋之:
/ P, K& C/ Y, D7 w: {, @0 O       ‧vi test* [# P% V- \2 N' j: v$ ~
       ‧(進入編輯視窗後)
4 m% W) j& ~" l( V! U& z9 s         this is the test for auto indent: F; M8 F* t% C1 n
         《Tab》start indent           ← :set ai (設自動內縮): Y1 S6 [, m0 U  |8 t! d) @* ]# {* |
         《Tab》data) t& A7 C% e0 y: j" @" K
         《Tab》data
' n1 Z4 f  G$ h% m: O         《Tab》data                   ← :set noai (取消自動內縮)0 V3 G  @6 h$ u+ ^3 ~) P& z  C
       the end of auto indent.
/ d9 n. j* k- \  M" W) f       ‧註:<Ctrl><d>可刪除《Tab》字元。
$ v3 g( i2 Y) A0 c: r1 ^- ]3 N* C$ y4 g' t4 {( z# M
11.ex指令9 Z; ?6 ~6 U2 c( M1 y* Q; R0 X
       讀寫資料
& J- f2 E" }' A% ?( x! Q, U       :w                     將緩衝區的資料寫入磁碟中。8 L4 v3 I" N. j
       :10,20wtest   將第10行至第20行的資料寫入test檔案。
: u$ E" N  x4 Z# E' j7 Y       :10,20w>>test  將第10行至第20行的資料加在test檔案之後。
5 K5 K, ^  ?9 `) e       :rtest                將test檔案的資料讀入編輯緩衝區的最後。
7 {& a& _' T7 ^- H, ^       刪除、複製及搬移
/ i- y/ m2 o# R/ i& q( t: Q" B       :10,20d                刪除第10行至第20行的資料。
* }0 `  _" _) D4 X       :10d                   刪除第10行的資料。
; C/ w% q4 F) W6 p2 U- w7 o- k       :%d                    刪除整個編輯緩衝區。3 n: }$ O0 w0 [0 W# y- e3 Z6 L
       :10,20co30             將第10行至第20行的資料複製至第30行之後。
2 U: Y+ ?7 ^& z" R" x       :10,20mo30             將第10行至第20行的資料搬移至第30行之後。2 c0 V5 E. b, `5 r5 d5 g
       字串搜尋與取代
& w4 g6 E4 h* L; G& r/ H       s(substitute)指令可搜尋某行列範圍。
& p, x, `  a+ W! y* W) x       g(global)指令則可搜尋整個編輯緩衝區的資料。( y5 _; T. v. n3 P$ D7 |2 Y0 }
       s指令以第一個滿足該條件的字串為其取代的對象,若該行有數個滿足該條
5 f) a' V% O4 W3 d5 X7 J' r       件的字串,也僅能取代第一個,若想取代所有的字串則需加上g參數。
' D2 ]5 J+ ]2 u9 V! W( a% i: \& K1 l       :1,$s/old/new/g                將檔案中所有的『old』改成『new』。
* P( z! R& t" f" V/ D7 z) g/ g       :10,20s/^/   /        將第10行至第20行資料的最前面插入5個空白。# |' R+ I! M# c# U0 z" J
       :%s/old/new/g          將編輯緩衝區中所有的『old』改成『new』。" Z2 e. }& W9 ~7 V1 C( J! ^
6 x! v, Q$ c* [, _- |; J9 a. a( I2 x" F& p
12.恢復編輯時被中斷的檔案
' u( ]+ s. Y( z7 c1 R/ y2 \9 ]       在編輯過程中,若系統當掉或連線中斷,而緩衝區的資料並還未
2 Y9 A; C4 C) f1 y) P: Z       被寫回磁碟時,當再度回到系統,執行下列指令即可回復中斷前9 a7 s8 q' B- y1 e# A8 i+ H* n
       的檔案內容。
/ F# V# m/ @, i% \1 Z  M6 [6 X* C       %vi -r filename
! Q" h8 o2 W+ m7 {- ~; s; u; k, W5 y- g2 e" a( ~
13.編輯多個檔案
. c. F5 z+ e+ j) {7 ^       vi亦提供同時編輯多個檔案的功能,方法如下:
7 t3 `: p3 y- L2 M0 U; ^; W       %vi file1 file2 ..
! Z* @+ v; k/ G' h3 C8 I       當第一個檔案編修完成後,可利用『:w』將該緩衝區存檔,而後
# I3 B) p0 ]# w. S       再利用 『:n』載入下一個檔案。
! \; a7 r6 R0 L! t2 N8 B$ _* |+ w2 k" U2 f: @$ J
參考:5 y8 D5 v; o- n- c5 A( i  S

+ U. A4 _  w1 A; |& e6 f" bhttp://chunchaichang.blogspot.tw/2010/08/vim-s.html0 c" e' L* Z0 d
回復

使用道具 舉報

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

本版積分規則



中文酷站排行榜

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

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

GMT+8, 2025-4-6 17:31 , Processed in 0.063037 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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