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

 找回密碼
 立即註冊
快捷導航
  • 我愛av論壇BBS
  • 手機A片
  • 自拍偷拍外流區
  • 貼圖區
  • 52av裸聊室
  • 中文-中國主播
Yahoo!奇摩搜尋
熱搜: av4u論壇
Google搜尋
熱搜: av4u論壇
     
查看: 4166|回復: 0

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

[複製鏈接]
發表於 2014-11-18 08:47:14 | 顯示全部樓層 |閱讀模式
本帖最後由 IT_man 於 2017-5-6 23:16 編輯 # Z" _3 A2 Y7 A* [

) u8 a6 m; Y; M/ x6 k' c! j1 evi指令說明(完整版)8 a5 ~/ q: l) J- O8 k/ I
  • vi 的操作模式$ a3 I! [- D, G& F8 H


, d" g# X  ?* o+ F% [

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

  • 輸入模式! N  f+ [  c2 N( s) ^" V# J$ z

* h- ~9 `; M. O5 \: m% i8 b0 R6 l0 r( f5 s" F
       如何進入輸入模式" g8 Y) {7 S8 U6 w2 X, l
                a (append)    由游標之後加入資料。) B+ o& r8 W0 h( x3 D0 ~+ g' {
                A                   由該行之末加入資料。7 ]7 D5 M/ B0 y
                i (insert)        由游標之前加入資料。6 ?; U0 X8 I# ~0 r
                I                   由該行之首加入資料。5 G7 T9 C- L: `: j5 P- y. {1 V
                o (open)       新增一行於該行之下供輸入資料之用。5 g! Y/ t6 t7 ?6 z
                O                  新增一行於該行之上供輸入資料之用。- T7 P7 D) W5 q6 o2 L" \* t8 M
       如何離開輸入模式4 D6 C! v1 K0 c
             《ESC》          結束輸入模式。! m/ X! s- U: C' c+ Z: I, f3 Z7 `! @2 y
  • 指令模式5 D9 w( J/ \1 N  [0 @( @2 J

9 A9 p) _( V( w4 L2 d
1.游標之移動
9 O5 ?! r6 b3 B$ ^- |              h       向左移一個字元。+ b2 M" s& S; H8 O  \3 U) W' \
              j       向上移一個字元。# c, ~# Q7 i' G+ i
              k       向下移一個字元。! Y3 m) A9 T2 x
              l       向右移一個字元。
  r# [. B' g1 w9 ^$ |/ J  G/ F              0       移至該行之首
7 f; q- a+ k; C3 @6 `, j2 V              $       移至該行之末。1 G& H6 j+ E% L3 n# I2 p+ L
              ^       移至該行的第一個字元處。, i, i: @8 ~; V
              H       移至視窗的第一列。
# o" U$ n/ ?/ h5 T              M       移至視窗的中間那列。
& D+ `- Z: @6 q+ V9 p& h              L       移至視窗的最後一列。/ @3 _8 h' L( d# `  S& N
             G       移至該檔案的最後一列。
7 C# q. q% e: b6 S             +       移至下一列的第一個字元處。
6 d; v; P; J9 K1 Q" \# a             -       移至上一列的第一個字元處。
( Q8 y) f: l* A5 E( `) U             (       移至該句之首。 (註一)9 M  N  U( }0 t* r3 t( i0 Z
             )       移至該句之末。: c8 v  e& B1 u- U  j9 q
             {       移至該段落之首。 (註二)8 H2 Y' G' q. |1 Q/ {: P
             }       移至該段落之末。
" P: d! e$ o# q9 y& k; N! U5 X) g& w' b             nG      移至該檔案的第 n 列。
, `) n4 J. q" W  _  n, u             n+      移至游標所在位置之後的第 n 列。8 I- L, Z. W- O! m: N  K! {
             n-      移至游標所在位置之前的第 n 列。  M8 M% N% B5 w" H8 k- z  M
            <Ctrl><g>       會顯示該行之行號、檔案名稱、檔案中最末行之行號、游標所在行號佔總行號之百分比。
; \/ f+ x$ T# \/ {            註一:句子(sentence)在vi中是指以『!』、『.』或『?』結束的一串字。( d& }2 \8 v# f" f  }: T
            註二:段落(paragraph)在vi中是指以空白行隔開的文字。
8 Y7 t0 W2 J. H4 e/ n, J3 U
; |: y1 j+ n: B0 G- q% Z2.視窗的移動       <Ctrl><f>       視窗往下捲一頁。' D" |* {8 y7 ~# Z$ }0 ?. R) w4 m& Z
           <Ctrl><b>       視窗往上捲一頁。
7 y2 T$ u) J6 P" B+ L           <Ctrl><d>       視窗往下捲半頁。1 I- c+ S2 c! a
           <Ctrl><u>       視窗往上捲半頁。  b5 c5 ]& p0 x( u/ f
           <Ctrl><e>       視窗往下捲一行。
  c1 B5 y& ^3 R' V           <Ctrl><y>       視窗往上捲一行。
9 k% U# w! `, \* t
( `. M# v0 A8 L4 b3.刪除、複製及修改指令介紹 (此單元較少使用)  I- F8 ]/ P; R8 X& V" U- o8 b+ k
       d(delete)、c(change)和y(yank)這一類的指令在 vi 中的指令格式為:3 b4 T7 @2 W# k0 l2 T% m
       Operator + Scope = command
. |1 }# n! A! ~3 Q. c- a# W9 {       (運算子)   (範圍)
; U4 {8 g2 y( |& Y7 m6 J, s       運算子:
% o8 [$ f( \  d# @       d       刪除指令。刪除資料,但會將刪除資料複製到記憶體緩衝區。
+ }3 x8 l3 ^. |       y       將資料(字組、行列、句子或段落)複製到緩衝區。8 {) d3 L. d4 }( P; S" y* Z# W
       p       放置(put)指令,與 d 和 y 配和使用。可將最後delete或yank的資5 e) @0 G  c& f
                料放置於游標所在位置之行列下。' k2 l. {. S0 t; m
       c       修改(change)指令,類似delete與insert的組和。刪除一個字組、句) Q& a6 b% a: K. D
                子等之資料,並插入新鍵資料。# M; R) Z; `) V; Z
       範圍:
/ Y+ M; X0 F) l, D       e       由游標所在位置至該字串的最後一個字元。
4 B; V; Q* c7 z       w       由游標所在位置至下一個字串的第一個字元。( h; K5 [; B; W
       b       由游標所在位置至前一個字串的第一個字元。0 v" Z5 X1 a  v$ O, T. k" s
       $       由游標所在位置至該行的最後一個字元。
1 Z3 H$ I0 g0 w' V& r- m       0       由游標所在位置至該行的第一個字元。+ j6 |2 \: ?/ S& r- K% t" Q
       )       由游標所在位置至下一個句子的第一個字元。
) m2 b+ I: a7 |; A, O7 \" G, x       (       由游標所在位置至該句子的第一個字元。
; i' X7 d! a% c0 j3 r+ g       {       由游標所在位置至該段落的最後一個字元。
) }8 o; m2 y; o! e% X& |( ?       }       由游標所在位置至該段落的第一個字元。
$ x2 t7 h$ F) `5 R9 ~  e       整行動作
  P& _9 u1 M1 r8 K5 `9 n       dd      刪除整行。
; t/ m/ Z& h0 A, v* y/ H1 y1 ?       D       以行為單位,刪除游標後之所有字元。1 ^) I) ~; A/ G: y7 B( C- }
       cc      修改整行的內容。
' [+ M/ y0 Y0 I4 ~9 G, @       yy      yank整行,使游標所在該行複製到記憶體緩衝區。
) C# V5 `# s+ ^# Q2 M3 k7 k$ J
0 k- p3 y1 Y1 e4.刪除與修改7 U3 j# ^! i. H4 b/ D( T+ I) ^- A
       x       刪除游標所在該字元。9 y6 N* c0 e) A! o
       X       刪除游標所在之前一字元。
- Q( c) M- q$ k% W3 ~       dd      刪除游標所在該行。
% F7 r: k' f) K0 }3 K9 T, f, D       r       用接於此指令之後的字元取代(replace)游標所在字元。
$ o! @) s# S' M* ?" ~                如: ra 將游標所在字元以 a 取代之。
7 {; O: z. {4 v. V) V       R       進入取代狀態,直到《ESC》為止。; i. q( o& S3 c1 u! U
       s       刪除游標所在之字元,並進入輸入模式直到《ESC》。
  T% k" |) C3 s8 z6 V. N       S       刪除游標所在之該行資料,並進入輸入模式直到《ESC》。
  I3 P! l# p( e$ P& K# N
1 G+ A, s; k/ r! M8 s# d( t3 x5.搬移與複製0 M* Y# b. c' ?. R
       利用delete 及 put 指令可完成資料搬移之目的。$ V. T2 O- V, Y" ]
       利用yank 及 put 指令可完成資料複製之目的。2 |! |# I' T* y8 }' g! ~
       yank 和delete 可將指定的資料複製到記憶體緩衝區,而藉由 put 指令
" K& K0 z# A+ |. Q       可將緩衝區內的資料複製到螢幕上。
) ?& |( c2 V7 L; |$ b       例:' {. Q( n" O; f/ J% {2 {. @* c. T8 _' d
       搬移一行        ‧在該行執行 dd
8 g6 G! s  g, R# ?* V. Z) V                        ‧游標移至目的地
! O3 b3 _. L( l  J# ?) v/ f                        ‧執行 p
8 E$ d& Z% X( X0 V       複製一行        ‧在該行執行 yy
4 `; o+ {- O& ?9 j0 U1 ^9 o5 `                        ‧游標移至目的地6 ^. d4 o2 G% e9 b  e3 z
                        ‧執行 p
) v( b7 C$ b: B* q2 H2 G! w. D  B9 U  [* j1 w5 n8 f
6.指令重複! Y& l5 n% p0 P* a2 B' T: q
       在指令模式中,可在指令前面加入一數字 n,則此指令動作會重複執行 n
3 U! ~" L# h: L: n( z3 K       次。9 x( o* W2 ?$ C% x$ c& I2 v
       例:
  v5 W" e! X- Y9 C       刪除10行                ‧10dd
) @1 q- e, @2 h. H' k       複製10行                ‧10yy# x6 u3 `# @6 V7 q* S/ k. J# h
                                ‧游標移至目的地
: s. G2 M2 Q6 d5 k" H. h( e                                ‧p
/ E; f5 m8 x( ?0 \! W5 S       指標往下移10行 ‧10j7 c1 |3 j/ ?/ ~, }5 b! k

& w- [" s! j# d$ d/ ~; F: |7.取消前一動作(Undo)* C& l  `  K. S7 Z
       即復原執行上一指令前的內容。
1 t% Q2 \) ]; Y% G. A: y" u       u       恢復最後一個指令之前的結果。( k( [. b  A0 ~, @; _# O' i
       U       恢復游標該行之所有改變。* h) C1 u( O( Y( @

) n8 H4 r! c" l+ N4 K8.搜尋1 `; y1 ~: D  F8 b$ f
       在vi中可搜尋某一字串,使游標移至該處。: C% I6 S5 |( a  [3 \) B3 E
       /字串           往游標之後尋找該字串。
! q& s4 c$ ?; M2 H1 Q- _       ?字串           往游標之前尋找該字串。- X) F  r9 h, L$ i) T% H
       n               往下繼續尋找下一個相同的字串。
5 }; q+ m" K! A. x, C       N               往上繼續尋找下一個相同的字串。
3 `9 w% t$ q- i$ n* S2 a$ s6 e- }+ l0 |  `5 c+ {
9.資料的連接# v1 M( P1 V2 ]9 `
       J       句子的連接。將游標所在之下一行連接至游標該行的後面。
4 L5 _4 x7 q9 Q% H( f       若某行資料太長亦可將其分成兩行,只要將游標移至分開點,進入輸入模式$ _. d" f5 b) p
       (可利用a、i等指令)再按《Enter》即可。
6 d9 G6 @/ ?7 j0 b0 M
+ e/ i% j4 w' N9 e3 G% n10.環境的設定. w1 F" G4 e% R2 _
       :setnu                設定資料的行號。
8 m  t6 z& `9 W% [6 c9 E0 \: f       :setnonu              取消行號設定。
, D. m9 E. M% W+ R5 c. R. m/ \       :setai                自動內縮。
" A( W- z( H) f5 H* U% e       :setnoai              取消自動內縮。
% X6 z; k1 c* t9 H% T, U1 T       自動內縮(automatic indentation), T' [% x! d9 H# p& S8 c8 N/ e
       在編輯文件或程式時,有時會遇到需要內縮的狀況,『:set ai』即提供自8 L% [* @- a. B$ X4 S
       動內縮的功能,用下例解釋之:
: |2 f/ ^, X: L6 y9 y2 b$ H       ‧vi test# L9 r6 p$ y' z
       ‧(進入編輯視窗後)
: ~( S* w7 F6 |! o, n         this is the test for auto indent; i0 _  F+ D, e2 e# P; Z
         《Tab》start indent           ← :set ai (設自動內縮)
* R8 v( D, z9 L         《Tab》data% J" x: P6 \6 q
         《Tab》data
6 h! O  V6 Z" S! h2 E/ b% ]5 m  Z         《Tab》data                   ← :set noai (取消自動內縮)
% ~, p5 M9 k" Y6 _" e+ F0 t       the end of auto indent.$ F. e7 F, t1 `7 p- q5 G( e
       ‧註:<Ctrl><d>可刪除《Tab》字元。: ~# {9 U+ N9 h: d
1 y/ s+ Z% d. W* O
11.ex指令
+ ?' r3 t3 }& L       讀寫資料# f; A* Q4 Q- V9 w( j4 c' q
       :w                     將緩衝區的資料寫入磁碟中。6 z6 Q3 ^9 _# e/ O' R- P
       :10,20wtest   將第10行至第20行的資料寫入test檔案。
* L0 }0 D% [8 e' ]& c; c# }* n# `       :10,20w>>test  將第10行至第20行的資料加在test檔案之後。
4 b1 H% e5 P, w& }. p       :rtest                將test檔案的資料讀入編輯緩衝區的最後。5 Q2 `4 a/ H/ J& Z' [0 J% Q  l& n& I
       刪除、複製及搬移4 X8 |; e: `) @8 k
       :10,20d                刪除第10行至第20行的資料。
' k7 `: u1 U3 A6 s       :10d                   刪除第10行的資料。
: q: E8 d# j7 r5 N# z, m# _       :%d                    刪除整個編輯緩衝區。( `$ Q$ \  F4 A
       :10,20co30             將第10行至第20行的資料複製至第30行之後。) r( Y, T. A$ M% u# C3 x
       :10,20mo30             將第10行至第20行的資料搬移至第30行之後。$ Y; Y9 c% V4 Y0 _% R) N
       字串搜尋與取代
. f8 F+ R, b' d       s(substitute)指令可搜尋某行列範圍。
2 T, O. u& }. _) u( }       g(global)指令則可搜尋整個編輯緩衝區的資料。8 N% {  c& v8 ^# V  v! Y$ l) ]
       s指令以第一個滿足該條件的字串為其取代的對象,若該行有數個滿足該條
5 u( V9 H  u; n$ ~6 @" c3 I2 A3 Q       件的字串,也僅能取代第一個,若想取代所有的字串則需加上g參數。
8 K# V+ Z. X. {7 H       :1,$s/old/new/g                將檔案中所有的『old』改成『new』。
+ o$ D1 B9 Y* f* i" O       :10,20s/^/   /        將第10行至第20行資料的最前面插入5個空白。. d+ a9 j- L- {& G, C) G6 M( Z4 `! Y7 b
       :%s/old/new/g          將編輯緩衝區中所有的『old』改成『new』。# S8 X& _9 R1 F

; r; B2 P% x' q8 v1 K12.恢復編輯時被中斷的檔案
0 f9 I, `& K. k" E, l       在編輯過程中,若系統當掉或連線中斷,而緩衝區的資料並還未
& X6 [8 X  |: ~       被寫回磁碟時,當再度回到系統,執行下列指令即可回復中斷前
7 ]8 {1 P7 t* E& Q$ S       的檔案內容。( y( j! `1 I1 Y  J
       %vi -r filename
" u. ^2 n; ?/ a! k; W
& I) k8 s/ P. Q1 k7 [13.編輯多個檔案
3 O- s6 g# R4 f, k: [0 Z: i+ r  `       vi亦提供同時編輯多個檔案的功能,方法如下:: K, P( q+ h4 N3 c8 ?. B
       %vi file1 file2 ..
1 @# ^9 z$ ^' T, J+ L" w; p4 u       當第一個檔案編修完成後,可利用『:w』將該緩衝區存檔,而後' B8 u5 ^6 P9 h
       再利用 『:n』載入下一個檔案。
  T; N8 [8 b3 G+ T
' v, u5 o. @9 d5 W參考:
9 s3 Q, ^: @- v4 |# s
4 [+ C$ W# B2 n- E) u. Y' V& dhttp://chunchaichang.blogspot.tw/2010/08/vim-s.html. @" n4 s* h, ^7 f) i5 q
回復

使用道具 舉報

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

本版積分規則

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

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

GMT+8, 2026-5-21 07:02 , Processed in 0.009667 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

連絡站長.廣告招商

[email protected] | Telegram:@asa00061     since 2015-01

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