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

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

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

[複製鏈接]
發表於 2014-11-18 08:47:14 | 顯示全部樓層 |閱讀模式
tid=95& 本帖最後由 IT_man 於 2017-5-6 23:16 編輯
" \1 l8 W7 j# ?& \& O- F9 }0 b
$ ~- o6 `* m/ D* c  `; evi指令說明(完整版)
- b3 [8 G# w) v. P4 U5 ^+ _0 R
  • vi 的操作模式/ b" f; t4 c& A# u% q# X! k; j


- E0 m5 M0 Z" Q6 b, T

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

  • 輸入模式: j& \, H  ~" l$ `9 w/ ]# u


' h+ c! H  Y/ {$ W3 e7 L       如何進入輸入模式
5 c3 `) n$ w) P4 `) C: k8 [, I                a (append)    由游標之後加入資料。
/ A) K, \, F' W1 `* O                A                   由該行之末加入資料。# [, @$ @9 k  i8 l
                i (insert)        由游標之前加入資料。, \/ J- A7 ~, H) [! M5 k
                I                   由該行之首加入資料。
' }% ~) ^: w/ I! D9 i1 p; x9 |5 C                o (open)       新增一行於該行之下供輸入資料之用。
; T" Q: z/ X7 `4 B/ d2 |                O                  新增一行於該行之上供輸入資料之用。- t3 K0 X% p- U& j
       如何離開輸入模式5 s# H# s; f' O8 U; u7 ^4 L6 N  q1 G! I
             《ESC》          結束輸入模式。8 q+ X; C4 G& P3 Q
  • 指令模式. o3 ~" W! r+ I; J

" Y7 h* m8 r) O! A8 e
1.游標之移動
' [, N$ n& A- H7 V7 O. `              h       向左移一個字元。
9 M* ~" t3 F9 K              j       向上移一個字元。" q8 d2 V- u) H8 o; v7 X
              k       向下移一個字元。/ {3 G  `: y/ H6 _% A2 }. C# `
              l       向右移一個字元。1 [& ~5 Z7 a3 M4 V7 u  P' r3 t
              0       移至該行之首
0 S  u; K0 P0 J3 [              $       移至該行之末。1 b+ @$ T% u* H6 l$ U
              ^       移至該行的第一個字元處。
8 J4 j, t- r3 s5 v: E              H       移至視窗的第一列。. h4 J; g# `, k3 y- m
              M       移至視窗的中間那列。2 D/ x7 o% }  j6 W- _* A2 r% |
              L       移至視窗的最後一列。
" n5 v, g2 @8 F6 q( e             G       移至該檔案的最後一列。
7 M% a4 a( M( }% v7 P3 a; W             +       移至下一列的第一個字元處。, Y- U0 n7 y  r' a
             -       移至上一列的第一個字元處。& F8 v+ b. y  I, p
             (       移至該句之首。 (註一)- a* {! ]7 X1 u+ E
             )       移至該句之末。) ?: v! t. V' i/ X4 p& U
             {       移至該段落之首。 (註二)
) }# a! N- X: I' O- q9 R/ {             }       移至該段落之末。
3 L1 {0 ]" Z5 X  j             nG      移至該檔案的第 n 列。' Z) S/ Z% N! |! R. \0 t0 }
             n+      移至游標所在位置之後的第 n 列。
# {! ?, Y" e$ Z; \) h             n-      移至游標所在位置之前的第 n 列。
7 u: E, _# ?! v* w            <Ctrl><g>       會顯示該行之行號、檔案名稱、檔案中最末行之行號、游標所在行號佔總行號之百分比。
0 e* P/ u- i/ h3 X            註一:句子(sentence)在vi中是指以『!』、『.』或『?』結束的一串字。
; u4 G4 H8 E+ `) C( s            註二:段落(paragraph)在vi中是指以空白行隔開的文字。8 H, z* {" g9 a, |
; u% H: @* l5 F  f3 X
2.視窗的移動       <Ctrl><f>       視窗往下捲一頁。
0 ~2 w" l) D6 X8 m" q5 V           <Ctrl><b>       視窗往上捲一頁。) z1 `* P# f9 O5 P! w3 {% j) T
           <Ctrl><d>       視窗往下捲半頁。
& e# f1 M2 U; i/ }, Y6 D! k3 z* m           <Ctrl><u>       視窗往上捲半頁。# z0 t3 ^5 ]& _# e. ]9 ^  G/ }4 F
           <Ctrl><e>       視窗往下捲一行。1 ?3 V& _$ q; J; x! M' _
           <Ctrl><y>       視窗往上捲一行。
& E" O# {( u; R( H$ p' d4 P. Z& O2 `* A2 h. E
3.刪除、複製及修改指令介紹 (此單元較少使用)
: @+ e+ k5 x# M7 i       d(delete)、c(change)和y(yank)這一類的指令在 vi 中的指令格式為:$ m7 n6 g' j8 e1 `, t" l* {% }
       Operator + Scope = command
+ ^$ D+ R; `6 }4 i8 k3 s       (運算子)   (範圍)
* a# x) U9 g6 Y" @3 ]: ?8 J       運算子:& Z  [5 ]# W, |& G% T2 @
       d       刪除指令。刪除資料,但會將刪除資料複製到記憶體緩衝區。9 K$ _! g( ]# n3 Z: x9 F
       y       將資料(字組、行列、句子或段落)複製到緩衝區。0 v3 |( U/ c( L! i, w) ~& F  {6 D' Z. G
       p       放置(put)指令,與 d 和 y 配和使用。可將最後delete或yank的資
6 w/ [4 W: ^  b. t* m7 T5 a                料放置於游標所在位置之行列下。3 D  w% c& g* G5 R
       c       修改(change)指令,類似delete與insert的組和。刪除一個字組、句
: s9 }. j# T/ ^1 J' |4 s                子等之資料,並插入新鍵資料。
, R, H$ C" ?# Q9 H) Z" F# [: d       範圍:  B) j1 m1 M$ f3 h0 q
       e       由游標所在位置至該字串的最後一個字元。
4 m( N5 ]/ ?# @       w       由游標所在位置至下一個字串的第一個字元。9 v2 J9 u5 j* e8 `2 Z
       b       由游標所在位置至前一個字串的第一個字元。
! @- m1 w7 Q& v1 H8 b       $       由游標所在位置至該行的最後一個字元。
( X; f! Q2 G$ g4 @. ]* V: r, i       0       由游標所在位置至該行的第一個字元。; N  p2 n# l/ B" z
       )       由游標所在位置至下一個句子的第一個字元。: r# U8 V% O/ c$ k  ^2 {
       (       由游標所在位置至該句子的第一個字元。
3 ?8 _5 J& w! z, k       {       由游標所在位置至該段落的最後一個字元。
4 K$ Y% I/ A) `( `& G       }       由游標所在位置至該段落的第一個字元。
- S/ a; p7 O  v2 w3 e0 M       整行動作  i7 l$ g& O( m8 v1 f1 r/ R
       dd      刪除整行。: J. ~8 X; k1 }& m6 _( D( i, F
       D       以行為單位,刪除游標後之所有字元。) h6 d. S$ h& z  ]  @& C6 _
       cc      修改整行的內容。9 l: L* s& P( e) [
       yy      yank整行,使游標所在該行複製到記憶體緩衝區。
' t8 ]- A( B/ S1 k: L( \
7 D- j# ?1 }  \# }+ s  ~4.刪除與修改5 T. O% l' h* F0 ^7 p+ c( k
       x       刪除游標所在該字元。
# g  T/ T% E5 e" ^  F& ^( q       X       刪除游標所在之前一字元。
# o& |8 E% f7 h; N, {       dd      刪除游標所在該行。2 S  m2 S: X1 k. Q5 B
       r       用接於此指令之後的字元取代(replace)游標所在字元。
3 Q, l$ @1 N: w* M  M                如: ra 將游標所在字元以 a 取代之。
) o6 W( j- G4 v       R       進入取代狀態,直到《ESC》為止。6 e( F, A' M1 N  E, V' Q+ _
       s       刪除游標所在之字元,並進入輸入模式直到《ESC》。6 n, F' ]" N* {9 ?
       S       刪除游標所在之該行資料,並進入輸入模式直到《ESC》。
9 m  k% ]: E* j1 g: o# E( @; B- h! m  I! J7 ]9 d  {
5.搬移與複製9 ~3 K; u4 v( I& I! d3 W
       利用delete 及 put 指令可完成資料搬移之目的。) Z# N% S; g% \
       利用yank 及 put 指令可完成資料複製之目的。: O4 @1 F2 |) i4 B: z! _' K
       yank 和delete 可將指定的資料複製到記憶體緩衝區,而藉由 put 指令
/ x$ ^' |2 _. @" A) g; W       可將緩衝區內的資料複製到螢幕上。9 P8 Z; ?0 J& Y0 {2 e$ L
       例:  T. P  o/ y/ D. \: T, Q
       搬移一行        ‧在該行執行 dd
; p/ E  w! q# `% S                        ‧游標移至目的地: ?( h4 x6 x% e# K! T+ s4 }
                        ‧執行 p
' _' u' u7 a, ]       複製一行        ‧在該行執行 yy% e6 b* K+ q1 j) S+ L  j1 u
                        ‧游標移至目的地
0 ^! ~' ^3 B: k* ?; V                        ‧執行 p  F4 a$ L' L+ g) x

4 k! v% U( e# g6.指令重複
6 l' F. G' ]; i  B# s       在指令模式中,可在指令前面加入一數字 n,則此指令動作會重複執行 n+ q6 m# G  f# b+ M
       次。
( v: o7 W6 C1 u3 m       例:3 F( T0 H; @. v( }/ i. s  f
       刪除10行                ‧10dd5 [" ]% L" }0 Z7 E0 F, ]
       複製10行                ‧10yy& g& Z/ [5 G& W" D5 H# V4 {
                                ‧游標移至目的地
8 y. Z* o3 d/ k8 G( C3 Z" K3 y                                ‧p
! b) k! ?' W" u. P/ n4 b       指標往下移10行 ‧10j
2 a# n$ m* c7 i6 ~5 N  ?9 a5 }% \  `2 ?  Z7 k$ k; Q: ?
7.取消前一動作(Undo)
& K4 g' E- ]+ D       即復原執行上一指令前的內容。  \$ ]; H8 m6 ~- ?
       u       恢復最後一個指令之前的結果。4 f8 r; I. m. A/ s7 e
       U       恢復游標該行之所有改變。
: _* M- ]1 M  c  ^9 F
( Z3 W+ i; Q' Z0 b: r0 ~, X8.搜尋
+ R9 {( S& j9 i% h5 U( w       在vi中可搜尋某一字串,使游標移至該處。
! u& u/ q/ m" V4 }7 }       /字串           往游標之後尋找該字串。
  x% o; ]. `) k! ~       ?字串           往游標之前尋找該字串。
. B7 F/ D6 D" p+ s, ~       n               往下繼續尋找下一個相同的字串。! U4 C# Q1 C, E3 G
       N               往上繼續尋找下一個相同的字串。
, X# f9 @4 v0 M3 H; Z# ]6 H1 B8 Z+ g& b& P# R
9.資料的連接
3 z! c0 ~, ?) ^6 i       J       句子的連接。將游標所在之下一行連接至游標該行的後面。
6 ~4 N( ?" Z1 W8 Z/ L       若某行資料太長亦可將其分成兩行,只要將游標移至分開點,進入輸入模式
: q+ N6 H4 A* Z) }0 a/ K       (可利用a、i等指令)再按《Enter》即可。
' p6 l9 Y+ Y. T/ z, X$ p. B' B' ?: e" B; @7 ^" n
10.環境的設定
! d% Y2 Z6 C. V; ?       :setnu                設定資料的行號。
, o) E& v; ^( |+ V  w8 W% {       :setnonu              取消行號設定。$ Y/ L' ]' X2 n- ~
       :setai                自動內縮。
7 G# Y9 ^) t4 S; T5 m/ k$ j1 ?       :setnoai              取消自動內縮。
2 Q* V& C+ J% |) V; L2 j       自動內縮(automatic indentation)$ x! a; S4 Z0 ]' {3 R2 F
       在編輯文件或程式時,有時會遇到需要內縮的狀況,『:set ai』即提供自- m. w/ d& y* v' }( |' x' X
       動內縮的功能,用下例解釋之:1 @+ R, ?- F$ r# ~9 v
       ‧vi test0 L/ e7 \5 a0 Z" a) O2 w9 k$ Z
       ‧(進入編輯視窗後)' }8 a* Z- o& o
         this is the test for auto indent- Q: c9 t* g% P  ^: R
         《Tab》start indent           ← :set ai (設自動內縮)
* ~& L. I6 f, D- N# Y+ q/ ?         《Tab》data2 g. |8 h8 [: f6 z7 ^
         《Tab》data
+ b$ c7 C( A4 u7 v2 M. N, ]         《Tab》data                   ← :set noai (取消自動內縮)# t- k9 \: q) c: ]1 N
       the end of auto indent.
5 g7 H6 G$ T6 l       ‧註:<Ctrl><d>可刪除《Tab》字元。3 x) t2 s+ o" h  t! W6 o  V. `: R

$ C" s' ^! t9 ^/ y) `- N: x- B* N8 |! `11.ex指令
4 Y9 B* d0 i5 }/ [+ R2 }, R3 l       讀寫資料6 o9 j, g6 q7 q1 n/ c. u
       :w                     將緩衝區的資料寫入磁碟中。- h9 Z4 H/ }: D; N* w* M7 `: l
       :10,20wtest   將第10行至第20行的資料寫入test檔案。; N$ a$ N5 ^# {* _5 a! \
       :10,20w>>test  將第10行至第20行的資料加在test檔案之後。% O5 |$ A% H; H4 c; I
       :rtest                將test檔案的資料讀入編輯緩衝區的最後。
% f7 P! h6 b, T8 e; T9 d( P. G# J9 J       刪除、複製及搬移/ B* A" B7 G; P- _8 ^; f1 t
       :10,20d                刪除第10行至第20行的資料。
+ ^- P+ i! a" z# I- x       :10d                   刪除第10行的資料。
: o( w9 E5 n! w! O7 G1 e* }* z) v, a       :%d                    刪除整個編輯緩衝區。
1 ]" T/ M) N, P+ _4 P. n( J& ~       :10,20co30             將第10行至第20行的資料複製至第30行之後。- W, H7 ~8 c+ f% _7 A
       :10,20mo30             將第10行至第20行的資料搬移至第30行之後。: m6 t4 X8 F/ n1 n1 c2 }
       字串搜尋與取代
2 A- v8 ~1 e: I       s(substitute)指令可搜尋某行列範圍。
$ q$ Y+ M# S0 I# k0 H       g(global)指令則可搜尋整個編輯緩衝區的資料。
* [  |9 q5 c  C$ [% L2 H       s指令以第一個滿足該條件的字串為其取代的對象,若該行有數個滿足該條
! q# {4 e8 u2 Z1 `       件的字串,也僅能取代第一個,若想取代所有的字串則需加上g參數。
& S& ?0 ]3 Z' G2 Z* w       :1,$s/old/new/g                將檔案中所有的『old』改成『new』。5 E# m, U; P( B# @
       :10,20s/^/   /        將第10行至第20行資料的最前面插入5個空白。
5 F+ v. b. ~$ E! F7 p9 r1 d9 Z       :%s/old/new/g          將編輯緩衝區中所有的『old』改成『new』。
: C2 T8 R  c: G& s% k/ R6 B$ {+ m8 K$ f/ T8 E
12.恢復編輯時被中斷的檔案
- g: ~, R4 F) G% c8 p% v4 r3 q8 u0 T1 u       在編輯過程中,若系統當掉或連線中斷,而緩衝區的資料並還未) ^  w) J. A& P) \
       被寫回磁碟時,當再度回到系統,執行下列指令即可回復中斷前( n3 T+ P; ^) _! _$ H
       的檔案內容。
) a: T; X8 D/ `2 `* H       %vi -r filename' z7 O) i& g, y5 j
8 P) y* N8 c, v+ [- [) u' q$ H+ A& {) m
13.編輯多個檔案  m4 i1 s$ n$ Y2 O* i' S
       vi亦提供同時編輯多個檔案的功能,方法如下:
9 B) T/ M$ q* q4 y       %vi file1 file2 ..8 B4 j  H0 _1 x+ S" V) h
       當第一個檔案編修完成後,可利用『:w』將該緩衝區存檔,而後% C' E( ~2 o7 B/ W0 q
       再利用 『:n』載入下一個檔案。
5 F/ h5 G/ ]" q/ S& }! M
$ p- S( ^1 c2 ?參考:, ^! k5 J2 z$ V1 h. ~' `

- `- q2 _- b5 n) N8 |4 R# u* jhttp://chunchaichang.blogspot.tw/2010/08/vim-s.html- m; D2 F; O- ?! {1 H7 _
回復

使用道具 舉報

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

本版積分規則



中文酷站排行榜

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

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

GMT+8, 2024-10-29 04:34 , Processed in 0.087835 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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