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

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

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

[複製鏈接]
發表於 2014-11-18 08:47:14 | 顯示全部樓層 |閱讀模式
tid=95& 本帖最後由 IT_man 於 2017-5-6 23:16 編輯
# Z0 f" L9 V5 \; V7 {9 E
# U' ]; t+ B% h6 kvi指令說明(完整版)
* F; P; D! F( m1 {
  • vi 的操作模式' ~$ Q6 p4 b: h- n, l/ t) w


0 n% b! X# p5 Z# t$ `' \

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

  • 輸入模式
    & {2 N1 K& Z1 v" ^5 r2 e, c


/ ~' I2 A  m* g" s2 ~# h/ O       如何進入輸入模式
% i* q  V- B$ m7 E. a7 ?                a (append)    由游標之後加入資料。
7 Q, K5 `/ m3 |9 C+ K5 k                A                   由該行之末加入資料。
, j2 t+ f8 s" O5 ^/ x8 C                i (insert)        由游標之前加入資料。; G* U/ H3 u# j0 L$ o
                I                   由該行之首加入資料。
2 m( d7 Y3 p# e& {                o (open)       新增一行於該行之下供輸入資料之用。. ?" i9 a3 H. l# t
                O                  新增一行於該行之上供輸入資料之用。+ S& o, T: {) |+ o1 U
       如何離開輸入模式. a  D, `3 K& d* }4 O& S
             《ESC》          結束輸入模式。2 F4 O) X7 r7 v  D' E& v. @
  • 指令模式* K" }3 S3 K' ]+ u- e$ U


3 L6 P  a1 F" ?5 e7 t6 R  r, k, M1.游標之移動( X' p/ r4 T  y" G% W! f
              h       向左移一個字元。
/ p# |/ k0 c& l% a6 k              j       向上移一個字元。8 [& s; p5 B" n0 T
              k       向下移一個字元。
$ z# l# [- ~2 F  K  d              l       向右移一個字元。
( i2 W; T7 L; ~! J              0       移至該行之首8 L1 ?- Q1 N$ k* r! @* {7 T2 L! ?. k/ K
              $       移至該行之末。
& n/ F  k: d! S# j, R1 h, \! w              ^       移至該行的第一個字元處。
+ a( k; q; a: n+ P7 I& v              H       移至視窗的第一列。% n* W( Z3 n4 l, I' a7 B
              M       移至視窗的中間那列。0 l, G, h6 X0 n& s
              L       移至視窗的最後一列。# Q' u; ?3 e4 t/ b; }6 ^. f4 J1 d
             G       移至該檔案的最後一列。
1 c  X' l9 n: L5 c) V& I  S+ U  L2 H             +       移至下一列的第一個字元處。
! H; _' F6 W* A+ \4 Q  C9 v             -       移至上一列的第一個字元處。0 Z, [" ?4 q: z" ?! R6 N) p
             (       移至該句之首。 (註一)
# Q$ N% \5 P( ^7 c- D( [             )       移至該句之末。+ Q5 q: P/ a3 |7 X: P
             {       移至該段落之首。 (註二)
5 z/ \' F& Q0 I7 g5 x0 g             }       移至該段落之末。4 {: J/ G  J' }+ W
             nG      移至該檔案的第 n 列。
. n% X4 V+ f+ Y5 ^7 Z* a7 |             n+      移至游標所在位置之後的第 n 列。9 G* r/ y7 D4 T+ }6 G9 `
             n-      移至游標所在位置之前的第 n 列。+ J3 h2 e( v; h; ]( ?
            <Ctrl><g>       會顯示該行之行號、檔案名稱、檔案中最末行之行號、游標所在行號佔總行號之百分比。
$ W5 [* {9 }6 |: S' _& w- H& c            註一:句子(sentence)在vi中是指以『!』、『.』或『?』結束的一串字。' N" ]' g4 }* F6 t1 x
            註二:段落(paragraph)在vi中是指以空白行隔開的文字。
6 t4 K7 e- G" z) q( J8 L
$ J2 o/ \8 R. a3 o* L  V2 f: l2.視窗的移動       <Ctrl><f>       視窗往下捲一頁。
( D" D' L5 S& w8 I  _1 u. D+ W           <Ctrl><b>       視窗往上捲一頁。
; z+ n+ [, S6 L7 j' t) n           <Ctrl><d>       視窗往下捲半頁。% |# ]) E- r) z
           <Ctrl><u>       視窗往上捲半頁。
1 h/ T. N" ^0 Z# [4 x4 b' g+ |           <Ctrl><e>       視窗往下捲一行。
; T6 E2 M) s, t# i. R, |1 v           <Ctrl><y>       視窗往上捲一行。
( K' h$ {  ?  t$ i$ c# t$ @7 R% J
! @! k1 T, c/ u6 c! x3.刪除、複製及修改指令介紹 (此單元較少使用)
% H1 p. D* ]0 \; A" ?1 S       d(delete)、c(change)和y(yank)這一類的指令在 vi 中的指令格式為:# K2 U4 Z& Z: ?
       Operator + Scope = command9 E/ N  A$ z! P( f; l1 D) \
       (運算子)   (範圍)
) d, w2 w0 I  k7 t- X       運算子:) _9 e. s4 Y% B
       d       刪除指令。刪除資料,但會將刪除資料複製到記憶體緩衝區。6 q  b& H# y: x
       y       將資料(字組、行列、句子或段落)複製到緩衝區。! [$ n+ P) O7 C
       p       放置(put)指令,與 d 和 y 配和使用。可將最後delete或yank的資5 j0 |8 G/ Q% W+ ]) X+ {% O2 S
                料放置於游標所在位置之行列下。- g& _( A$ j' q8 p
       c       修改(change)指令,類似delete與insert的組和。刪除一個字組、句
/ Y0 Z! `; [( T( W1 u4 p                子等之資料,並插入新鍵資料。" W" @- `0 ~; O' b' y5 u3 n
       範圍:" `0 |" ~' _. _2 B9 {
       e       由游標所在位置至該字串的最後一個字元。
- W1 ^4 v, w: a5 J7 _       w       由游標所在位置至下一個字串的第一個字元。2 C4 \: P5 w- \* c
       b       由游標所在位置至前一個字串的第一個字元。( J% C( T% v$ f* s! A
       $       由游標所在位置至該行的最後一個字元。
' c. E. t# O6 b6 m       0       由游標所在位置至該行的第一個字元。1 ~$ t# `+ M$ F2 ?
       )       由游標所在位置至下一個句子的第一個字元。
( T0 c" P, R+ v# T4 Q9 L6 ?5 K& p$ Z       (       由游標所在位置至該句子的第一個字元。3 l. X: K: i0 n; ~4 Q
       {       由游標所在位置至該段落的最後一個字元。! _% r! E  H6 M, z" m  x
       }       由游標所在位置至該段落的第一個字元。1 {; ^9 K' j8 a/ z, {
       整行動作4 r# f4 P( W" [5 _% W) n5 W3 W2 B
       dd      刪除整行。# l. o# P: ~( G/ A  i# L  W
       D       以行為單位,刪除游標後之所有字元。9 i1 \# F8 k. T% ~! w
       cc      修改整行的內容。
/ H6 V% }1 b4 N) E9 P, l" O% l, ^) L       yy      yank整行,使游標所在該行複製到記憶體緩衝區。5 Y! |# b! Z% ]9 h' x: w/ k
* \$ U7 W5 s- I4 N
4.刪除與修改& o8 B: S' \3 H4 d8 S
       x       刪除游標所在該字元。
& L4 W( ^+ K! f3 h3 Q       X       刪除游標所在之前一字元。
9 D/ @, G3 s" h2 ^       dd      刪除游標所在該行。
/ z! B5 R1 _& ]# C+ F: G       r       用接於此指令之後的字元取代(replace)游標所在字元。
6 N' x9 f3 H" ~8 h+ B                如: ra 將游標所在字元以 a 取代之。
( Y. a) R" f6 d& L0 ^- c       R       進入取代狀態,直到《ESC》為止。
1 i; `' j% l$ m/ Z, j/ T" U) \9 X       s       刪除游標所在之字元,並進入輸入模式直到《ESC》。7 y( o. j+ o0 ~# _2 T
       S       刪除游標所在之該行資料,並進入輸入模式直到《ESC》。1 Z) |" Z9 _1 j' Y- W* |3 u
+ u* Q. Z, j- C7 Q5 _( R
5.搬移與複製$ g* h: k  z( Y) g3 d
       利用delete 及 put 指令可完成資料搬移之目的。- ?* l% L0 j; @6 {( }
       利用yank 及 put 指令可完成資料複製之目的。
1 \4 r5 n  N( n       yank 和delete 可將指定的資料複製到記憶體緩衝區,而藉由 put 指令+ u6 c' m; X, S8 I; L
       可將緩衝區內的資料複製到螢幕上。2 A$ r4 P: @% A+ L) P% o
       例:; a& `0 w$ F, H
       搬移一行        ‧在該行執行 dd6 u6 j! r+ Y  `* o
                        ‧游標移至目的地
  ^' c* a. k; S: `                        ‧執行 p; @% b. e" b+ \
       複製一行        ‧在該行執行 yy  b. F1 o- |# K
                        ‧游標移至目的地
2 Y' K' U# U  `7 ^4 z                        ‧執行 p4 r6 h9 O7 {. @( U5 |; }6 N4 e

5 s+ _6 b$ Y4 V' p, i3 S6.指令重複" r2 Y4 p0 }- R9 Q: k  b4 D
       在指令模式中,可在指令前面加入一數字 n,則此指令動作會重複執行 n
1 P$ p9 O" }4 z: Y+ b# _       次。7 Z0 z4 r' o' r3 w
       例:" i& R0 y8 T: y+ t9 N
       刪除10行                ‧10dd8 i6 Y9 P, J0 z
       複製10行                ‧10yy$ h* `; r. F0 W& W6 y1 B7 Q1 u
                                ‧游標移至目的地" y$ N. ?3 g$ a6 W/ J, D0 c! @
                                ‧p
/ ~0 i$ a% j3 O       指標往下移10行 ‧10j
( k& H: H- N# ]. k6 g
& F% |# r4 x) T* m7.取消前一動作(Undo)) `% c! D$ P4 D, h0 b
       即復原執行上一指令前的內容。/ {0 F) `& x- @2 K
       u       恢復最後一個指令之前的結果。
3 F, O9 C* b, w& [& f& z* o       U       恢復游標該行之所有改變。+ }7 A* T3 b" b7 Q4 H' H; e9 r( N
, p8 \% Y( r2 q
8.搜尋. [7 ^. c3 k: u3 E0 A
       在vi中可搜尋某一字串,使游標移至該處。
* d+ z2 ]  L# V( |: l  U       /字串           往游標之後尋找該字串。
+ R2 {1 [5 a2 A- ]# \0 \0 T       ?字串           往游標之前尋找該字串。1 @/ T. G- e& k+ J* z! p) K& N
       n               往下繼續尋找下一個相同的字串。) @0 u% ?- Q/ F" I+ D
       N               往上繼續尋找下一個相同的字串。
5 K. x! ^# Q' ?( v+ o
# X4 `; k& p( ^# ~9.資料的連接! }3 E; D" V4 L/ W1 g# A  F; t
       J       句子的連接。將游標所在之下一行連接至游標該行的後面。5 }6 P& e, j& U% e6 G' H
       若某行資料太長亦可將其分成兩行,只要將游標移至分開點,進入輸入模式4 t5 X3 b. i' T/ E* M  X9 Q
       (可利用a、i等指令)再按《Enter》即可。! m+ y* r+ Y6 o$ Z* F
" @5 j, P$ V$ o! ^% D
10.環境的設定( q, M  C7 W$ N# q# |. U1 W3 v& d. I
       :setnu                設定資料的行號。
0 \' m* _  k# h1 U$ L' Z       :setnonu              取消行號設定。
: g/ ?5 [5 S% |$ p8 K       :setai                自動內縮。$ w# F! X# l5 p$ n$ U& h4 T* }8 j
       :setnoai              取消自動內縮。
. F# c9 }& W# F: L- ~) U/ q: J. s       自動內縮(automatic indentation)8 i1 |, h+ P) b: s+ W5 P1 {
       在編輯文件或程式時,有時會遇到需要內縮的狀況,『:set ai』即提供自0 r3 b3 y) N+ w! a$ y9 A
       動內縮的功能,用下例解釋之:
* u6 n/ u8 d6 M. @' g- d, k; A       ‧vi test
) c6 j7 q1 f1 w, B5 o- j       ‧(進入編輯視窗後)+ V5 x1 g) L5 j/ U4 B6 N5 q9 @
         this is the test for auto indent
- y! _/ ~) _4 v  M' }+ n" G5 w% h         《Tab》start indent           ← :set ai (設自動內縮)
6 N4 B! ?" w/ P8 p9 Y, g         《Tab》data
2 {6 i6 Y# N; ?- p         《Tab》data9 R- S1 e0 y; o) j( m0 |8 F
         《Tab》data                   ← :set noai (取消自動內縮)
3 a% L" N7 W; e) [       the end of auto indent.( q$ S5 l6 r$ K# f/ s" e% W) Z
       ‧註:<Ctrl><d>可刪除《Tab》字元。, k1 S! O" |  o) L! j' X

% a4 ?* n: t0 b3 q2 f11.ex指令3 A  o  N+ w- U
       讀寫資料
0 k$ \/ ]* K: W       :w                     將緩衝區的資料寫入磁碟中。
. E0 E8 u3 {8 ]/ Z+ Y8 t5 b4 o       :10,20wtest   將第10行至第20行的資料寫入test檔案。
9 h! s9 n! I& u3 |! T       :10,20w>>test  將第10行至第20行的資料加在test檔案之後。4 s; X/ s& ^; c2 l
       :rtest                將test檔案的資料讀入編輯緩衝區的最後。9 }. L! u* s5 K1 C8 @$ b: @
       刪除、複製及搬移: ~5 @) Y2 B2 B2 [& H
       :10,20d                刪除第10行至第20行的資料。
7 W9 E, v; ~- w  n* }9 {       :10d                   刪除第10行的資料。
" g1 c- r! H/ \$ J6 C7 k       :%d                    刪除整個編輯緩衝區。: ~2 K. E( V4 s/ s( [3 U
       :10,20co30             將第10行至第20行的資料複製至第30行之後。& V8 i; ~( x% W, Z+ x# {
       :10,20mo30             將第10行至第20行的資料搬移至第30行之後。
6 K3 _6 P3 v  w# m& l9 h0 f( s8 J       字串搜尋與取代
2 C3 E4 L# w; ^$ I       s(substitute)指令可搜尋某行列範圍。0 i% \: U/ b. O$ |& ~! ]$ \, t; S
       g(global)指令則可搜尋整個編輯緩衝區的資料。% u2 n/ r* |8 t& g# g' Q
       s指令以第一個滿足該條件的字串為其取代的對象,若該行有數個滿足該條: q) B3 S& J" ~* m  B5 \; |4 V
       件的字串,也僅能取代第一個,若想取代所有的字串則需加上g參數。$ ~2 y7 f9 F; ~% s( Q2 x( l* ?5 d
       :1,$s/old/new/g                將檔案中所有的『old』改成『new』。4 x) a* E$ s8 s! n/ b7 r- K3 E9 P
       :10,20s/^/   /        將第10行至第20行資料的最前面插入5個空白。, E8 a: ]/ h0 V4 C( w" Y, D/ ^4 Z/ z
       :%s/old/new/g          將編輯緩衝區中所有的『old』改成『new』。7 Y) A- t/ G3 q+ J

, M& I7 V4 d* t/ I0 `: K. T6 e0 U  B' U12.恢復編輯時被中斷的檔案; K5 Y4 G- w+ |/ T1 W% ]
       在編輯過程中,若系統當掉或連線中斷,而緩衝區的資料並還未
1 {: n8 H7 R$ I3 U6 t% N4 Q0 S       被寫回磁碟時,當再度回到系統,執行下列指令即可回復中斷前
; q5 W' T$ X" R+ o3 U: f/ B' l       的檔案內容。
' e4 w) N6 ~4 H& j2 Z       %vi -r filename
  @$ u9 x4 r5 Q, \
5 `; R: d6 j. L2 l- q+ i1 w13.編輯多個檔案, D* |7 g- c# ?: B
       vi亦提供同時編輯多個檔案的功能,方法如下:
1 W1 f1 f& C( }       %vi file1 file2 ..
/ f$ U8 a) o3 O- U/ V1 s2 M8 S; u       當第一個檔案編修完成後,可利用『:w』將該緩衝區存檔,而後
5 a# n" D. q! ^* [       再利用 『:n』載入下一個檔案。( _  v# ]8 d8 r1 ^
' D$ ^) {. J# A' Q7 |3 p& v
參考:
9 o3 |# b0 _4 ^% I' X3 T9 d$ y
3 U, ^9 S. \8 [$ o& F5 _- M; G5 vhttp://chunchaichang.blogspot.tw/2010/08/vim-s.html
1 C! N6 I, n: ^( {$ k! E
回復

使用道具 舉報

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

本版積分規則



中文酷站排行榜

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

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

GMT+8, 2026-2-4 08:07 , Processed in 0.072596 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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