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

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

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

[複製鏈接]
發表於 2014-11-18 08:47:14 | 顯示全部樓層 |閱讀模式
tid=95& 本帖最後由 IT_man 於 2017-5-6 23:16 編輯 / S6 Y2 |4 `3 K6 I7 E, {2 W" _

. I  ~* r5 b0 C( k* A  tvi指令說明(完整版)* R% |$ b/ }! i& ]
  • vi 的操作模式# w; R% q# ]6 ?+ N- D8 R( p

' x6 f& e5 e, x& h6 R3 W' x4 h% G

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

  • 輸入模式% i* M& ]+ Q0 N. v0 k8 v


5 [' ]8 ^7 ^! ~       如何進入輸入模式0 l# f6 s3 M; |+ }9 A+ h$ o
                a (append)    由游標之後加入資料。6 n; l6 ^' z$ v- B, B$ ~" b* d
                A                   由該行之末加入資料。
0 I% O9 s& g, j' a( d( b0 W2 e                i (insert)        由游標之前加入資料。  ]5 y5 a, h0 S, ~0 B
                I                   由該行之首加入資料。  w# j- J" |* f! v+ @& A* S
                o (open)       新增一行於該行之下供輸入資料之用。- W. P, d  M6 ]' v" _' L
                O                  新增一行於該行之上供輸入資料之用。
1 m9 G% O* n% U9 x* f       如何離開輸入模式
2 Z' n8 I8 A5 A             《ESC》          結束輸入模式。9 T& ^1 L+ O0 l9 ]: R  R
  • 指令模式
    $ S, O0 y6 _$ a+ B" @# d# K

. u" _8 Z, W4 t5 j3 Z8 S
1.游標之移動, P% U4 \0 I6 n( Z  m6 r' U
              h       向左移一個字元。. n+ p+ E9 h, [
              j       向上移一個字元。
( L, S! v, ]) l. N. H              k       向下移一個字元。
* T( |  I  T1 q# N              l       向右移一個字元。& g+ Z9 z: q  v6 ?
              0       移至該行之首
! M4 z2 Y8 S0 a/ w, a, C              $       移至該行之末。: i' W% t! D" m+ M0 T
              ^       移至該行的第一個字元處。
; |  l0 R  o; Y, o. P/ E8 I6 n% q# B4 v; s              H       移至視窗的第一列。
/ x0 q, V/ ]$ b% x  h% Q              M       移至視窗的中間那列。1 p; v. |: B$ Y  H; U8 V1 F
              L       移至視窗的最後一列。
$ P# O6 z- h) N( I1 h             G       移至該檔案的最後一列。
0 @4 U2 D- ]+ u. g2 r1 x4 s9 A8 C/ Z             +       移至下一列的第一個字元處。
. z& K! B" u0 A             -       移至上一列的第一個字元處。
+ n- {! C, f  X5 U0 M             (       移至該句之首。 (註一)
! n& m- q  `. [             )       移至該句之末。7 p$ M' T. O% K0 I# `" q
             {       移至該段落之首。 (註二)
' u7 n6 \. T0 B+ G" a; s/ {) z             }       移至該段落之末。" ?) k1 V9 w8 n& ?! T. c
             nG      移至該檔案的第 n 列。
% N. y" K8 o" T$ ?1 a9 e" g2 d# q             n+      移至游標所在位置之後的第 n 列。
5 \+ @4 p( V- I             n-      移至游標所在位置之前的第 n 列。
- |; A* y) b& }9 p8 T! y  Z$ ]            <Ctrl><g>       會顯示該行之行號、檔案名稱、檔案中最末行之行號、游標所在行號佔總行號之百分比。
1 Y  ^$ Y7 _7 z7 A5 g8 T4 F            註一:句子(sentence)在vi中是指以『!』、『.』或『?』結束的一串字。5 `  v% S1 X0 e9 f8 n) T( P5 H- L
            註二:段落(paragraph)在vi中是指以空白行隔開的文字。
# Q5 F  v0 e- @# T1 W! n3 t. f
" M' [$ u4 G' \; P5 i. l5 z2.視窗的移動       <Ctrl><f>       視窗往下捲一頁。
9 g. U1 D2 h6 y. `9 J  Q1 Z           <Ctrl><b>       視窗往上捲一頁。
) }! a& E, v: ]0 F4 H" J           <Ctrl><d>       視窗往下捲半頁。8 P- b4 @  x* j' B1 [
           <Ctrl><u>       視窗往上捲半頁。; c* s6 C; e5 `/ u0 O& y, g$ |- L: K( |
           <Ctrl><e>       視窗往下捲一行。- x0 B7 t% E' |' ]) T" g# c
           <Ctrl><y>       視窗往上捲一行。$ `, J) t& W  w- I7 b) e$ S% @& j) e
" b1 I- k7 n* r- A& E5 I. V! S
3.刪除、複製及修改指令介紹 (此單元較少使用)7 c  W, L$ p* s
       d(delete)、c(change)和y(yank)這一類的指令在 vi 中的指令格式為:6 r. ~- }$ u0 F) H. U6 q% P$ ?
       Operator + Scope = command
3 l* j( u2 P' g  f       (運算子)   (範圍)
+ T1 B, F3 h5 a/ o; ]       運算子:
4 C: m: d4 q5 A* A       d       刪除指令。刪除資料,但會將刪除資料複製到記憶體緩衝區。: v4 V! R) N5 `; g5 {9 m8 H6 u
       y       將資料(字組、行列、句子或段落)複製到緩衝區。
1 ~- f" a6 R8 H! v) o       p       放置(put)指令,與 d 和 y 配和使用。可將最後delete或yank的資
2 S4 c' d& c, C+ \) V                料放置於游標所在位置之行列下。
: v8 X6 x. s$ g; M3 Z7 F# [       c       修改(change)指令,類似delete與insert的組和。刪除一個字組、句
4 C7 @* a) m/ ?* b* T4 |                子等之資料,並插入新鍵資料。
1 m, F. E4 P/ A7 |! ~. e       範圍:
/ S; L1 s$ d) T$ A       e       由游標所在位置至該字串的最後一個字元。
0 m0 w& W: z/ F9 X; W       w       由游標所在位置至下一個字串的第一個字元。: \, W  C# ~8 V5 q" F; Y& h8 p: n
       b       由游標所在位置至前一個字串的第一個字元。
( W2 a/ |% |8 c2 p: K' S       $       由游標所在位置至該行的最後一個字元。* a$ L8 _8 V! @4 p9 ?1 w( {
       0       由游標所在位置至該行的第一個字元。
" G, |% G# o$ \       )       由游標所在位置至下一個句子的第一個字元。
& P$ i8 c! F; a       (       由游標所在位置至該句子的第一個字元。* p; N& a2 k# f4 j) Z
       {       由游標所在位置至該段落的最後一個字元。
  E) p- y/ ~. ]% ^9 I       }       由游標所在位置至該段落的第一個字元。$ A" x3 D# X( T+ ?* p8 g( J0 ]; j
       整行動作# ^! K2 h" Z; s$ B% ?
       dd      刪除整行。( ~; N: F: ~/ [
       D       以行為單位,刪除游標後之所有字元。/ `, j* j- o- c7 ]+ x8 V7 B
       cc      修改整行的內容。8 _8 r. {9 t0 X7 ]
       yy      yank整行,使游標所在該行複製到記憶體緩衝區。
$ k* `- z, J$ r$ t; ?6 l( O: F; |; A  U
4.刪除與修改5 z/ _/ G2 z1 T1 X4 f8 F2 z6 Y
       x       刪除游標所在該字元。! V+ h! ~5 }2 |6 P6 i! C
       X       刪除游標所在之前一字元。
4 C& w! ?! I3 |) J2 L6 y8 J$ Q       dd      刪除游標所在該行。
3 J$ F. ~, j& H       r       用接於此指令之後的字元取代(replace)游標所在字元。3 b* E3 y! c! K7 X( ^5 H6 i
                如: ra 將游標所在字元以 a 取代之。' `% m, G; z; x6 e  E# L7 Z2 n' _
       R       進入取代狀態,直到《ESC》為止。* M# y# j2 j, r6 v# `$ L
       s       刪除游標所在之字元,並進入輸入模式直到《ESC》。
" G( W8 s( ~! `+ t0 E. a       S       刪除游標所在之該行資料,並進入輸入模式直到《ESC》。
' Q; T- ^- [3 n/ T
# L. H% z; L; a: J; o4 m# w8 e/ X5.搬移與複製* q9 y/ k- r' b) a  f' F, v1 r" m# F
       利用delete 及 put 指令可完成資料搬移之目的。, i( ?9 J4 Y. }! {, L
       利用yank 及 put 指令可完成資料複製之目的。7 j/ a7 O9 k% T
       yank 和delete 可將指定的資料複製到記憶體緩衝區,而藉由 put 指令. X- N7 d  {- W, r6 u& d+ c' b* y
       可將緩衝區內的資料複製到螢幕上。) E) u( b. d7 L
       例:
2 w9 z6 J# |& b4 u, F       搬移一行        ‧在該行執行 dd6 `0 f& M, s2 R' m
                        ‧游標移至目的地
7 e0 l3 U0 O: e3 ?0 [: @+ U3 B* U                        ‧執行 p
( W( l9 @# R( s% }! B2 J       複製一行        ‧在該行執行 yy2 o! w) F% i' b: a  K% b  k! y
                        ‧游標移至目的地1 O- t( |5 |- ?/ f1 o
                        ‧執行 p
* g- d- k2 x' c  |* A/ \
# Z( R, Z2 R: d: b' i( d6.指令重複2 X' w2 V7 b! x3 D" ?
       在指令模式中,可在指令前面加入一數字 n,則此指令動作會重複執行 n
" r/ T$ {( l, T! @( J9 Z       次。( j9 @' j! K' V$ @
       例:) d/ k7 y! K9 Z+ }1 X6 s9 y
       刪除10行                ‧10dd3 r7 s6 ~3 D5 b  Q/ l6 n7 Q0 {# i; Y
       複製10行                ‧10yy- @. Y: E2 \1 l! W! o8 j2 k$ E
                                ‧游標移至目的地" X# J; S+ ~# E! O- C, j
                                ‧p1 g& r/ y  n6 f" ^- g
       指標往下移10行 ‧10j" E$ k6 m! Q6 d1 ^- W
" e. l1 F" b% ~! K; d% t
7.取消前一動作(Undo)$ [, V: {5 b9 z7 a1 z; }
       即復原執行上一指令前的內容。+ s5 Y9 l4 z; b; M- x
       u       恢復最後一個指令之前的結果。  B) U3 ]' Y( s8 J" Y) D
       U       恢復游標該行之所有改變。% E2 P1 X$ ]+ o+ @# ^8 [  e
8 B  V# ~9 m: o3 Z7 t) X/ N) A# j
8.搜尋% p2 `8 v! n) z2 U# K
       在vi中可搜尋某一字串,使游標移至該處。
/ ~1 K9 o( u: C       /字串           往游標之後尋找該字串。
4 ~2 Y: J; E7 p. w$ n7 x       ?字串           往游標之前尋找該字串。
/ f5 f7 w; D( v( F2 I       n               往下繼續尋找下一個相同的字串。
+ e0 i1 ~: h+ A5 W) R* n( {       N               往上繼續尋找下一個相同的字串。
5 \0 n' k/ U- y( W# A) \5 p: U# B- ?' i2 e1 E
9.資料的連接( d9 s8 Q. K7 u( S& z5 i
       J       句子的連接。將游標所在之下一行連接至游標該行的後面。
: O. V! }6 K$ g3 k7 }$ l       若某行資料太長亦可將其分成兩行,只要將游標移至分開點,進入輸入模式# {6 m' x, t9 M3 s' E) X; U( g  y
       (可利用a、i等指令)再按《Enter》即可。  S0 f# @# D. B5 J* H+ W
- Y7 G- f* T+ V
10.環境的設定
" z; {  Z. o# ~* P- j' W* P& i       :setnu                設定資料的行號。& H) M0 c  h, @; v  p, L$ w
       :setnonu              取消行號設定。
5 q7 ^+ d+ p' t/ X1 o       :setai                自動內縮。
  z' h9 R7 Q- {3 m       :setnoai              取消自動內縮。+ d( Q$ @( Q: _* C# x7 h9 K
       自動內縮(automatic indentation)
: N9 I$ ?3 y, f6 V7 B       在編輯文件或程式時,有時會遇到需要內縮的狀況,『:set ai』即提供自  h" T2 C' _" g" j3 ~& ?
       動內縮的功能,用下例解釋之:# {( w- Z( U( g; u
       ‧vi test9 s! @4 l- v* U* q; y  d0 C  V
       ‧(進入編輯視窗後). M; n/ q$ s/ @" u" F
         this is the test for auto indent5 f9 Z5 m6 u$ G6 @
         《Tab》start indent           ← :set ai (設自動內縮)
6 O& O2 {/ l% u# k         《Tab》data
; Q3 M5 ]' S3 C6 ^         《Tab》data" c) a* `! o5 q8 I
         《Tab》data                   ← :set noai (取消自動內縮)
# B% z5 p1 S: Y) m" b" ]7 [6 D       the end of auto indent.5 s) g+ K0 l1 m# h
       ‧註:<Ctrl><d>可刪除《Tab》字元。
) h- [* ]# I, O, C+ ]4 A2 A3 I, j1 M
- ^0 |- a/ I0 s* _4 l! _5 t6 ~11.ex指令0 {4 a; d6 J- g% f
       讀寫資料2 b# h  z# D8 o2 E/ E8 h, ]
       :w                     將緩衝區的資料寫入磁碟中。
; ?" Y+ B) l; T. Q' s% U       :10,20wtest   將第10行至第20行的資料寫入test檔案。7 ]9 H1 y0 S: W
       :10,20w>>test  將第10行至第20行的資料加在test檔案之後。6 X0 t4 x# T" r1 E/ ?8 M$ w) `# h* C
       :rtest                將test檔案的資料讀入編輯緩衝區的最後。
1 b3 V: ]( E% Y# J       刪除、複製及搬移
- ]! y6 W6 Y9 U& N6 ]       :10,20d                刪除第10行至第20行的資料。
& M# V5 M& l3 [3 t$ x4 i       :10d                   刪除第10行的資料。
; b( T$ W) R, t       :%d                    刪除整個編輯緩衝區。
* p- G# ?4 ?* c/ n. ^8 P) L( R       :10,20co30             將第10行至第20行的資料複製至第30行之後。; L/ w/ c7 [9 O& |$ h' G
       :10,20mo30             將第10行至第20行的資料搬移至第30行之後。& O- d$ q# `1 P6 W0 e& {
       字串搜尋與取代* ~; U% ]7 B2 D, H
       s(substitute)指令可搜尋某行列範圍。
5 o2 n0 e7 q3 p+ @/ p5 s% `0 |! T- p       g(global)指令則可搜尋整個編輯緩衝區的資料。( i' p- U6 O8 B2 Z  `9 I5 {. D
       s指令以第一個滿足該條件的字串為其取代的對象,若該行有數個滿足該條( k  y* U; [( a! G/ Z; x2 @
       件的字串,也僅能取代第一個,若想取代所有的字串則需加上g參數。
9 s( H; O, A/ ]9 R( l       :1,$s/old/new/g                將檔案中所有的『old』改成『new』。% O# g* g  [3 b1 E7 E
       :10,20s/^/   /        將第10行至第20行資料的最前面插入5個空白。
$ m2 f6 V/ O/ Z$ d/ P; a5 ]       :%s/old/new/g          將編輯緩衝區中所有的『old』改成『new』。
7 i% L8 o# o/ f3 m) j/ Y, S6 N/ o& a3 Y. _, y( j; g$ Y
12.恢復編輯時被中斷的檔案- _3 X, Y& f) x7 {" s8 v
       在編輯過程中,若系統當掉或連線中斷,而緩衝區的資料並還未
; N; y) x8 @5 C) j! c# ^2 A' x$ W       被寫回磁碟時,當再度回到系統,執行下列指令即可回復中斷前3 g/ M- w/ K. T4 W' M
       的檔案內容。
+ k- \6 `; B3 `" p       %vi -r filename
* W8 G( T) R" @; q  Q
+ l) A4 e' R! H, O6 I* v# D" o13.編輯多個檔案$ w# b/ \  [( t# S. e4 K% S2 y
       vi亦提供同時編輯多個檔案的功能,方法如下:
" Z0 x; J0 E1 r& d; H: q       %vi file1 file2 ..# C$ `  |) t8 [3 M
       當第一個檔案編修完成後,可利用『:w』將該緩衝區存檔,而後# \& `4 X, _, _/ c- h0 D/ L
       再利用 『:n』載入下一個檔案。
, x4 e& B5 `7 I# o& T8 S' R5 _( _3 k
參考:8 T; Q: z) W% S+ |% x/ v
& i% s! t6 s' T$ p
http://chunchaichang.blogspot.tw/2010/08/vim-s.html1 {: b6 b1 Y; @. b
回復

使用道具 舉報

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

本版積分規則



中文酷站排行榜

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

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

GMT+8, 2025-12-6 19:19 , Processed in 0.078016 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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