//一會兒用vim,一會兒用emacs,把大神器的命令都記糊塗了。。for_wind
vimtutor 教程
初學者必看哦。
vim tutor
最基本命令
插入:i
儲存退出::wq
不儲存退出::q! 忽略修改強行退出 vi的基本概念
基本上vi可以分為三種狀態,分別是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能區分如下:
1) 命令列模式command mode)
控制螢幕游標的移動,字元、字或行的刪除,移動複製某區段及進入Insert mode下,或者到 last line mode。
2) 插入模式(Insert mode)
只有在Insert mode下,才可以做文字輸入,按「ESC」鍵可回到命令列模式。
3) 底行模式(last line mode)
又稱ex模式。
將檔案儲存或退出vi,也可以設定編輯環境,如尋找字串、列出行號……等。 Command mode命令模式
(1)i、a、o切換進入Insert mode。[超級常用]
(2)移動游標
vi可以直接用鍵盤上的游標鍵來上下左右移動,但正規的vi是用小寫英文字母 h、j、k、l,分別控制游標左、下、上、右移一格。
按Ctrl+B:螢幕往後移動一頁。[常用]
按Ctrl+F:螢幕往前移動一頁。[常用]
按Ctrl+U:螢幕往後移動半頁。
按Ctrl+D:螢幕往前移動半頁。
按 w:游標跳到下個word的開頭。[常用]
按 e:游標跳到下個word的字尾。
按 b:游標回到上個word的開頭。
按 $:移到游標所在行的行尾。[常用]
按 ^:移到該行第一個非空白的字元。
按 0:移到該行的開頭位置。[常用]
按 #:移到該行的第#個位置,
[[:這是一個雙字元指令,將游標前移到第一個 { 。
]]:與前一個命令相似,不同之處是它向後移動,將游標後移到第一個 { 。
(3)刪除文字
x:每按一次刪除光所在位置的後面一個字元。[超常用]
#x:例如,6x 表刪除游標所在位置的後面6個字元。[常用]
X:大字的X,每按一次刪除游標所在位置的前面一個字元。
#X:例如,20X 表刪除游標所在位置的前面20個字元。
dd:刪除游標所在行。[超常用]
#dd:例如,6dd表刪除從游標所在的該行往下數6行之文字。[常用]
(4)複製
yw:將游標所在處到字尾的字元複製到緩衝區中。 (想在和#x、#X的功能相反)
p:將緩衝區內的字元粘貼到游標所在位置(指令‘yw’與‘p必須搭配使用)。
yy:複製游標所在行。[超常用]
p:複製單行到您想粘貼之處。(指令‘yy’與‘p’必須搭配使用)
#yy:如:6yy表示拷貝從游標所在的該行往下數6行之文字。[常用]
p:複製多行到您想粘貼之處。(指令‘#yy’與‘p’必須搭配使用)
“ayy:將複製行放入buffer a, vi提供buffer功能,可將常用的資料存在buffer
“ap:將放在buffer a的資料粘貼。
“b3yy:將三行資料存入buffer b。
“b3p:將存在buffer b的資料粘貼
(5)取代
r: 取代游標所在處的字元:[常用]
R:取代字元直到按Esc為止。
(6)複原(undo)上一個指令
u:假如您誤操作一個指令,可以馬上按u,回複到上一個操作。撤銷。[超常用]
.: .可以重複執行上一次的指令。
(7)更改
C:刪除當前行自游標之後的所有內容,然後進入插入模式。
c{motion}:根據motion的內容從當前游標處刪除文字,然後進入插入模式。
cw:更改游標所在處的word到該word尾$處,並切換到插入模式。
c#w:例如,c3w代表更改3個word。
(8)跳至指定行
Ctrl+G:列出游標所在行的行號。
#G:例如,15G,表示移動游標至文章的第15行行首。[常用] Last line mode下
指令簡介:請記得先按Esc鍵確定您已經處於Command mode下後,再按冒號“:”進入Last line mode。
1.列出行號
set nu: 輸入“set nu”後,會在文章的每一行前面列出行號。
2.跳到文章的某一行
#:井號代表一個數字,在Last line mode提示符號“:”前輸入數字,再按Enter就會跳到該行了, 如:15[Enter]就會跳到文章的第15行。[常用]
3.尋找字串
/關鍵字:先按/,再輸入您想尋找的字,如果第一次找的關鍵字不是您相儘可能的,可以一直按n會往下尋找到您要的關鍵字為止。 。關鍵字:先按。,再輸入您想尋找的字,如果第一次找的關鍵字不是您想要的,可以按n會往前尋找到您要的關鍵字為止。
4.取代字串
1,$s/string/replace/g:在last line mode輸入“1,$s/string/replace/g”會將全文的string字串取代為replace字串, 其中1,$s就是指搜尋區間為文章從頭至尾的意思,g則是表示全部取代不必確認。 %s/string/replace/c:同樣會將全文的string字串取代為replace字串,和上面指令不同的地方是,%s和1,$s是相同的功能, c則是表示要替代之前必須再次確認是否取代。 1,20s/string/replace/g:將1至20行間的string替代為relpace字串。
:s/search/replacement/flags
5.存檔案
w:在last line mode提示符號“:”前按w即可將檔案存起來。[超常用]
#,# w filename:如果您想摘取文章的某一段,存成另一個檔案,可用這個指令#代表行號,例如30,50 w nice, 將您正在編輯文章的第30~50行存成nice這個檔案。
6.離開
q:按q就離開,有時如果無法離開vi,可搭配。:強置離開vi,如“q。”
qw:一般建議離開時,搭配w一起使用,如此離開時還可存檔案。
插入模式(Insert mode)
ctrl+N / ctrl+P:填充已在文檔中出現過的單詞。ctrl+N按鍵組合找後一個匹配詞,ctrl+P按鍵組合找前一個匹配詞。
ctrl+T / ctrl+D:通過shiftwidth的設定向左或向右轉換當前行。
正則式:
*:自動產生對當前游標處的word的搜尋,通過n可以上下移動。
把 游標移動到你要搜尋的詞(變數名、函數名等)上,比如“test”,然後按“*”,Vim 將自動產生一個對“\<test\>”(參見“:help /\<”和“:help /\>”)的搜尋,也就是說,搜尋完整的單詞“test”。不要小看這個技巧,它經常可以大幅度地提高搜尋的速度。