in header_common.htm --> -->

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

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

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

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

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

本帖最後由 IT_man 於 2017-5-6 23:16 編輯
' \0 O+ O: G; x  y/ T! \& s- g% i4 Z  T0 K$ n$ K" k+ T5 N0 d
vi指令說明(完整版)0 F0 ^7 |* Y# V: ~
  • vi 的操作模式% s5 o$ i) Q2 T


1 m3 o3 |" Y9 b+ E  z9 @

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

  • 輸入模式
    ( I6 Y1 c( X! c6 N! e1 p


4 c1 L" M" m3 W. Q- T& k       如何進入輸入模式
1 m2 |% C# I8 r0 [7 w                a (append)    由游標之後加入資料。# F1 I1 p, J( N! u
                A                   由該行之末加入資料。
/ m9 b: ^; ~6 S9 q; K7 ]: K                i (insert)        由游標之前加入資料。
+ Y. Z8 x' o' \: k* F& w8 t4 ?                I                   由該行之首加入資料。- P$ S& J( t$ j! y/ {
                o (open)       新增一行於該行之下供輸入資料之用。, D7 W: ^/ C% Y
                O                  新增一行於該行之上供輸入資料之用。  p; a" ]& T4 Y0 }
       如何離開輸入模式+ Q7 d+ w' q, G5 ?' J5 J
             《ESC》          結束輸入模式。
" D/ g' s4 I4 g2 Q6 k$ x- W  {# q
  • 指令模式
    * f0 r$ r! |# k! f2 L

1 h* e! K; Z' A* g
1.游標之移動
0 O' B! S) u0 F9 F+ G/ d7 {- s/ B              h       向左移一個字元。
; v9 x) O' Y) }: D              j       向上移一個字元。" H: P; m. Q+ l
              k       向下移一個字元。- B; l9 a- z* S
              l       向右移一個字元。, z  ]: O# l" v* \3 y' Y
              0       移至該行之首
& M0 w# G5 |- E" X/ m# E              $       移至該行之末。
6 u3 C  |3 y. j( I              ^       移至該行的第一個字元處。
& A& d6 @2 t- u+ z3 Z2 ]. m( C0 u              H       移至視窗的第一列。3 O8 v9 R3 o& C- e# N; k% O
              M       移至視窗的中間那列。
: w6 e7 X* h5 b* r              L       移至視窗的最後一列。9 f7 _! e* g6 O' w5 S, ?6 q
             G       移至該檔案的最後一列。0 n- Y' [5 _" Q9 j; P+ m
             +       移至下一列的第一個字元處。
: o/ D1 R. x# `: T9 K7 i5 S% }             -       移至上一列的第一個字元處。6 E3 m  g# P' [9 h8 ?3 {
             (       移至該句之首。 (註一)
, W( p5 I( F, Q7 S             )       移至該句之末。
) e* N$ D4 B& l; R0 q# l$ F- }6 z7 ^) i             {       移至該段落之首。 (註二)
, x$ d! _5 ]/ R& \2 j0 G" V             }       移至該段落之末。7 m) H( U1 O7 |% B1 t4 r0 \$ W5 T
             nG      移至該檔案的第 n 列。6 v0 L$ T2 u6 ~1 O2 @0 F/ E
             n+      移至游標所在位置之後的第 n 列。
4 ^/ f9 q. C6 v             n-      移至游標所在位置之前的第 n 列。
( r  w7 B) _) S: {/ D& v            <Ctrl><g>       會顯示該行之行號、檔案名稱、檔案中最末行之行號、游標所在行號佔總行號之百分比。
7 H% v$ r4 w/ ?5 {( x            註一:句子(sentence)在vi中是指以『!』、『.』或『?』結束的一串字。; H, J0 [; J6 M( D. U# U4 @' [3 D( \
            註二:段落(paragraph)在vi中是指以空白行隔開的文字。1 K- `: D2 x$ j9 z: t  k0 _

6 x# m5 x4 f% L4 M0 X2.視窗的移動       <Ctrl><f>       視窗往下捲一頁。
: g, w; g: Y- c! q           <Ctrl><b>       視窗往上捲一頁。5 I2 \  ^) ~4 w" p
           <Ctrl><d>       視窗往下捲半頁。
) q, ?% g+ ]/ G4 A6 n           <Ctrl><u>       視窗往上捲半頁。) K5 r  T5 v. g& g2 s
           <Ctrl><e>       視窗往下捲一行。
0 p6 ?* J" N& M0 Z           <Ctrl><y>       視窗往上捲一行。  k9 y# P+ `) \
5 ]% v' F9 A. A2 R# j' M% u
3.刪除、複製及修改指令介紹 (此單元較少使用)8 y' D; o; p( v  ]6 \+ R
       d(delete)、c(change)和y(yank)這一類的指令在 vi 中的指令格式為:. Z) E% n0 ]  A* h) w3 |/ R& r
       Operator + Scope = command. Q/ }% t, X& W$ w
       (運算子)   (範圍)
, C' ~/ K+ {( h6 V       運算子:$ \7 i* e; I* S2 Y' t# K6 a; s' u( O
       d       刪除指令。刪除資料,但會將刪除資料複製到記憶體緩衝區。
( P- V- `/ Z, f8 x! u3 c       y       將資料(字組、行列、句子或段落)複製到緩衝區。& H' Y. t( A6 q1 }. d+ k, @
       p       放置(put)指令,與 d 和 y 配和使用。可將最後delete或yank的資% n5 C5 i; G/ E# y/ R
                料放置於游標所在位置之行列下。
6 t2 u2 Y% Z' n3 Q) H$ F) r2 w       c       修改(change)指令,類似delete與insert的組和。刪除一個字組、句
3 D% G& G5 _9 Q5 r& c                子等之資料,並插入新鍵資料。
- I6 g1 v6 f& f3 O, q: p/ n4 `       範圍:4 K) y% Q9 I2 n5 R3 `
       e       由游標所在位置至該字串的最後一個字元。
* i7 K) _" I; ~4 v% t* u  O$ o' U       w       由游標所在位置至下一個字串的第一個字元。
3 @# c) G0 U: u% q' r  O  g       b       由游標所在位置至前一個字串的第一個字元。# M4 F* M2 ?& I1 z, ]
       $       由游標所在位置至該行的最後一個字元。$ o" W3 G0 U+ s9 ?
       0       由游標所在位置至該行的第一個字元。  W6 v7 h5 \& J( w" N" w
       )       由游標所在位置至下一個句子的第一個字元。3 g3 @; W& P' L% k
       (       由游標所在位置至該句子的第一個字元。
2 e" ]: E7 k7 B; x4 }# N. R' L       {       由游標所在位置至該段落的最後一個字元。2 j: \3 T) ]5 X& {
       }       由游標所在位置至該段落的第一個字元。
! K4 S  {5 d" l! e9 f  t0 _       整行動作& `9 q& j; G. V6 o6 U; @9 W1 F: E$ y
       dd      刪除整行。
2 v. }, L0 C* d# z5 i* j* w       D       以行為單位,刪除游標後之所有字元。, t% e! A& j& B
       cc      修改整行的內容。
1 q. `: _" Q; A/ a$ u, w" z7 v       yy      yank整行,使游標所在該行複製到記憶體緩衝區。" u8 K4 T8 Z" S& M6 U

3 }8 h; q: M/ `. |  G/ |$ m4.刪除與修改
, Y$ s( g" V7 [! n       x       刪除游標所在該字元。4 _& O1 U) ?5 Q8 g% d2 \# a
       X       刪除游標所在之前一字元。+ n  o7 X% I% T
       dd      刪除游標所在該行。
9 r( H: b) }8 W. f0 ]       r       用接於此指令之後的字元取代(replace)游標所在字元。
) L) i0 R4 Z' U  Z' [                如: ra 將游標所在字元以 a 取代之。$ L/ C0 F/ @5 k0 H! K( D7 g6 B
       R       進入取代狀態,直到《ESC》為止。9 R7 o9 ~. t0 x! u0 g8 _
       s       刪除游標所在之字元,並進入輸入模式直到《ESC》。
# z0 X. W( B  ]6 R0 t! m       S       刪除游標所在之該行資料,並進入輸入模式直到《ESC》。( G% O8 D$ y& M# {3 `
4 @1 V, V  l4 N5 j, b' x
5.搬移與複製! x. }" N* z4 Q+ b5 D$ o
       利用delete 及 put 指令可完成資料搬移之目的。
$ q# ^- m, t. B- e       利用yank 及 put 指令可完成資料複製之目的。! `' Y/ E3 B0 G
       yank 和delete 可將指定的資料複製到記憶體緩衝區,而藉由 put 指令4 d5 V5 q. |9 z# G; }4 ]
       可將緩衝區內的資料複製到螢幕上。
0 A' Y9 d, n4 E: y6 i9 n       例:
  U) T% K  L, n       搬移一行        ‧在該行執行 dd
# ]  a; l. \8 q                        ‧游標移至目的地* V1 n' m/ o9 N( c. y9 |
                        ‧執行 p
- a4 t1 f. ^4 @# e/ q5 N8 w6 ?6 N       複製一行        ‧在該行執行 yy# D; j1 ]" g' D% \- R! M: @
                        ‧游標移至目的地6 Z  y, W6 i7 Y1 M
                        ‧執行 p' U* O. {4 r" |2 W- i
: R" N& ?2 C& c' ]7 I5 ?
6.指令重複+ {; g/ u( q' T1 ~
       在指令模式中,可在指令前面加入一數字 n,則此指令動作會重複執行 n9 x. A  z6 U. |6 r1 Z* I
       次。; ^. ?/ W+ W  x& [/ I$ N
       例:
  y& \9 f3 C# }6 ?# m6 o2 k       刪除10行                ‧10dd% |! s% B4 l$ i* u
       複製10行                ‧10yy
; W; x. F! @1 b8 }7 H  y9 M" J                                ‧游標移至目的地
3 {- U# E! N6 K8 v% [                                ‧p2 }3 m+ H$ z. T
       指標往下移10行 ‧10j; E" b3 S3 D$ l- q' a) B7 k

* g# ?! i0 W0 ?5 R8 [0 Z7 R: y9 y7.取消前一動作(Undo)$ n& x* j* I& B) C8 w
       即復原執行上一指令前的內容。1 O6 s! P4 w0 t
       u       恢復最後一個指令之前的結果。8 w0 U( `5 E5 Z; u+ s+ F% f1 c( |
       U       恢復游標該行之所有改變。
& j0 l% q8 R3 s/ W2 C
4 @' \, ^2 H3 I6 W* b5 \8.搜尋* M$ z  t; T2 ^! ?0 ]
       在vi中可搜尋某一字串,使游標移至該處。
% ^% Y  g, Z; T* q. p       /字串           往游標之後尋找該字串。
! v* t7 w' H) `' }+ a       ?字串           往游標之前尋找該字串。+ g# u0 t2 g! q8 k+ y' S: `
       n               往下繼續尋找下一個相同的字串。
- _: _9 G4 V& T% }+ a, ~3 v       N               往上繼續尋找下一個相同的字串。
) ]6 V8 s7 t  w7 U0 A# g2 N2 a
9.資料的連接
% x$ _0 g: h9 G) C       J       句子的連接。將游標所在之下一行連接至游標該行的後面。
) i6 ]- N/ R. V# f3 q& e# U       若某行資料太長亦可將其分成兩行,只要將游標移至分開點,進入輸入模式8 I+ Y: @! V7 c3 j5 U( o
       (可利用a、i等指令)再按《Enter》即可。8 O) q3 d4 [2 N' B: S" p! x) e

) H/ P" i( B/ [6 g9 H6 O" Q, K  M6 ?10.環境的設定  A) q+ H9 |$ E* l
       :setnu                設定資料的行號。
3 p& M  n9 L6 ?. V$ u       :setnonu              取消行號設定。. x+ c5 V2 P$ V+ }+ t8 H' T3 F
       :setai                自動內縮。* w  A! m/ [+ {  n/ \' q# m
       :setnoai              取消自動內縮。
: o9 H  e3 ?; K( E+ R3 {       自動內縮(automatic indentation)- S& T: p  l: o
       在編輯文件或程式時,有時會遇到需要內縮的狀況,『:set ai』即提供自3 i! M' M/ n/ U4 k2 K8 a" P6 H
       動內縮的功能,用下例解釋之:( W. x* r" U5 t( Q$ h3 |7 M- k
       ‧vi test
7 ?5 D6 r9 v% K# m$ y8 S       ‧(進入編輯視窗後)
( @% H. ]$ V3 w2 V         this is the test for auto indent
5 f" |+ u$ Y8 _4 z; D' K% I2 F         《Tab》start indent           ← :set ai (設自動內縮)5 y4 A$ b/ _  k& E% D+ r' H+ O9 s
         《Tab》data
2 `* y% I  T4 o) c, ]; }         《Tab》data
, g, n/ C  T7 o. ~         《Tab》data                   ← :set noai (取消自動內縮)
: n+ {# z* N5 d! x       the end of auto indent." M4 k7 I% c- b8 f& }# s
       ‧註:<Ctrl><d>可刪除《Tab》字元。, h# x$ [- P# Q

& n9 j6 @3 o9 i6 A4 b1 X/ R11.ex指令
( m; |8 Z' \: d       讀寫資料7 l/ S7 ^# k) p& I: s9 l' [
       :w                     將緩衝區的資料寫入磁碟中。
: y' D4 P$ {# O       :10,20wtest   將第10行至第20行的資料寫入test檔案。% ^* ]2 Y4 P" S3 k" H6 w
       :10,20w>>test  將第10行至第20行的資料加在test檔案之後。
: E$ u+ l; p" X" Z  w       :rtest                將test檔案的資料讀入編輯緩衝區的最後。7 v9 C; G' L; L0 e
       刪除、複製及搬移0 {: S( A1 D7 I1 h& O0 R
       :10,20d                刪除第10行至第20行的資料。4 a7 q! ?" g' L- a* j
       :10d                   刪除第10行的資料。
4 B  O1 b* |1 s" F" H2 L6 t, S9 S       :%d                    刪除整個編輯緩衝區。
7 ]% Y  ]& u( W, \# L5 {9 k       :10,20co30             將第10行至第20行的資料複製至第30行之後。
, i) B7 b( I. h1 J/ e, y" X1 k       :10,20mo30             將第10行至第20行的資料搬移至第30行之後。; S, F+ y1 m; G. F  b; `
       字串搜尋與取代
3 v) g$ Z$ ]9 s+ f+ q$ B       s(substitute)指令可搜尋某行列範圍。
1 T, z0 x" C2 f+ s8 H# F       g(global)指令則可搜尋整個編輯緩衝區的資料。* X! n, Y$ C, S- p! K) {7 i6 M
       s指令以第一個滿足該條件的字串為其取代的對象,若該行有數個滿足該條
: r! J; {, x  [; }  F) q       件的字串,也僅能取代第一個,若想取代所有的字串則需加上g參數。' V$ }( l$ ?: B, r. D2 O& l
       :1,$s/old/new/g                將檔案中所有的『old』改成『new』。# y; F% c, P. Z* i% Y6 h
       :10,20s/^/   /        將第10行至第20行資料的最前面插入5個空白。( J5 ?( W. l1 U8 }* `; r" A
       :%s/old/new/g          將編輯緩衝區中所有的『old』改成『new』。
6 N5 |$ [/ R( v# y! e/ A- V! I0 E6 ]+ j# d3 y- w9 ]. S( r
12.恢復編輯時被中斷的檔案
* N4 i  k0 @7 `0 u  D5 v& B5 t' i       在編輯過程中,若系統當掉或連線中斷,而緩衝區的資料並還未
0 K. k! C) K" I3 ^# A       被寫回磁碟時,當再度回到系統,執行下列指令即可回復中斷前
& c( U5 ?" h; @6 q7 ]# K       的檔案內容。" L- \; @/ B2 s. x1 Y7 Y) T& m
       %vi -r filename9 z/ v# h4 K9 k5 C

. N+ z- `) ~8 J3 `" u: E: E13.編輯多個檔案
8 U8 F7 F1 i8 f; t; R4 f, U! Z8 p       vi亦提供同時編輯多個檔案的功能,方法如下:
7 i9 ]$ e; D0 F* l2 w6 _# f- Z- o7 t       %vi file1 file2 ..
. D5 H8 i8 C7 h& n' u       當第一個檔案編修完成後,可利用『:w』將該緩衝區存檔,而後
2 `7 r6 e+ F' `4 E       再利用 『:n』載入下一個檔案。
' x7 d1 c& p3 K( C4 ~8 M
) U1 ^; f! \, ]  z+ Q3 Q參考:' T" o4 X( j: M& O: g0 P5 g
1 |( q# D- |3 j
http://chunchaichang.blogspot.tw/2010/08/vim-s.html: p! L/ I4 e5 x2 |( V0 z
-->
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則


-->

聚BT福利

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

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

GMT+8, 2024-12-24 01:08 , Processed in 0.079048 second(s), 16 queries .

連絡站長.廣告招商

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

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