vi總結

vi經常使用命令整理

★命令模式 

移動光標 

h 或 向左方向鍵(←) → 光標向左移動一個字元 

j 或 向下方向鍵(↓) → 光標向下移動一個字元 

k 或 向上方向鍵(↑) → 光標向上移動一個字元 

l 或 向右方向鍵(→) → 光標向右移動一個字元 

[Ctrl] + [f] → 屏幕『向下』移動一頁,至關於 [Page Down]按鍵 

[Ctrl] + [ b ] → 屏幕『向上』移動一頁,至關於 [Page Up] 按鍵 

n<space> → n 表示『數字』。按下數字後再按空白鍵,光標會向右移動這一行的 n 個字元 

0 → 數字『 0 』:移動到這一行的最前面字元處  

$ → 移動到這一行的最後面字元處 

G → 移動到這個文件的最後一行 

nG → n 爲數字。移動到這個文件的第 n 行(可配合 :set nu) 

gg → 移動到這個文件的第一行,至關於 1G 

n<Enter> → n 爲數字。光標向下移動 n 行 


查找與替換 

/word → 向光標之下查找一個名稱爲 word 的字符串。如想查找 eric4ever 字符串,輸入 /eric4ever 便可 

?word → 向光標之上查找一個名稱爲 word 的字符串 

n → 『重複前一個查找的動做』 

N → 與 n 恰好相反,爲『反向』進行前一個查找動做 

:n1,n2s/word1/word2/g → n1 與 n2 均爲數字。在第 n1 與 n2 行之間查找 word1 字符串,並將該字符串替換爲 word2。如:在 1 到 9 行之間查找 eric4ever 並替換爲 ERIC4EVER 則:『:1,9s/eric4ever/ERIC4EVER/g』 

:1,$s/word1/word2/g → 從第一行到最後一行查找 word1 字符串,並將該字符串替換爲 word2 

:1,$s/word1/word2/gc → 從第一行到最後一行查找 word1 字符串,並將該字符窗替換爲 word2,替換前顯示提示對話框是否確認替換 



刪除、複製與粘貼 

x, X → 在一行字當中,x 爲向後刪除一個字元 (至關於 [del] 按鍵), X 爲向前刪除一個字元(至關於 [backspace] 按鍵) 

dd → 刪除光標所在的那一整列 

ndd → n 爲數字。刪除光標所在的向下 n 列 

yy → 複製光標所在的那一行 

nyy → n 爲數字。複製光標所在的向下 n 列 

p, P → p 爲將已複製的內容粘貼在光標下一行上,P 則爲粘貼在光標的上一行 

u → 還原前一個動做 

[Ctrl]+r → 重作上一個動做 

. → 小數點,意思是重複前一個動做 



★編輯模式 

i, I → 插入:在目前的光標所在處插入輸入的文字,已存在的文字會向後退; 其中, i 爲『從目前光標所在處插入』, I 爲『在目前所在行的第一個非空白字元處開始插入』 

a, A → a 爲『從目前光標所在的下一個字元處開始插入』, A 爲『從光標所在行的最後一個字元處開始插入』 

o, O → o 爲『在目前光標所在的下一行處插入新的一行』, O 爲『在目前光標所在處的上一行插入新的一行』 

r, R → r 爲『取代光標所在的那一個字元』, R 爲『一直取代光標所在的文字,直到按下 ESC 爲止』 

Esc → 退出編輯模式,回到通常模式中 


★末行指令模式 

:w → 將編輯的文件寫入到硬盤上 

:q → 退出 vi 

:wq → 保存後退出,若爲 :wq! 則爲強制保存爲退出 

:set nu → 顯示行號 

:set nonu → 取消顯示行號 
補充 
光標控制命令 


命令 光標移動 

h或^h 向左移一個字符 

j或^j或^n 向下移一行 

k或^p 向上移一行 

l或空格 向右移一個字符 

G 移到文件的最後一行 

nG 移到文件的第n行 

w 移到下一個字的開頭 

W 移到下一個字的開頭,忽略標點符號 

b 移到前一個字的開頭 

B 移到前一個字的開頭,忽略標點符號 

L 移到屏幕的最後一行 

M 移到屏幕的中間一行 

H 移到屏幕的第一行 

e 移到下一個字的結尾 

E 移到下一個字的結尾,忽略標點符號 

( 移到句子的開頭 

) 移到句子的結尾 

{ 移到段落的開頭 

} 移到下一個段落的開頭 

0或| 移到當前行的第一列 

n| 移到當前行的第n列 

^ 移到當前行的第一個非空字符 

$ 移到當前行的最後一個字符 

+或return 移到下一行的第一個字符 

- 移到前一行的第一個非空字符 


在vi中添加文本 

命令 插入動做 

a 在光標後插入文本 

A 在當前行插入文本 

i 在光標前插入文本 

I 在當前行前插入文本 

o 在當前行的下邊插入新行 

O 在當前行的上邊插入新行 

:r file 讀入文件file內容,並插在當前行後 

:nr file 讀入文件file內容,並插在第n行後 

escape 回到命令模式 

^v char 插入時忽略char的指定意義,這是爲了插入特殊字符 


在vi中刪除文本 
命令 刪除操做 x 刪除光標處的字符,能夠在x前加上須要刪除的字符數目 nx 從當前光標處日後刪除n個字符 X 刪除光標前的字符,能夠在X前加上須要刪除的字符數目 nX 從當前光標處往前刪除n個字符 dw 刪至下一個字的開頭 ndw 從當前光標處日後刪除n個字 dG 刪除行,直到文件結束 dd 刪除整行 ndd 從當前行開始日後刪除 db 刪除光標前面的字 ndb 從當前行開始往前刪除n字 :n,md 從第m行開始往前刪除n行 d或d$ 從光標處刪除到行尾 dcursor_command 刪除至光標命令處,如dG將從當產膽行刪除至文件的末尾 ^h或backspace 插入時,刪除前面的字符 ^w 插入時,刪除前面的字 修改vi文本 每一個命令前面的數字表示該命令重複的次數 命令 替換操做 rchar 用char替換當前字符 R text escape 用text替換當前字符直到換下Esc鍵 stext escape 用text代替當前字符 S或cctext escape 用text代替整行 cwtext escape 將當前字改成text Ctext escape 將當前行餘下的改成text cG escape 修改至文件的末尾 ccursor_cmd text escape 從當前位置處到光標命令位置處都改成text 在vi中查找與替換 命令 查找與替換操做 /text 在文件中向前查找text ?text 在文件中向後查找text n 在同一方向重複查找 N 在相反方向重複查找 ftext 在當前行向前查找text Ftext 在當前行向後查找text ttext 在當前行向前查找text,並將光標定位在text的第一個字符 Ttext 在當前行向後查找text,並將光標定位在text的第一個字符 :set ic 查找時忽略大小寫 :set noic 查找時對大小寫敏感 :s/oldtext/newtext 用newtext替換oldtext :m,ns/oldtext/newtext 在m行經過n,用newtext替換oldtext & 重複最後的:s命令 :g/text1/s/text2/text3 查找包含text1的行,用text3替換text2 :g/text/command 在全部包含text的行運行command所表示的命令 :v/text/command 在全部不包含text的行運行command所表示的命令 在vi中複製文本 命令 複製操做 yy 將當前行的內容放入臨時緩衝區 nyy 將n行的內容放入臨時緩衝區 p 將臨時緩衝區中的文本放入光標後 P 將臨時緩衝區中的文本放入光標前 "(a-z)nyy 複製n行放入名字爲圓括號內的可命名緩衝區,省略n表示當前行 "(a-z)ndd 刪除n行放入名字爲圓括號內的可命名緩衝區,省略n表示當前行 "(a-z)p 將名字爲圓括號的可命名緩衝區的內容放入當前行後 "(a-z)P 將名字爲圓括號的可命名緩衝區的內容放入當前行前 在vi中撤消與重複 命令 撤消操做 u 撤消最後一次修改 U 撤消當前行的全部修改 . 重複最後一次修改 , 以相反的方向重複前面的f、F、t或T查找命令 ; 重複前面的f、F、t或T查找命令 "np 取回最後第n次的刪除(緩衝區中存有必定次數的刪除內容,通常爲9) n 重複前面的/或?查找命令 N 以相反方向重複前面的/或?命令 保存文本和退出vi 命令 保存和/或退出操做 :w 保存文件但不退出vi :w file 將修改保存在file中但不退出vi :wq或ZZ或:x 保存文件並退出vi :q! 不保存文件,退出vi :e! 放棄全部修改,從上次保存文件開始再編輯 vi中的選項 選項 做用 :set all 打印全部選項 :set nooption 關閉option選項 :set nu 每行前打印行號 :set showmode 顯示是輸入模式仍是替換模式 :set noic 查找時忽略大小寫 :set list 顯示製表符(^I)和行尾符號 :set ts=8 爲文本輸入設置tab stops :set window=n 設置文本窗口顯示n行 vi的狀態 選項 做用 :.= 打印當前行的行號 := 打印文件中的行數 ^g 顯示文件名、當前的行號、文件的總行數和文件位置的百分比 :l 使用字母"l"來顯示許多的特殊字符,如製表符和換行符 在文本中定位段落和放置標記 選項 做用 { 在第一列插入{來定義一個段落 [[ 回到段落的開頭處 ]] 向前移到下一個段落的開頭處 m(a-z) 用一個字母來標記當前位置,如用mz表示標記z '(a-z) 將光標移動到指定的標記,如用'z表示移動到z 在vi中鏈接行 選項 做用 J 將下一行鏈接到當前行的末尾 nJ 鏈接後面n行 光標放置與屏幕調整 選項 做用 H 將光標移動到屏幕的頂行 nH 將光標移動到屏幕頂行下的第n行 M 將光標移動到屏幕的中間 L 將光標移動到屏幕的底行 nL 將光標移動到屏幕底行上的第n行 ^e(ctrl+e) 將屏幕上滾一行 ^y 將屏幕下滾一行 ^u 將屏幕上滾半頁 ^d 將屏幕下滾半頁 ^b 將屏幕上滾一頁 ^f 將屏幕下滾一頁 ^l 重繪屏幕 z-return 將當前行置爲屏幕的頂行 nz-return 將當前行下的第n行置爲屏幕的頂行 z. 將當前行置爲屏幕的中央 nz. 將當前行上的第n行置爲屏幕的中央 z- 將當前行置爲屏幕的底行 nz- 將當前行上的第n行置爲屏幕的底行 vi中的shell轉義命令 選項 做用 :!command 執行shell的command命令,如:!ls :!! 執行前一個shell命令 :r!command 讀取command命令的輸入並插入,如:r!ls會先執行ls,而後讀入內容 :w!command 將當前已編輯文件做爲command命令的標準輸入並執行command命令,如:w!grep all :cd directory 將當前工做目錄更改成directory所表示的目錄 :sh 將啓動一個子shell,使用^d(ctrl+d)返回vi :so file 在shell程序file中讀入和執行命令 vi中的宏與縮寫 (避免使用控制鍵和符號,不要使用字符K、V、g、q、v、*、=和功能鍵) 選項 做用 :map key command_seq 定義一個鍵來運行command_seq,如:map e ea,不管何時均可以e移到一個字的末尾來追加文本 :map 在狀態行顯示全部已定義的宏 :umap key 刪除該鍵的宏 :ab string1 string2 定義一個縮寫,使得當插入string1時,用string2替換string1。當要插入文本時,鍵入string1而後按Esc鍵,系統就插入了string2 :ab 顯示全部縮寫 :una string 取消string的縮寫 在vi中縮進文本 選項 做用 ^i(ctrl+i)或tab 插入文本時,插入移動的寬度,移動寬度是事先定義好的 :set ai 打開自動縮進 :set sw=n 將移動寬度設置爲n個字符 n<< 使n行都向左移動一個寬度 n>> 使n行都向右移動一個寬度,例如3>>就將接下來的三行每行都向右移動一個移動寬度 1.編輯模式: 插入/替換 (按INSERT鍵切換) 2.[ESC] 指令模式 3.輸入模式 將在指令模式下輸入 a 新增(a,A) a:從光標所在位置後面開始新增資料,光標後的資料隨新增資料向後移動。 A:從光標所在列最後面的地方開始新增資料。 插入(i,I) i:從光標所在位置前面開始插入資料,光標後的資料隨新增資料向後移動。 I:從光標所在列的第一個非空白字元前面開始插入資料。 開始(o,O) o:在光標所在列下新增一列並進入輸入模式。 O:在光標所在列上方新增一列並進入輸入模式。 4.存盤/退出 [ESC] :wq //存盤退出 :w! //存盤繼續 :q //退出 (源文件未被編輯過可用) :q! //強制退出 5.刪除與改修 [ESC] x //刪除光標所在字符 dd //刪除光標所在列。 r //修改光標所在字元,r後接着要修正的字符。 R //進入取替換狀態。 s //刪除光標所在字元,並進入輸入模式。 S //刪除光標所在的列,並進入輸入模式。 6.恢復 [ESC] u //能夠恢復被刪除的文字。 U //能夠恢復光標所在列的全部改變。

  

vi的複製、粘貼、查找、刪除等經常使用命令


vi編輯器有3種模式:命令模式、輸入模式、末行模式。掌握這三種模式十分重要。
•命令模式:vi啓動後默認進入的是命令模式,從這個模式使用命令能夠切換到另外兩種模式,同時不管在任何模式下只要按一下[Esc]鍵均可以返回命令模式。在命令模式中輸入字幕「i」就能夠進入vi的輸入模式編輯文件。 •輸入模式:在這個模式中咱們能夠編輯、修改、輸入等編輯工做,在編輯器最後一行顯示一個「--INSERT--」標誌着vi進入了輸入模式。當咱們完成修改輸入等操做的時候咱們須要保存文件,這時咱們須要先返回命令模式,在進入末行模式保存。 •末行模式:在命令模式輸入「:」便可進入該模式,在末行模式中有好多好用的命令。 命令模式下的操做 1. 複製 yy命令複製當前整行的內容到vi緩衝區; yw複製當前光標所在位置到單詞尾字符的內容到vi緩存區,至關於複製一個單詞; y$複製光標所在位置到行尾內容到緩存區; y^複製光標所在位置到行首內容到緩存區; #yy例如:5yy就是複製5行; #yw例如:2yw就是複製兩個單詞; 若是要複製第m行到第n行之間的內容,能夠在末行模式中輸入m,ny例如:3,5y複製第三行到第五行內容到緩存區; 2. 粘貼 粘貼緩衝區中的內容,用p; 3. 刪除 x刪除光標處的單個字符; dd刪除光標所在行; dw刪除當前字符到單詞尾包括空格的全部字符; #x例如3x刪除光標處向右的三個字符; #dd例如3dd從當前行開始向下刪除三行文本; 4. 撤銷 u命令取消最近一次的操做,可使用屢次來恢復原有的操做; U取消全部操做; Ctrl+R能夠恢復對使用u命令的操做; 5.切換到輸入模式的命令 ◦ 新增 (append) a :從光標所在位置後面開始新增資料,光標後的資料隨新增資料向後移動。 A: 從光標所在列最後面的地方開始新增資料。 ◦ 插入 (insert) i: 從光標所在位置前面開始插入資料,光標後的資料隨新增資料向後移動。 I :從光標所在列的第一個非空白字元前面開始插入資料。 ◦ 開始 (open) o :在光標所在列下新增一列並進入輸入模式。 O: 在光標所在列上方新增一列並進入輸入模式。 ◦Esc退出命令; 末行模式下的操做 1. 至上而下的查找 / 要查找的字符竄,其中/表明從光標所在位置起開始查找,例如:/ work; 2. 至下而上的查找 ?要查找的字符竄 例如:/ work; 3. 替換 :s/old/new用new替換行中首次出現的old; : s/old/new/g 用new替換行中全部出現的old; :#,# s/old/new/g用new替換從第#行到第#行中出現的old; :% s/old/new/g用new替換整篇中出現的old; 4. 若是替換的範圍較大時,在全部的命令尾加一個c命令,強制每一個替換須要用戶進行確認,例如:s/old/new/c 或s/old/new/gc;

  

linux vi命令詳解及使用技巧集錦
 
2009-11-3     做者:        編輯:閆蕊   點擊進入論壇
 
關鍵詞:linux vi
 

  進入vi的命令
 
  vi filename :打開或新建文檔,並將光標置於第一行首
 
  vi +n filename :打開文檔,並將光標置於第n行首
 
  vi + filename :打開文檔,並將光標置於最後一行首
 
  vi +/pattern filename:打開文檔,並將光標置於第一個和pattern匹配的串處
 
  vi -r filename :在上次正用vi編輯時發生系統崩潰,恢復filename
 
  vi filename....filename :打開多個文檔,依次編輯
 
  移動光標類命令
 
  h :光標左移一個字符
 
  l :光標右移一個字符
 
  space:光標右移一個字符
 
  Backspace:光標左移一個字符
 
  k或Ctrl+p:光標上移一行
 
  j或Ctrl+n :光標下移一行
 
  Enter :光標下移一行
 
  w或W :光標右移一個字至字首
 
  b或B :光標左移一個字至字首
 
  e或E :光標右移一個字j至字尾
 
  ) :光標移至句尾
 
  ( :光標移至句首
 
  }:光標移至段落開頭
 
  {:光標移至段落結尾
 
  nG:光標移至第n行首
 
  n+:光標下移n行
 
  n-:光標上移n行
 
  n$:光標移至第n行尾
 
  H :光標移至屏幕頂行
 
  M :光標移至屏幕中間行
 
  L :光標移至屏幕最後行
 
  0:(注意是數字零)光標移至當前行首
 
  $:光標移至當前行尾
 
  屏幕翻滾類命令
 
  Ctrl+u:向文檔首翻半屏
 
  Ctrl+d:向文檔尾翻半屏
 
  Ctrl+f:向文檔尾翻一屏
 
  Ctrl+b;向文檔首翻一屏
 
  nz:將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部。
 
  插入文本類命令
 
  i :在光標前
 
  I :在當前行首
 
  a:光標後
 
  A:在當前行尾
 
  o:在當前行之下新開一行
 
  O:在當前行之上新開一行
 
  r:替換當前字符
 
  R:替換當前字符及其後的字符,直至按ESC鍵
 
  s:從當前光標位置處開始,以輸入的文本替代指定數目的字符
 
  S:刪除指定數目的行,並以所輸入文本代替之
 
  ncw或nCW:修改指定數目的字
 
  nCC:修改指定數目的行
 
  刪除命令
 
  ndw或ndW:刪除光標處開始及其後的n-1個字
 
  do:刪至行首
 
  d$:刪至行尾
 
  ndd:刪除當前行及其後n-1行
 
  x或X:刪除一個字符,x刪除光標後的,而X刪除光標前的
 
  Ctrl+u:刪除輸入方式下所輸入的文本
 
  搜索及替換命令 :
 
  /pattern:從光標開始處向文檔尾搜索pattern
 
  ?pattern:從光標開始處向文檔首搜索pattern
 
  n:在同一方向重複上一次搜索命令
 
  N:在反方向上重複上一次搜索命令
 
  :s/p1/p2/g:將當前行中任何p1均用p2替代
 
  :n1,n2s/p1/p2/g:將第n1至n2行中任何p1均用p2替代
 
  :g/p1/s//p2/g:將文檔中任何p1均用p2替換
 
  選項配置
 
  all:列出任何選項配置狀況
 
  term:配置終端類型
 
  ignorance:在搜索中忽略大小寫
 
  list:顯示製表位(Ctrl+I)和行尾標誌($)
 
  number:顯示行號
 
  report:顯示由面向行的命令修改過的數目
 
  terse:顯示簡短的警告信息
 
  warn:在轉到別的文檔時若沒保存當前文檔則顯示NO write信息
 
  nomagic:容許在搜索模式中,使用前面不帶「\」的特別字符
 
  nowrapscan:禁止vi在搜索到達文檔兩端時,又從另外一端開始
 
  mesg:容許vi顯示其餘用戶用write寫到本身終端上的信息
 
  最後行方式命令
 
  :n1,n2 co n3:將n1行到n2行之間的內容拷貝到第n3行下
 
  :n1,n2 m n3:將n1行到n2行之間的內容移至到第n3行下
 
  :n1,n2 d :將n1行到n2行之間的內容刪除
 
  :w :保存當前文檔
 
  :e filename:打開文檔filename進行編輯
 
  :x:保存當前文檔並退出
 
  :q:退出vi
 
  :q!:不保存文檔並退出vi
 
  :!command:執行shell命令command
 
  :n1,n2 w!command:將文檔中n1行至n2行的內容做爲command的輸入並執行之,若不指
 
  定n1,n2,則表示將整個文檔內容做爲command的輸入
 
  :r!command:將命令command的輸出結果放到當前行 。

  

linux > 正文
 

vim 命令
 
Nov132011
 

做者:逝去日子   發佈:2011-11-13 19:38   分類:linux   閱讀:90 views   暫無評論   





Vim是從vi發展出來的一個文本編輯器。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被普遍使用。和Emacs並列成爲類Unix系統用戶最喜歡的編輯器。我把我收集來的一些命令分享下。
 

1.
 vim
 #在命令行中輸入vim,進入vim編輯器
 2.
 i
 #按一下i鍵,下端顯示 –INSERT–
 #插入命令,在vim中可能任意字符都有做用
 3.
 Esc
 #退出i(插入)命令進行其它命令使用
 4.
 :r filename
 #讀入一個文件內容,並寫入到當前編輯器中
 5.
 :w newfilename
 #將該編輯器中的內容寫入到一個新文件中
 6.
 :w
 #在編輯的過程當中保存文件,至關於word中的ctrl+s
 7.
 :! command
 暫時離開 vi 到指令列模式下執行 command 的顯示結果!例如
 :!ls
 #在編輯過程當中執行shell命令ls
 8.
 :sh
 #進入shell命令行,執行完命令後ctrl+d退出從新進入vim編輯繼續編輯
 在shell命令下,執行ctral+l完成清屏
 9.
 :wq
 #保存文件並退出
 10.
 ZZ
 #保存文件並退出,同上一個命令,注意大寫
 11.
 :q!
 #強制退出,不保存
 12.
 :set number或者:set nu
 #使編輯中的文件顯示行號
 13.
 :set nonumber或者:set nonu
 #與上一條命令相反,不顯示行號
 14.
 :help i
 #查看插入命令幫助
 15.
 u
 #撤消上一步操做
 16.
 /Fedora
 #查找Fedora字符
 17.
 :s /Fedora/Redhat
 #將Fedora字符替換爲Redhat(只替換在光標所在的行)
 18.
 dw
 #刪除單詞
 dd
 #刪除行
 19.
 o
 #打開空白一行
 20.
 vim + filename
 #進行文件最後一行進行編輯
 21.
 vim +n filename
 #進入文件第n行進行編輯
 22.
 :1,.s/redhat/fedora
 #.號表示當前行,即光標所在行
 #將第1行到當前行(.)第一次出現的redhat字符代替爲fedora
 23.
 :1,.s/redhat/fedora/g
 #將第1行到當前行(.)全部出現的redhat字符代替爲fedora,g
 全局標誌
 24.
 :1,$s/redhat/fedora/g
 #$表示最後一行
 #將第1行到最後一行全部出現的redhat字符代替爲fedora
 25.
 :%s/redhat/fedora/g
 #同上一個命令
 26.
 :%s//fedora/g
 #將第1行到最後一行全部出現的redhat字代替爲fedora
 #字,而不是字符
 27.
 :f
 #顯示文件內容,狀態等等
 #同ctrl+g命令
 28.
 :e!
 #當前文件,返回到上次保存
 :e file
 #切換編輯文件
 29.
 :n
 #當編輯時有多個文件(好比vim file1 file2)時切換到下一個文件,與:e file
 結合使用
 
VIM命令大全
 光標控制命令
 命令 光標移動
 h 向左移一個字符
 j 向下移一行
 k 向上移一行
 l 向右移一個字符
 G 移到文件的最後一行
 w 移到下一個字的開頭
 W 移到下一個字的開頭,忽略標點符號
 b 移到前一個字的開頭
 B 移到前一個字的開頭,忽略標點符號
 L 移到屏幕的最後一行
 M 移到屏幕的中間一行
 H 移到屏幕的第一行
 e 移到下一個字的結尾
 E 移到下一個字的結尾,忽略標點符號
 ( 移到句子的開頭
 ) 移到句子的結尾
 { 移到段落的開頭
 } 移到下一個段落的開頭
 0(數字), | 移到當前行的第一列
 ^ 移到當前行的第一個非空字符
 $ 移到當前行的最後一個字符
 +, Enter 移到下一行的第一個字符
 - 移到前一行的第一個非空字符
 在 vi 中添加文本
 命令 插入動做
 a 在光標後插入文本
 A 在當前行插入文本
 i 在光標前插入文本
 I 在當前行前插入文本
 o 在當前行的下邊插入新行
 O 在當前行的上邊插入新行
 s 刪除光標所在處字符,並進入插入模式
 S 刪除光標所在的行,並進入插入模式
 :r file 讀入文件 file 內容,並插在當前行後
 :nr file 讀入文件 file 內容,並插在第 n 行後
 Esc 回到命令模式
 ^v char 插入時忽略 char 的指定意義,這是爲了插入特殊字符
 在 vi 中刪除文本
 命令 刪除操做
 x 刪除光標處的字符
 dw 刪至下一個字的開頭
 dG 刪除行,直到文件結束
 dd 刪除整行
 db 刪除光標前面的字
 :n,md 從第 m 行開始往前刪除 n 行
 d, d$ 從光標處刪除到行尾
 ^h, backspace 插入時,刪除前面的字符
 ^w 插入時,刪除前面的字
 修改 vi 文本
 每一個命令前面的數字表示該命令重複的次數
 命令 替換操做
 rchar 用 char 替換當前字符
 R text escape 用 text 替換當前字符直到按下 Esc 鍵
 stext escape 用 text 代替當前字符
 S 或 cctext escape 用 text 代替整行
 cwtext escape 將當前字改成 text
 Ctext escape 將當前行餘下的改成 text
 cG escape 修改至文件的末尾
 ccursor_cmd text escape 從當前位置處到光標命令位置處都改成 text
 在 vi 中查找與替換
 命令 查找與替換操做
 /text 在文件中向前查找 text
 ?text 在文件中向後查找 text
 n 在同一方向重複查找
 N 在相反方向重複查找
 ftext 在當前行向前查找 text
 Ftext 在當前行向後查找 text
 ttext 在當前行向前查找 text,並將光標定位在 text 的第一個字符
 Ttext 在當前行向後查找 text,並將光標定位在 text 的第一個字符
 :set ic 查找時忽略大小寫
 :set noic 查找時對大小寫敏感
 :ranges/pat1/pat2/g 用 newtext 替換 oldtext
 :m,ns/oldtext/newtext 在 m 行經過 n,用 newtext 替換 oldtext
 & 重複最後的 :s 命令
 :g/text1/s/text2/text3 查找包含 text1 的行,用 text3 替換 text2
 :g/text/command 在全部包含 text 的行運行 command 所表示的命令
 :v/text/command 在全部不包含 text 的行運行 command 所表示的命令
 在 vi 中複製文本
 命令 複製操做
 yy 將當前行的內容放入臨時緩衝區
 nyy 將 n 行的內容放入臨時緩衝區
 p 將臨時緩衝區中的文本放入光標後
 P 將臨時緩衝區中的文本放入光標前
 「(a-z)nyy 複製 n 行放入名字爲圓括號內的可命名緩衝區,省略 n 表示當前行
 「(a-z)ndd 刪除 n 行放入名字爲圓括號內的可命名緩衝區,省略 n 表示當前行
 「(a-z)p 將名字爲圓括號的可命名緩衝區的內容放入當前行後
 「(a-z)P 將名字爲圓括號的可命名緩衝區的內容放入當前行前
 在 vi 中撤消與重複
 命令 撤消操做
 u 撤消最後一次修改
 U 撤消當前行的全部修改
 . 重複最後一次修改
 , 以相反的方向重複前面的 f、F、t 或 T 查找命令
 ; 重複前面的 f、F、t 或 T 查找命令
 「np 取回最後第 n 次的刪除(緩衝區中存有必定次數的刪除內容,通常爲 9)
 n 重複前面的 / 或 ? 查找命令
 N 以相反方向重複前面的 / 或 ? 命令
 保存文本和退出 vi
 命令 保存和/或退出操做
 :w 保存文件但不退出 vi
 :w file 將修改保存在 file 中但不退出 vi
 :wq 或 ZZ 或 保存文件並退出 vi
 :q! 不保存文件,退出 vi
 :e! 放棄全部修改,從上次保存文件開始再編輯
 vi 中的選項
 選項 做用
 :set all 打印全部選項
 :set nooption 關閉 option 選項
 :set nu 每行前打印行號
 :set showmode 顯示是輸入模式仍是替換模式
 :set autoindent 繼承前一行的縮進方式,特別適用於多行註釋
 :set smartindent 爲C程序提供自動縮進
 :set list 顯示製表符(^I)和行尾符號
 :set ts=8 爲文本輸入設置 tab stops
 :set window=n 設置文本窗口顯示 n 行
 :set number 顯示行數
 :set nonumber 取消顯示行數
 vi 的狀態
 選項 做用
 :.= 打印當前行的行號
 := 打印文件中的行數
 ctrl+g 顯示文件名、當前的行號、文件的總行數和文件位置的百分比
 :l 使用字母 「l」 來顯示許多的特殊字符,如製表符和換行符
 在文本中定位段落和放置標記
 選項 做用
 { 在第一列插入 { 來定義一個段落
 [[ 回到段落的開頭處
 ]] 向前移到下一個段落的開頭處
 m(a-z) 用一個字母來標記當前位置,如用 mz 表示標記 z
 ‘(a-z) 將光標移動到指定的標記,如用 ‘z 表示移動到 z
 在 vi 中鏈接行
 選項 做用
 J 將下一行鏈接到當前行的末尾
 nJ 鏈接後面 n 行
 光標放置與屏幕調整
 選項 做用
 H 將光標移動到屏幕的頂行
 nH 將光標移動到屏幕頂行下的第 n 行
 M 將光標移動到屏幕的中間
 L 將光標移動到屏幕的底行
 nL 將光標移動到屏幕底行上的第 n 行
 ^e(ctrl+e) 將屏幕上滾一行
 ctrl+y 將屏幕下滾一行
 ctrl+u 將屏幕上滾半頁
 ctrl+d 將屏幕下滾半頁
 ctrl+b 將屏幕上滾一頁
 ctrl+f 將屏幕下滾一頁
 ctrl+l 重繪屏幕
 z-return 將當前行置爲屏幕的頂行
 nz-return 將當前行下的第 n 行置爲屏幕的頂行
 z. 將當前行置爲屏幕的中央
 nz. 將當前行上的第 n 行置爲屏幕的中央
 z- 將當前行置爲屏幕的底行
 nz- 將當前行上的第 n 行置爲屏幕的底行
 vi 中的 shell 轉義命令
 選項 做用
 :!command 執行 shell 的 command 命令,如 :!ls
 :!! 執行前一個 shell 命令
 :r!command 讀取 command 命令的輸入並插入,如 :r!ls 會先執行 ls,而後讀入內容
 :w!command 將當前已編輯文件做爲 command 命令的標準輸入並執行 command 命令,如 :w!grep all
 :cd directory 將當前工做目錄更改成 directory 所表示的目錄
 :sh 將啓動一個子 shell,使用 ^d(ctrl+d) 返回 vi
 :so file 在 shell 程序 file 中讀入和執行命令
 vi 中的宏與縮寫
 (避免使用控制鍵和符號,不要使用字符 K、V、g、q、v、*、= 和功能鍵)
 選項 做用
 :map key command_seq 定義一個鍵來運行 command_seq,如 :map e ea,不管何時均可以 e 移到一個字的末尾來追加文本
 :map 在狀態行顯示全部已定義的宏
 :umap key 刪除該鍵的宏
 :ab string1 string2 定義一個縮寫,使得當插入 string1 時,用 string2 替換 string1。當要插入文本時,鍵入 string1 而後按 Esc 鍵,系統就插入了 string2
 :ab 顯示全部縮寫
 :una string 取消 string 的縮寫
 在 vi 中縮進文本
 選項 做用
 ctrl+i或 tab 插入文本時,插入移動的寬度,移動寬度是事先定義好的
 :set ai 打開自動縮進
 :set sw=n 將移動寬度設置爲 n 個字符
 n> 使 n 行都向右移動一個寬度,例如 3>> 就將接下來的三行每行都向右移動一個移動寬度

  

於電腦的技術與藝術 









































vi 經常使用命令行


暫時不完善,不斷更新和整理中....

1.vi 模式
a) 通常模式:vi處理文件時,一進入該文件,就是通常模式了.
b) 編輯模式:在通常模式下能夠進行刪除,複製,粘貼等操做,卻沒法進行編輯操做。等按下‘i,I,o,O,a,A,r,R’等 
字母以後才能進入編輯模式.一般在linux中,按下上述字母時,左下方會出現'INSERT'或者‘REPLACE’字樣,才能夠
輸入任何文字到文件中.要回到通常模式,按下[ESC]鍵便可.
c) 命令行模式:在通常模式中,輸入「: 或者/或者?」,便可將光標移動到最下面一行,在該模式下,您能夠搜索數據,並且讀取,
存盤,大量刪除字符,離開vi,顯示行號等操做.


2.vi 經常使用命令彙總:
2.1 通常模式
a) 移動光標: 
上下左右方向鍵 ↑(k)↓(j)←(h) →(l)
翻頁 pagedown / pageup 按鍵 
數字 0 : 將光標移動到當前行首 
$ : 將光標移動到當前行尾
G : 移動到這個文件的最後一行

nG : n爲數字,移動到這個文件的第n行. 
gg : 移動到這個文件的第一行至關於1G 
    
b)  搜索與替換 
/word :  從光標開始,向下查詢一個名爲word的字符串。 
:n一、n2s/word1/word2/g : n1 與n2 爲數字.在第n1與n2行之間尋找word1這個字符串, 並將該字符串替換爲word2。
:一、$s/word1/word2/g : 從第一行到最後一行尋找word1字符串,並將該字符串替換爲word2 
:一、$s/word1/word2/gc: 從第一行到最後一行尋找word1字符串,並將該字符串替換爲word2。 而且在替換以前顯示提示符給用戶確認(conform)是否須要替換。


c) 刪除,複製,粘貼 
x,X  : 在一行中,x爲向後刪除一個字符(至關於del鍵),X爲向前刪除一個字符(至關於backspace鍵)。 
dd   : 刪除光標所在的那一整行。 
ndd  : n 爲數字。從光標開始,刪除向下n列。 
yy   : 複製光標所在的那一行。   
nyy  : n爲數字。複製光標所在的向下n行。 
p,P  : p 爲將已複製的數據粘貼到光標的下一行,P則爲貼在光標的上一行。 
u    : 復原前一個操做 
CTRL + r : 重作上一個操做。
小數點'.': 重複前一個動做。


2.2  編輯模式:
i, I : 在光標所在處插入輸入文字,已存在的文字向後退。i 爲‘從當前光標所在處插入’,I 爲‘在當前所在行的一個非空格符處開始插入’。 
a, A : a 爲‘從當前光標所在處的下一個字符開始插入’。A 爲‘從光標所在行的最後一個字符處開始插入’。 
o,O  : 這是英文o的大小寫。o爲‘在當前光標所在行的下一行處插入新的一行’。O表示‘在當前光標所在行的上一行插入新的一行’。 
r,R  : 替換:r 會替換光標所在的那一個字符。 R : 會一直替換光標所在的字符,直到按下esc 鍵爲止。 
ESC  : 進入通常模式。


2.3 命令模式:
a) :w   : 將編輯的數據寫入硬盤
b) :q   : 離開vi
c) :q!  : 強制離開,不存儲
d) :wq  : 存儲後離開
e) :wq! : 強制存儲後離開

3. vim 附加命令行
3.1 塊選擇(visual block)
v  字符選擇,將光標通過的地方反白顯示
V  行選擇,會將光標通過的行反白選擇
ctrl + v 塊選擇,能夠用長方形的方式選擇數據
y  複製反白的地方 
d  將反白的地方刪除掉
3.2 多文件編輯
:n  編輯下一個文件
:N  編輯上一個文件
:files  列出當前vim 打開的全部文件
3.3 多窗口功能
:sp 【filename】打開一個新窗口,若是加filename,表示在新窗口打開一個新文件不然表示兩個窗口爲同一個文件內容
ctrl+wj  先按下ctrl ,再按下w後,放開全部按鍵,而後按下j,則光標可移動到下方的窗口
ctrl+wk  同上,不過光標移動到上面的窗口
ctrl+wq  其實就是:q結束離開。
相關文章
相關標籤/搜索