Vi/Vim編輯器的使用

vim理論

VIM有3種模式:通常模式、編輯模式、命令行模式,每種命令都須要在對應的模式下操做下有效。
通常模式 ==》編輯模式: i I a A ……
通常模式到命令模式: : / ?
命令模式、編輯模式==》通常模式 ESC
注意:命令模式沒法直接到編輯模式 搞清楚這個,就知道什麼狀況下該用什麼命令。java

命令基本應用

 1 vim a.txt 打開一個文件  2 set nu 設置行號  3 set nonu 取消設置行號  4 gg (通常模式) 到首行  5 G 查看多少行、到末行  6 58G 直接到58行  7 :58 也是直接到58行  8 10G 向右邊移動10個字符  9 gg 跳轉到首行 10 /application 查找application出如今第幾行? 11 :16,31s/application/mei/gc  把16~31行之間的application替換爲mei,而且在替換的時候給提示 12 :16,31s/application/mei/g 不給提示替換(c表示confirm) 13 u  撤銷(反悔了,撤銷操做);或者:q!不保存,那麼全部的操做都不保存了 14 16G ==>16yy(16 lines yanked) ==>G  ==>p  複製16-31行這16行,而且粘貼到最後一行以後,說明:p爲在光標所在行下一行粘貼,P在光標所在行上一行粘貼 15 1853G ==>dG(刪除從光標所在到最後一行數據) 刪除末尾16行 16 :w mei.config 把剛纔操做後的文件另存一份 17 990G ==>10x 到第990行向後刪除10個字符 18 gg ==>O 在第一行以前新增一行,而且輸入「Today is Sunny! Leg's go!」
19 補充:o O 表示:o表示在光標所在行下一行插入一行,跟Enter同樣;O表示在光標所在行上一行插入,並且直接進入編輯模式。 20 
21 :wq! 保存後離開

Vi/VIm參考圖

vim命令總結

1.刪除字符
  要刪除一個字符,只須要將光標移到該字符上按下"x"。
2.刪除一行
  刪除一整行內容使用"dd"命令。刪除後下面的行會移上來填補空缺。
3.刪除換行符
  在Vim中你能夠把兩行合併爲一行,也就是說兩行之間的換行符被刪除了:命令是"J"。
4.撤銷
  若是你誤刪了過多的內容。顯然你能夠再輸入一遍,可是命令"u" 更簡便,它能夠撤消上一次的操做。
5.重作
  若是你撤消了屢次,你還能夠用CTRL-R(重作)來反轉撤消的動做。換句話說,它是對撤消的撤消。撤消命令還有另外一種形式,"U"命令,它一次撤消對一行的所有操做。第二次使用該命令則會撤消前一個"U"的操做。用"u"和CTRL-R你能夠找回任何一個操做狀態。
6.追加
  "i"命令能夠在當前光標以前插入文本。
  "a"命令能夠在當前光標以後插入文本。
  "o"命令能夠在當前行的下面另起一行,並使當前模式轉爲Insert模式。
  "O"命令(注意是大寫的字母O)將在當前行的上面另起一行。
7.使用命令計數
  假設你要向上移動9行。這能夠用"kkkkkkkkk"或"9k"來完成。事實上,不少命令均可以接受一個數字做爲重複執行同一命令的次數。好比剛纔的例子,要在行尾追加三個感嘆號,當時用的命令是"a!!!"。另外一個辦法是用"3a!"命令。3說明該命令將被重複執行3次。一樣,刪除3個字符能夠用"3x"。指定的數字要緊挨在它所要修飾的命令前面。
8.退出
  要退出Vim,用命令"ZZ"。該命令保存當前文件並退出Vim。
9.放棄編輯
  丟棄全部的修改並退出,用命令":q!"。用":e!"命令放棄全部修改並從新載入該文件的原始內容。
10.以Word爲單位的移動
  使用"w"命令能夠將光標向前移動一個word的首字符上;好比"3w"將光標向前移動3個words。"b"命令則將光標向後移動到前一個word的首字符上。
  "e"命令會將光標移動到下一個word的最後一個字符。命令"ge",它將光標移動到前一個word的最後一個字符上。、
11.移動到行首或行尾
  "$"命令將光標移動到當前行行尾。若是你的鍵盤上有一個鍵,它的做用也同樣。"^"命令將光標移動到當前行的第一個非空白字符上。"0"命令則老是把光標移動到當前行的第一個字符上。鍵也是如此。"$"命令還可接受一個計數,如"1$"會將光標移動到當前行行尾,"2$"則會移動到下一行的行尾,如此類推。"0"命令卻不能接受相似這樣的計數,命令"^"前加上一個計數也沒有任何效果。
12.移動到指定字符上
  命令"fx"在當前行上查找下一個字符x(向右方向),能夠帶一個命令計數"F"命令向左方向搜索。"tx"命令形同"fx"命令,只不過它不是把光標停留在被搜索字符上,而是在它以前的一個字符上。提示:"t"意爲"To"。該命令的反方向版是"Tx"。這4個命令均可以用";"來重複。以","也是重複一樣的命令,可是方向與原命令的方向相反。
13.以匹配一個括號爲目的移動
  用命令"%"跳轉到與當前光標下的括號相匹配的那一個括號上去。若是當前光標在"("上,它就向前跳轉到與它匹配的")"上,若是當前在")"上,它就向後自動跳轉到匹配的"("上去.
14.移動到指定行
  用"G"命令指定一個命令計數,這個命令就會把光標定位到由命令計數指定的行上。好比"33G"就會把光標置於第33行上。沒有指定命令計數做爲參數的話, "G"會把光標定位到最後一行上。"gg"命令是跳轉到第一行的快捷的方法。
  另外一個移動到某行的方法是在命令"%"以前指定一個命令計數好比"50%"將會把光標定位在文件的中間. "90%"跳到接近文件尾的地方。
  命令"H","M","L",分別將光標跳轉到第一行,中間行,結尾行部分。
15.告訴你當前的位置
  使用CTRL-G命令。"set number"在每行的前面顯示一個行號。相反關閉行號用命令":set nonumber"。":set ruler"在Vim窗口的右下角顯示當前光標位置。
16.滾屏
  CTRL-U顯示文本的窗口向上滾動了半屏。CTRL-D命令將窗口向下移動半屏。一次滾動一行可使用CTRL-E(向上滾動)和CTRL-Y(向下滾動)。要向前滾動一整屏使用命令CTRL-F。另外CTRL-B是它的反向版。"zz"命令會把當前行置爲屏幕正中央,"zt"命令會把當前行置於屏幕頂端,"zb"則把當前行置於屏幕底端.
17.簡單搜索
  "/string"命令可用於搜索一個字符串。要查找上次查找的字符串的下一個位置,使用"n"命令。若是你知道你要找的確切位置是目標字符串的第幾回出現,還能夠在"n"以前放置一個命令計數。"3n"會去查找目標字符串的第3次出現。
  "?"命令與"/"的工做相同,只是搜索方向相反."N"命令會重複前一次查找,可是與最初用"/"或"?"指定的搜索方向相反。
  若是查找內容忽略大小寫,則用命令"set ignorecase", 返回精確匹配用命令"set noignorecase" 。
18.在文本中查找下一個word
  把光標定位於這個word上而後按下"*"鍵。Vim將會取當前光標所在的word並將它做用目標字符串進行搜索。"#"命令是"*"的反向版。還能夠在這兩個命令前加一個命令計數:"3*"查找當前光標下的word的第三次出現。
19.查找整個word
  若是你用"/the"來查找Vim也會匹配到"there"。要查找做爲獨立單詞的"the"使用以下命令:"/the\>"。"\>"是一個特殊的記法,它只匹配一個word的結束處。近似地,"\<"匹配到一個word的開始處。這樣查找做爲一個word的"the"就能夠用:"/\"。
20.高亮顯示搜索結果
  開啓這一功能用":set hlsearch",關閉這一功能:":set nohlsearch"。若是隻是想去掉當前的高亮顯示,可使用下面的命令:":nohlsearch"(能夠簡寫爲noh)。
21.匹配一行的開頭與結尾
   ^ 字符匹配一行的開頭。$字符匹配一行的末尾。
   因此"/was$"只匹配位於一行末尾的單詞was,因此"/^was"只匹配位於一行開始的單詞was。
22.匹配任何的單字符
  .這個字符能夠匹配到任何字符。好比"c.m"能夠匹配任何前一個字符是c,後一個字符是m的狀況,無論中間的字符是什麼。
23.匹配特殊字符
  放一個反斜槓在特殊字符前面。若是你查找"ter。",用命令"/ter\。"
24.使用標記
  當你用"G"命令從一個地方跳轉到另外一個地方時,Vim會記得你起跳的位置。這個位置在Vim中是一個標記。使用命令" `` "可使你跳回到剛纔的出發點。
  ``命令能夠在兩點之間來回跳轉。CTRL-O命令是跳轉到你更早些時間停置光標的位置(提示:O意爲older). CTRL-I則是跳回到後來停置光標的更新的位置(提示:I在鍵盤上位於O前面)。
    注:使用CTRL-I 與按下鍵同樣。
25.具名標記
   命令"ma"將當前光標下的位置名之爲標記"a"。從a到z一共可使用26個自定義的標記。要跳轉到一個你定義過的標記,使用命令" `marks "marks就是定義的標記的名字。命令" 'a "使你跳轉到a所在行的行首," `a "會精肯定位a所在的位置。命令:":marks"用來查看標記的列表。
  命令delm!刪除全部標記。
26.操做符命令和位移
  "dw"命令能夠刪除一個word,"d4w"命令是刪除4個word,依此類推。相似有"d2e"、"d$"。此類命令有一個固定的模式:操做符命令+位移命令。首先鍵入一個操做符命令。好比"d"是一個刪除操做符。接下來是一個位移命。好比"w"。這樣任何移動光標命令所及之處,都是命令的做用範圍。
27.改變文本
  操做符命令是"c",改變命令。它的行爲與"d"命令相似,不過在命令執行後會進入Insert模式。好比"cw"改變一個word。或者,更準確地說,它刪除一個word並讓你置身於Insert模式。
  "cc"命令能夠改變整行。不過仍保持原來的縮進。
  "c$"改變當前光標到行尾的內容。
  快捷命令:x 表明dl(刪除當前光標下的字符)
            X 表明dh(刪除當前光標左邊的字符)
            D 表明d$(刪除到行尾的內容)
            C 表明c$(修改到行尾的內容)
            s 表明cl(修改一個字符)
            S 表明cc(修改一整行)
  命令"3dw"和"d3w"都是刪除3個word。第一個命令"3dw"能夠看做是刪除一個word的操做執行3次;第二個命令"d3w"是一次刪除3個word。這是其中不明顯的差別。事實上你能夠在兩處都放上命令記數,好比,"3d2w"是刪除兩個word,重複執行3次,總共是6個word。
28.替換單個字符
  "r"命令不是一個操做符命令。它等待你鍵入下一個字符用以替換當前光標下的那個字符。"r"命令前輟以一個命令記數是將多個字符都替換爲即將輸入的那個字符。要把一個字符替換爲一個換行符使用"r"。它會刪除一個字符並插入一個換行符。在此處使用命令記數只會刪除指定個數的字符:"4r"將把4個字符替換爲一個換行符。
29.重複改動
  "."命令會重複上一次作出的改動。"."命令會重複你作出的全部修改,除了"u"命令CTRL-R和以冒號開頭的命令。"."須要在Normal模式下執行,它重複的是命令,而不是被改動的內容,
30.Visual模式
  按"v"能夠進入Visual模式。移動光標以覆蓋你想操縱的文本範圍。同時被選中的文本會以高亮顯示。最後鍵入操做符命令。
31.移動文本
  以"d"或"x"這樣的命令刪除文本時,被刪除的內容仍是被保存了起來。你還能夠用p命令把它取回來。"P"命令是把被去回的內容放在光標以前,"p"則是放在光標以後。對於以"dd"刪除的整行內容,"P"會把它置於當前行的上一行。"p"則是至於當前行的後一行。也能夠對命令"p"和"P"命令使用命令記數。它的效果是一樣的內容被取回指定的次數。這樣一來"dd"以後的"3p"就能夠把被刪除行的3 份副本放到當前位置。
  命令"xp"將光標所在的字符與後一個字符交換。
32.複製文本(VIM編輯器內複製)
  "y"操做符命令會把文本複製到一個寄存器3中。而後能夠用"p"命令把它取回。由於"y"是一個操做符命令,因此你能夠用"yw"來複制一個word. 一樣可使用命令記數。以下例中用"y2w"命令複製兩個word,"yy"命令複製一整行,"Y"也是複製整行的內容,複製當前光標至行尾的命令是"y$"。
33.文本對象
  "diw" 刪除當前光標所在的word(不包括空白字符) "daw" 刪除當前光標所在的word(包括空白字符)
34.快捷命令
  x 刪除當前光標下的字符("dl"的快捷命令)
  X 刪除當前光標以前的字符("dh"的快捷命令)
  D 刪除自當前光標至行尾的內容("d$"的快捷命令)
  dw 刪除自當前光標至下一個word的開頭
  db 刪除自當前光標至前一個word的開始
  diw 刪除當前光標所在的word(不包括空白字符)
  daw 刪除當前光標所在的word(包括空白字符)
  dG 刪除當前行至文件尾的內容
  dgg 刪除當前行至文件頭的內容
  若是你用"c"命令代替"d"這些命令就都變成更改命令。使用"y"就是yank命令,如此類推。
35.編輯另外一個文件
  用命令":edit foo.txt",也可簡寫爲":e foo.txt"。
36.文件列表
  能夠在啓動Vim時就指定要編輯多個文件,用命令"vim one.c two.c three.c"。Vim將在啓動後只顯示第一個文件,完成該文件的編輯後,能夠用令:":next"或":n"要保存工做成果並繼續下一個文件的編輯,命令:":wnext"或":wn"能夠合併這一過程。
37.顯示當前正在編輯的文件
  用命令":args"。
38.移動到另外一個文件
  用命令":previous" ":prev"回到上一個文件,合併保存步驟則是":wprevious" ":wprev"。要移到最後一個文件":last",到第一個":first".不過沒有":wlast"或者":wfirst"這樣的命令。能夠在":next"和":previous"命令前面使用一個命令計數。
39.編輯另外一個文件列表
  不用從新啓動Vim,就能夠從新定義一個文件列表。命令":args five.c six.c seven.h"定義了要編輯的三個文件。
39.自動存盤
  命令":set autowrite","set aw"。自動把內容寫回文件: 若是文件被修改過,在每一個:next、:rewind、:last、:first、:previous、:stop、:suspend、:tag、:!、:make、CTRL-] 和 CTRL-^命令時進行。
  命令":set autowriteall","set awa"。和 'autowrite' 相似,但也適用於":edit"、":enew"、":quit"、":qall"、":exit"、":xit"、":recover" 和關閉 Vim 窗口。置位本選項也意味着 Vim 的行爲就像打開 'autowrite' 同樣。
40.切換到另外一文件
  要在兩個文件間快速切換,使用CTRL-^。
41.文件標記
  以大寫字母命名的標記。它們是全局標記,它們能夠用在任何文件中。好比,正在編輯"fab1.Java",用命令"50%mF"在文件的中間設置一個名爲F的標記。而後在"fab2.java"文件中,用命令"GnB"在最後一行設置名爲B的標記。在能夠用"F"命令跳轉到文件"fab1.java"的半中間。或者編輯另外一個文件,"'B"命令會再把你帶回文件"fab2.java"的最後一行。
  要知道某個標記所表明的位置是什麼,能夠將該標記的名字做爲"marks"命令的參數":marks M"或者連續跟上幾個參數":marks MJK"
  能夠用CTRL-O和CTRL-I能夠跳轉到較早的位置和靠後的某位置。
42.查看文件
  僅是查看文件,不向文件寫入內容,能夠用只讀形式編輯文件。用命令:
vim -R file。若是是想強制性地避免對文件進行修改,能夠用命令:
vim -M file。
43.更改文件名
  將現有文件存成新的文件,用命令":sav(eas) move.c"。若是想改變當前正在編輯的文件名,但不想保存該文件,就能夠用命令:":f(ile) move.c"。
44.分割一個窗口
  打開一個新窗口最簡單的辦法就是使用命令:":split"。CTRL-W 命令能夠切換當前活動窗口。
45.關閉窗口
  用命令:"close".能夠關閉當前窗口。實際上,任何退出文件編輯的命令":quit"和"ZZ"都會關閉窗口,可是用":close"能夠阻止你關閉最後一個Vim,以避免以意外地整個關閉了Vim。
46.關閉除當前窗口外的全部其餘窗口
  用命令:":only",關閉除當前窗口外的全部其它窗口。若是這些窗口中有被修改過的,你會獲得一個錯誤信息,同時那個窗口會被留下來。
47.爲另外一個文件分隔出一個窗口
  命令":split two.c"能夠打開第二個窗口同時在新打開的窗口中開始編輯做爲
參數的文件。若是要打開一個新窗口並開始編輯一個空的緩衝區,使用命令:":new"。
48.垂直分割
  用命令":vsplit或::vsplit two.c"。一樣有一個對應的":vnew"命令,用於垂直分隔窗口並在其中打開一個新的空緩衝區。
49.切換窗口
  CTRL-W h 到左邊的窗口
  CTRL-W j 到下面的窗口
  CTRL-W k 到上面的窗口
  CTRL-W l 到右邊的窗口
  CTRL-W t 到頂部窗口
  CTRL-W b 到底部窗口
50.針對全部窗口操做的命令
  ":qall"放棄全部操做並退出,":wall"保存全部,":wqall"保存全部並退出。
51.爲每個文件打開一個窗口
  使用"-o"選項可讓Vim爲每個文件打開一個窗口:
"vim -o one.txt two.txt three.txt"。
52.使用vimdiff查看不一樣
  "vimdiff main.c~ main.c",另外一種進入diff模式的辦法能夠在Vim運行中操做。編輯文件"main.c",而後打開另外一個分隔窗口顯示其不一樣:
  ":edit main.c"
  ":vertical diffpatch main.c.diff"。
53.頁籤
   命令":tabe(dit) thatfile"在一個窗口中打開"thatfile",該窗口占據着整個的Vim顯示區域。命令":tab split/new"結果是新建了一個擁有一個窗口的頁籤。以用"gt"命令在不一樣的頁籤間切換。
vim

相關文章
相關標籤/搜索