in header_common.htm --> -->

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

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

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

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

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

本帖最後由 IT_man 於 2017-5-6 23:16 編輯
' r# h3 n5 A& R# k( x7 F5 F; I0 p' B# o4 U  T, y9 A  h. ~
vi指令說明(完整版)0 ]  B2 g* W! `5 V& u9 ?+ Y2 e
  • vi 的操作模式  b. Y* o3 V) X


1 m1 M# r' d2 V" g5 O* ^) ~4 a

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

  • 輸入模式
    : w6 D/ k: h6 g# x) W

, C: {8 R3 \' ^! H0 g( c( ?: r
       如何進入輸入模式
, ~: b7 p1 N  m7 ^' ]+ o                a (append)    由游標之後加入資料。
4 z* Z/ J4 w6 b2 Y1 `                A                   由該行之末加入資料。/ r- i' r2 o( `/ W+ b
                i (insert)        由游標之前加入資料。
8 p0 j5 t- c3 G5 H2 y                I                   由該行之首加入資料。
0 t4 N# a" S+ Q9 w: D                o (open)       新增一行於該行之下供輸入資料之用。3 }( P1 J0 z$ ?9 f8 h9 P5 J
                O                  新增一行於該行之上供輸入資料之用。: o( g( X3 W# |. e3 k. J% m
       如何離開輸入模式1 Z' _: L) ]! U8 y! A; f
             《ESC》          結束輸入模式。( _6 B4 A$ {6 K$ j8 @! {& w
  • 指令模式
    : b1 k5 W( D5 ?# ^

, b/ p1 o7 R. f: ]
1.游標之移動" V- [  |! S9 P5 {9 Q
              h       向左移一個字元。) k6 j7 N+ ]) a+ r1 z
              j       向上移一個字元。
1 x- M% p; a- M- T: g              k       向下移一個字元。
) l4 t5 `4 @1 E6 G              l       向右移一個字元。$ T3 S9 U9 B- s7 ]2 Q1 j% I& Y
              0       移至該行之首
# y/ h/ O8 x+ j" x) S+ q              $       移至該行之末。
  C- V: \5 f2 E) P  R: O              ^       移至該行的第一個字元處。& ^# G/ J1 h, j' T7 V/ @# \
              H       移至視窗的第一列。" j& V5 N! r) a8 b1 Q
              M       移至視窗的中間那列。$ N1 M  b3 U" C) R3 K# h' c* \
              L       移至視窗的最後一列。
* t, C0 C" A; y/ c0 u4 c             G       移至該檔案的最後一列。5 ^7 @1 V' X+ P
             +       移至下一列的第一個字元處。
2 ?8 `( {$ j% e6 Q8 n5 o3 K             -       移至上一列的第一個字元處。, @( c) ]4 v, i2 l& \3 Q. R
             (       移至該句之首。 (註一)
, C* o0 j9 I: x' x             )       移至該句之末。' A; d6 g0 v+ X
             {       移至該段落之首。 (註二)
- C' \. h9 {0 k" b+ h( Z             }       移至該段落之末。
9 S$ v' D$ f3 A- E2 ?! g% \: K! {             nG      移至該檔案的第 n 列。8 Z9 {' p: {9 c' B
             n+      移至游標所在位置之後的第 n 列。& [3 c( j7 l: C% O% Q2 u
             n-      移至游標所在位置之前的第 n 列。( A. H) e* d, G) M) p- \( p6 x5 d
            <Ctrl><g>       會顯示該行之行號、檔案名稱、檔案中最末行之行號、游標所在行號佔總行號之百分比。( V2 p+ e  Y+ d) k7 I1 N8 D4 h
            註一:句子(sentence)在vi中是指以『!』、『.』或『?』結束的一串字。; d& N# R9 Z# Q4 t  A% x
            註二:段落(paragraph)在vi中是指以空白行隔開的文字。
) [5 @3 {0 S/ k& |) h) }9 S$ I4 i) Q
2.視窗的移動       <Ctrl><f>       視窗往下捲一頁。; Y3 S, z3 g  e) F/ P
           <Ctrl><b>       視窗往上捲一頁。
* U4 X# ~  G. m$ @           <Ctrl><d>       視窗往下捲半頁。
+ D+ C" y* G3 {8 z2 f' q           <Ctrl><u>       視窗往上捲半頁。; @- B1 T" Y9 b
           <Ctrl><e>       視窗往下捲一行。
6 t/ }5 W+ z8 b' V, G' @           <Ctrl><y>       視窗往上捲一行。- A6 N4 F8 ~$ M/ D0 n
2 q: O. ~  H  O1 w# t' K! L
3.刪除、複製及修改指令介紹 (此單元較少使用)
# D( U# M) ?: C8 g9 N" H       d(delete)、c(change)和y(yank)這一類的指令在 vi 中的指令格式為:. b  j. p; t+ B0 p* l
       Operator + Scope = command& L! ^4 B0 m" H1 h" W0 x4 H
       (運算子)   (範圍)( |& [9 Y! c7 K7 \# \! L
       運算子:
& x* r8 F+ l  c1 ^1 E& `       d       刪除指令。刪除資料,但會將刪除資料複製到記憶體緩衝區。1 e. j7 C$ M* @) P+ V, ^! a
       y       將資料(字組、行列、句子或段落)複製到緩衝區。
; E8 M; d. S0 j8 j       p       放置(put)指令,與 d 和 y 配和使用。可將最後delete或yank的資# g% v8 F, x- a" D
                料放置於游標所在位置之行列下。* b1 {4 B8 w3 ?: Z
       c       修改(change)指令,類似delete與insert的組和。刪除一個字組、句
: P; l6 L+ U3 B: \: I" u                子等之資料,並插入新鍵資料。- v/ h" _+ e6 \
       範圍:
+ f6 B% o% P. y0 A/ L       e       由游標所在位置至該字串的最後一個字元。
  }) Z" E% `$ C# q' v       w       由游標所在位置至下一個字串的第一個字元。
" C+ x/ X( K& L4 k, @1 i       b       由游標所在位置至前一個字串的第一個字元。+ ~6 ]9 Z& z( E8 u" t, C
       $       由游標所在位置至該行的最後一個字元。% c. e4 ~  c. s5 y! C" {$ d% r! b- @9 W! K
       0       由游標所在位置至該行的第一個字元。
* Z9 `+ e" `# M5 h) Y% b& K       )       由游標所在位置至下一個句子的第一個字元。/ E8 ^- a' _# R4 j+ Z7 {! G
       (       由游標所在位置至該句子的第一個字元。
' C1 _6 P# [/ [! \9 \" _% `       {       由游標所在位置至該段落的最後一個字元。
8 {: `8 W! f0 p: U7 k- ~       }       由游標所在位置至該段落的第一個字元。- L1 g5 _& v# `! n5 T1 p* t
       整行動作4 U8 e1 d( c, F) ]& C1 {
       dd      刪除整行。* D! ~7 i' o% B, c
       D       以行為單位,刪除游標後之所有字元。
: G9 W8 i9 N& K  l- l       cc      修改整行的內容。5 h8 c. v; F+ J% X: ~  e
       yy      yank整行,使游標所在該行複製到記憶體緩衝區。
7 {4 z1 O% j! `4 J- q* h# f/ S# |6 F( a2 w2 b9 c
4.刪除與修改# F1 W2 O6 s) E, d/ P1 ^8 O: b" k9 V: s
       x       刪除游標所在該字元。
+ X8 D: D$ a! Q. k; t/ s: P% w       X       刪除游標所在之前一字元。
+ E' N, Y  t. ]; {* O       dd      刪除游標所在該行。0 |: z2 c4 N4 y- \' }* \9 O6 |
       r       用接於此指令之後的字元取代(replace)游標所在字元。
6 j# |7 a% j" c& A                如: ra 將游標所在字元以 a 取代之。
' n5 w! ~0 Q0 q; h) \. b       R       進入取代狀態,直到《ESC》為止。
9 w6 b& h# G0 E: B       s       刪除游標所在之字元,並進入輸入模式直到《ESC》。1 \0 B  q( w, ~9 S
       S       刪除游標所在之該行資料,並進入輸入模式直到《ESC》。  V# @7 p' x6 E% C

* P$ T$ r: o& H7 y5 f; \( P3 e5.搬移與複製( Q- Z6 X  E# \) ^8 }
       利用delete 及 put 指令可完成資料搬移之目的。
1 h% p1 {+ O8 O! m  k# u. P5 @% q       利用yank 及 put 指令可完成資料複製之目的。; ^( z1 a0 \- N# n6 V1 f0 D. K' |
       yank 和delete 可將指定的資料複製到記憶體緩衝區,而藉由 put 指令% s; T  G* y$ u
       可將緩衝區內的資料複製到螢幕上。8 e, E: t& B/ |/ |1 {4 \- u, p
       例:; F2 C& t/ [2 k* S$ s$ c, u
       搬移一行        ‧在該行執行 dd
: Q1 M% B' h% K2 U                        ‧游標移至目的地  q, G, ]& X, h5 p/ N
                        ‧執行 p
, @+ P' t. Y% S5 ^0 ^       複製一行        ‧在該行執行 yy
( q2 v7 _9 J4 P8 Q3 e! H  F4 Y                        ‧游標移至目的地
4 K3 t# x. g: }) I                        ‧執行 p
& y* P( L$ X6 ~% N. z& N2 c0 Q) h8 X+ r* b5 P* f, J* N7 V
6.指令重複; S1 [" I' w1 c9 f
       在指令模式中,可在指令前面加入一數字 n,則此指令動作會重複執行 n
" s5 b* S0 S7 @! U9 j( _       次。1 A" o# g& _# a% G% \" d8 x9 s9 p
       例:" Y/ [! T5 n8 P  `: {3 b1 _3 f6 O
       刪除10行                ‧10dd
% L7 y; ^- Q7 E4 Y       複製10行                ‧10yy; \& s! K7 w' L, Y. ?5 y
                                ‧游標移至目的地. p/ h( B9 G7 I$ q0 R! b" g
                                ‧p/ C/ o. u: ]6 q) l+ O0 ]
       指標往下移10行 ‧10j& b+ s8 `- g7 v, N* [! I. X
5 |+ k! B: C3 z" L* ?
7.取消前一動作(Undo)) o: T$ B) Y6 z2 _# N8 j+ k# l
       即復原執行上一指令前的內容。5 m3 o- D- ~: g; @6 b: O8 ]
       u       恢復最後一個指令之前的結果。7 @2 _- s* N& b  q: ]+ v2 |
       U       恢復游標該行之所有改變。
# p  K1 x& w9 q+ ]/ F8 E0 L  O$ h" ]
8.搜尋
) W! r6 Q4 q: J" q  I7 e% H       在vi中可搜尋某一字串,使游標移至該處。
- ]! A; n0 Q4 ?& j, `" T       /字串           往游標之後尋找該字串。% y- t" }8 j- b) W# L9 N
       ?字串           往游標之前尋找該字串。
; C  t" ^6 @% j3 j       n               往下繼續尋找下一個相同的字串。
- |1 m, r: L9 ~* W3 V9 z' S9 D       N               往上繼續尋找下一個相同的字串。
. S4 A$ O$ \3 c- J9 d7 e  c6 q9 w/ U) c
9.資料的連接  O4 @: Y" v$ `
       J       句子的連接。將游標所在之下一行連接至游標該行的後面。
; z. S+ B0 |4 I% O* I+ |       若某行資料太長亦可將其分成兩行,只要將游標移至分開點,進入輸入模式
2 A/ {$ C0 z# r0 U0 ~% K       (可利用a、i等指令)再按《Enter》即可。
6 t8 k  Q  X: Z& g: F) c2 p
- y) N$ Z/ w4 v10.環境的設定
9 ]" O- |* @- D& D+ x0 A( u$ E       :setnu                設定資料的行號。9 B9 R3 l) }5 P" ^1 u
       :setnonu              取消行號設定。2 Y5 c; j6 D1 W9 A0 V' f+ Z
       :setai                自動內縮。
7 W$ ~" r# k# v5 I+ Q  m       :setnoai              取消自動內縮。
1 `7 H# U% w3 B7 |9 c& o2 I% D       自動內縮(automatic indentation)8 U  w. V/ {- a7 z. l" ^
       在編輯文件或程式時,有時會遇到需要內縮的狀況,『:set ai』即提供自
& P+ y+ g2 v* \) K# R1 L1 p       動內縮的功能,用下例解釋之:+ M% n) C  i, b5 p1 ~- ?
       ‧vi test
, I2 z9 z, s  C6 g( U       ‧(進入編輯視窗後)
- b6 c. V$ N1 l. J4 j2 w; C0 [1 }* w) \         this is the test for auto indent
6 K; |  X* A7 ]5 t         《Tab》start indent           ← :set ai (設自動內縮)
; y' S" S) |4 q. n! _+ j         《Tab》data4 q. g) l& {" I4 b
         《Tab》data& x8 z/ s" i! }. c! P
         《Tab》data                   ← :set noai (取消自動內縮)* J  e, m2 U3 X$ Q6 q$ g
       the end of auto indent.8 V. T0 _/ ?6 N
       ‧註:<Ctrl><d>可刪除《Tab》字元。- A( j# I+ `. c
  O/ e" M# O2 T. P% f
11.ex指令" I/ W2 P4 Q& b; o+ a! k
       讀寫資料; U: H& n  T% T! H, e# n; @
       :w                     將緩衝區的資料寫入磁碟中。
3 e& I+ f) y7 Y. E  v       :10,20wtest   將第10行至第20行的資料寫入test檔案。! F( n, n! m+ f8 a# C3 k
       :10,20w>>test  將第10行至第20行的資料加在test檔案之後。/ m7 a0 _+ M9 r$ E  `1 x# l
       :rtest                將test檔案的資料讀入編輯緩衝區的最後。, g. `" Q, i+ @$ {" l2 n
       刪除、複製及搬移: l+ F9 m& u8 e6 b9 Z2 j/ J1 V
       :10,20d                刪除第10行至第20行的資料。
4 z+ ]! L$ s  `2 w       :10d                   刪除第10行的資料。4 s* w: d) ]: x% k0 h0 j
       :%d                    刪除整個編輯緩衝區。
7 P5 m2 ^  l, m       :10,20co30             將第10行至第20行的資料複製至第30行之後。6 n) ^2 [8 M9 K" `& x# ~: ^/ ?
       :10,20mo30             將第10行至第20行的資料搬移至第30行之後。; Z# R( V, i0 t; F; x% z
       字串搜尋與取代
6 F+ W7 `: K+ H. ]3 Y) T       s(substitute)指令可搜尋某行列範圍。6 u" l! q6 W7 o% ~( H  n( S' @
       g(global)指令則可搜尋整個編輯緩衝區的資料。
1 ^8 L# ?7 Z' j1 A3 E- l) O       s指令以第一個滿足該條件的字串為其取代的對象,若該行有數個滿足該條
+ n/ X! Q6 h/ ?4 p( P( e8 H+ h       件的字串,也僅能取代第一個,若想取代所有的字串則需加上g參數。+ U2 S/ ?6 D9 C9 U$ N7 N
       :1,$s/old/new/g                將檔案中所有的『old』改成『new』。
5 _6 U  E; K! W       :10,20s/^/   /        將第10行至第20行資料的最前面插入5個空白。* l$ w; Z2 y0 b! `7 ^* V
       :%s/old/new/g          將編輯緩衝區中所有的『old』改成『new』。/ C# \3 \6 l. t. J* ~% `3 ]' n9 J* @
7 G, `3 ]; A  ~) w
12.恢復編輯時被中斷的檔案. q. |! R! e2 l) I' q% t
       在編輯過程中,若系統當掉或連線中斷,而緩衝區的資料並還未
4 j0 ?. L- P( w6 |* }7 E       被寫回磁碟時,當再度回到系統,執行下列指令即可回復中斷前
3 y* Q" C( r% ^2 Y! R" Q( U( I       的檔案內容。5 w9 G4 ?% A& H# n* k  y, y% E9 ]
       %vi -r filename& d0 p0 |4 y! ?$ U  W4 r
" T+ |9 B. S6 f/ x9 `' m+ Z
13.編輯多個檔案+ s* T2 F/ M+ }1 m. t. T& M2 P- W
       vi亦提供同時編輯多個檔案的功能,方法如下:
: u5 n6 s+ r* T3 R) q       %vi file1 file2 ..! Q0 p7 s' s0 g! \+ e/ X6 t
       當第一個檔案編修完成後,可利用『:w』將該緩衝區存檔,而後4 q5 H; }, X9 b
       再利用 『:n』載入下一個檔案。4 p7 m6 u' j$ P. o$ _0 t

( k. c$ O& y; w/ e參考:
, s+ H/ M* S- y7 F, ]" }
7 U0 s2 l7 N& X; L8 m3 khttp://chunchaichang.blogspot.tw/2010/08/vim-s.html
% o$ C8 o# ~) I6 \. P3 c( F6 i  M- N
-->
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則


-->

聚BT福利

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

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

GMT+8, 2024-10-7 07:28 , Processed in 0.066496 second(s), 16 queries .

連絡站長.廣告招商

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

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