Vim的使用方法

Vim幾句話介紹
Vim是Unix系統(tǒng)上的文本編輯軟件(你該不會(huì)不知道什么是文本編輯軟件吧;琛)领曼,在windows上也有移植的版本缆巧,方便了Windows上的用戶虱朵。Vim的文本編輯功能非常強(qiáng)大莉炉,強(qiáng)大的有些讓人吃驚!并且非常穩(wěn)定碴犬,你的文檔不用經(jīng)常存盤絮宁,它不會(huì)出現(xiàn)類似于“程序內(nèi)部錯(cuò)誤!”等等現(xiàn)象服协,程序曾經(jīng)讓我欲哭無淚吧馨骸!

開始使用Vim吧偿荷!
啟動(dòng):在命令提示符后輸入vim窘游,然后回車,就啟動(dòng)了vim跳纳,然后進(jìn)入vim的界面忍饰。如果在命令提示符后輸入vim ### 并回車,則表示希望編輯###這個(gè)文件棒旗,例如vim .xinitrc喘批,則編輯.xinitrc這個(gè)文件撩荣,如果這個(gè)文件不存在,則表示新建這個(gè)文件并編輯饶深。好了餐曹,你趕快試試吧,然后我將告訴你如何輸入一些文本敌厘。

vim的工作模式
別著急台猴,要想輸入文本,要先熟悉一下Vim的工作模式俱两。(我第一次就是在輸入了vim后饱狂,就開始劈里啪啦的輸入,可是怎么沒反映跋懿省P莼洹?)
vim的工作模式有三種尿孔,分別是正常(Normal)模式俊柔、插入(insert)模式和可視(visual)模式。這就是說Vim在不同的模式下工作的表現(xiàn)形式是不同的活合。在進(jìn)入vim后雏婶,默認(rèn)的模式是Normal模式,這時(shí)可以輸入一些命令白指,不過別急留晚,咱們先輸入一些文本看看。在Normal模式下告嘲,單擊i或者a错维,則進(jìn)入insert模式,這時(shí)你可以輸入了状蜗。為了后面的學(xué)習(xí)需五,你多輸入些內(nèi)容。輸入結(jié)束后轧坎,單擊Esc鍵,回到Normal模式泽示,然后輸入:w filename缸血,如果你啟動(dòng)vim時(shí)已經(jīng)包含文件名,輸入:w(注意包括冒號(hào))械筛,則將文件存盤捎泻。
OK,恭喜你埋哟!你現(xiàn)在已經(jīng)能夠啟動(dòng)vim笆豁,輸入內(nèi)容并存盤了郎汪。

下面我們我們簡(jiǎn)單介紹一下模式的內(nèi)容。
前面說過闯狱,vim在不同的模式下有不同的工作方式煞赢,例如輸入文本內(nèi)容在insert模式下,其他進(jìn)行修改哄孤、刪除照筑、拷貝、粘貼等在Normal模式下瘦陈。因此當(dāng)你發(fā)現(xiàn)輸入錯(cuò)誤想修改時(shí)必須切換到Normal模式下進(jìn)行凝危,是不是很麻煩啊晨逝!我當(dāng)初也是這樣認(rèn)為的蛾默,但是你一旦習(xí)慣后,你就會(huì)覺得它的好處了捉貌!切換到Normal模式就是單擊Esc鍵支鸡,vim的屏幕下面有當(dāng)前工作模式的提示。進(jìn)入輸入文本的insert模式是輸入i或者a昏翰。i和a這倆個(gè)指令的區(qū)別就是i代表在光標(biāo)前插入字符苍匆,a代表在光標(biāo)后插入字符,就是這么簡(jiǎn)單棚菊,OK浸踩,如何用就看你的了!

編輯文本
進(jìn)行文本編輯统求,應(yīng)該是Unix初學(xué)者最開始碰到的問題检碗。Unix下的默認(rèn)配置文件經(jīng)常要修改的啊码邻!所以掌握編輯方法是非常重要的折剃。并且本文的目的就是讓初學(xué)者掌握簡(jiǎn)單而又實(shí)用的編輯、修改命令像屋。至于其他的高級(jí)使用方法怕犁,可以參考其他書籍!
OK己莺,咱們就開始學(xué)習(xí)吧奏甫!

移動(dòng)光標(biāo)是最基本的,下面都是移動(dòng)光標(biāo)的命令凌受,看看那個(gè)好記阵子,就記住吧。
在Noraml模式下胜蛉,鍵盤上的h挠进、j色乾、k、l 分別代表左领突、下暖璧、上、右移動(dòng)光標(biāo)攘须。OK漆撞,在你剛才編輯的文檔中試試移動(dòng)光標(biāo),爽吧于宙!再也不用移動(dòng)手指到那4個(gè)方向鍵了浮驳!
什么?你說這4個(gè)鍵一次只能移動(dòng)一個(gè)字符和一行捞魁,太慢了至会!OK,下面幾個(gè)快速移動(dòng)光標(biāo)的方法你有精力就記住吧谱俭!

一次移動(dòng)一個(gè)字(word)
w和b指令一次分別向后/向前移動(dòng)一個(gè)字奉件。
注:(1)可以用數(shù)字來進(jìn)行移動(dòng)多個(gè)Word,例如3w昆著,2b就是分別向右(向后)移動(dòng)3個(gè)word, 和2個(gè)word县貌。
(2)中文因?yàn)槭沁B在一起的,所以如果沒有空格或者數(shù)字凑懂、英文標(biāo)點(diǎn)的話煤痕,將視為一個(gè)word。
移動(dòng)到一行的頭和尾
^ :行頭 $ :行尾
注:行尾$接谨,可以用3$移動(dòng)到下面第3行尾摆碉,行首^ 不支持?jǐn)?shù)字。
如何跳到指定行脓豪?
nG
注:(1)n表示第n行巷帝,例如10G,則跳到第10行扫夜,且光標(biāo)在行首楞泼。
(2)如果沒有n,只有G笤闯,則跳到最后一行现拒,且光標(biāo)在行首。

我想用G命令望侈,但是如何知道第幾行?OK勋桶,在Normal模式下輸入:set number就可以顯示行號(hào)了脱衙,如果想關(guān)閉行號(hào)侥猬,則輸入:set nonumber。

好了,移來移去捐韩,來點(diǎn)別的吧退唠,例如如何修改,復(fù)制荤胁。OK瞧预,GO!
先來看看如何進(jìn)行修改吧仅政。Word和其他的一些文本編輯器都是編輯和輸入混雜在一起的垢油,輸入的同時(shí)就可以修改。而Vim的這些編輯指令必須在Normal模式下圆丹,切記滩愁!

修改命令

刪除:
在word等編輯器下,如果輸入錯(cuò)了辫封,我們可以用Delete和Backspace鍵刪除硝枉,然后再重新輸入,vim也可以這樣倦微,x就是刪除光標(biāo)所在處的字符(char)妻味,dw就是刪除一個(gè)字(word)捕捂,然后在輸入i或者a進(jìn)行新內(nèi)容的輸入轧抗。

刪除整行如何操作?dd就可以刪除光標(biāo)所在行蒿往。

那刪除光標(biāo)所在處到本行的結(jié)尾呢劣欢?D或者d$就可以了棕诵。還記得$嗎?代表什么來著?

刪除結(jié)束還要在輸入i 或者a 才能輸入真麻煩凿将!有沒有刪除后就進(jìn)入inster模式的指令呢校套?當(dāng)然有,就是關(guān)于c的指令牧抵,cw是刪除一個(gè)Word笛匙,cc刪除整行,c$和C都是刪除光標(biāo)所在處到本行的結(jié)尾犀变。你可能已經(jīng)明白了妹孙,其實(shí)c的指令是修改指令。

好了获枝,你是否已經(jīng)把內(nèi)容刪干凈了蠢正,沒有可以編輯的內(nèi)容了呢?呵呵省店,沒關(guān)系嚣崭,u指令可以讓你恢復(fù)刪除的內(nèi)容笨触。在Normal模式下,輸入u雹舀,就恢復(fù)了芦劣,重復(fù)輸入u就把整個(gè)內(nèi)容都恢復(fù)了,u就是其他文本編輯器里的Undo的指令说榆,對(duì)應(yīng)的Redo指令就是[Ctrl]r虚吟。需要注意的是在不同模式下,u 的含義是不同的签财。如果在instert模式下輸入然后在Normal模式下執(zhí)行u串慰,則會(huì)刪除上一次輸入的所有內(nèi)容。如果是在 Normal 模式下執(zhí)行其他的指令例如x荠卷,然后再執(zhí)行u模庐,就恢復(fù)一次 Normal 下的指令。Redo也一樣油宜。

OK掂碱,讓我們來學(xué)習(xí)更加重要的功能吧!

剪切慎冤、復(fù)制疼燥、粘貼等相關(guān)
剪切、復(fù)制等這些指令都是同塊(block)相關(guān)的操作蚁堤,因此無論如何都要先了解一下塊的基本知識(shí)醉者。vim里用mark來定義一個(gè)標(biāo)記,然后用y指令把指定的內(nèi)容進(jìn)行復(fù)制到緩存中披诗,然后用p來粘貼撬即。!@#¥%^&呈队,天啊剥槐,太復(fù)雜了。沒關(guān)系宪摧,咱們用個(gè)例子來說明吧粒竖,很簡(jiǎn)單的!
例如下面的文本:
this is the first line
this is 2nd line
我們可以先把光標(biāo)移動(dòng)到第一行的行首几于,然后切換到Normal模式(還記得如何切換嗎蕊苗?),輸入ma(表示標(biāo)記a)沿彭,然后移動(dòng)光標(biāo)到第2行的2nd處朽砰,輸入y`a(表示把標(biāo)記a到光標(biāo)所在處復(fù)制到緩存中),然后移動(dòng)光標(biāo)到你希望粘貼的地方輸入p(表示粘貼)。OK你已經(jīng)完成了最基本的復(fù)制锅移、粘貼功能熔掺。

下面我們看看這幾個(gè)命令(m,y非剃,p)的情況。
m指令推沸。m指令非常簡(jiǎn)單备绽,他就是做標(biāo)記,你可以做從a到z的26個(gè)標(biāo)記例如ma鬓催,mb肺素,mc等。他在很多指令中會(huì)用到宇驾,例如刪除倍靡,這本入門就不介紹了,你可以參考其他書籍课舍。
y指令表示yank塌西,其實(shí)就是拷貝。不過他有其他的指令形式筝尾,例如yy復(fù)制整行捡需。
p指令就是粘貼。例如上面的例子筹淫。
OK站辉,既然你知道了yy指令,那希望復(fù)制一行并粘貼的話损姜,我想你應(yīng)該知道如何操作了吧(yy饰剥,p)。

也許你用m做標(biāo)記感覺不是很舒服摧阅,OK汰蓉,我們來個(gè)可視的塊的選擇方法。那就是v指令逸尖。
記得在其他的文本編輯器里我們可以用鼠標(biāo)選擇一些文本古沥,然后copy,paste娇跟,在vim里一樣可以岩齿,當(dāng)然希望用鼠標(biāo)最好用gvim。現(xiàn)在來試試v的指令吧苞俘。
在Normal模式下盹沈,輸入v(看到屏幕下面的visual模式提示了嗎?),然后移動(dòng)光標(biāo)乞封,看到被選擇的內(nèi)容了吧 做裙。選擇好了,你可以輸入d把他們刪除肃晚,也可以輸入y將他們復(fù)制到緩存中锚贱,然后用p來粘貼到你希望的地方。什么多次粘貼关串,多按幾次p就可以了拧廊,也可以輸入#p,#代表連續(xù)粘貼的次數(shù)晋修,例如粘貼100次吧碾,就輸入100p。
OK墓卦,我想你一定喜歡上v命令了倦春,還有V和[CTRL]v呢!V(大寫)是表示可視行落剪,就是代表你移動(dòng)光標(biāo)時(shí)睁本,選擇的范圍是行,不像小寫的v是一個(gè)字符著榴。另外[CTRL]v是選擇方塊添履,你可以試試,就清楚了脑又!

好了暮胧,基本的東西就這些了,當(dāng)然還有幾個(gè)也不錯(cuò)的命令東東问麸,很簡(jiǎn)單往衷,它能高效的配合你上面的基本工作,那還猶豫什么严卖!開始吧席舍!

連接行
你在編輯的時(shí)候,一定會(huì)碰見希望把兩行或者多行合并成一行的情況哮笆。好来颤,vim已經(jīng)給你設(shè)計(jì)好了,就是J指令稠肘,注意是大寫(j是什么福铅?)。J表示將光標(biāo)所在行和下一行合并成一行项阴,如何合并多行滑黔,可以輸入#J,#代表希望合并的行數(shù),例如3J略荡。

插入新行
怎么插入新行庵佣?用o或者O指令(不是零)。o是在當(dāng)前行下插入新行汛兜,大寫O是在當(dāng)前行上插入新行巴粪。真是簡(jiǎn)單,而且直接進(jìn)入instert模式序无,不錯(cuò)验毡,設(shè)計(jì)的很貼心。

如何在一行內(nèi)查找一個(gè)字符(或者一個(gè)中文單字)帝嗡?
使用fx,Fx,tx,Tx指令。其中x代表欲查詢的字符璃氢。他們的區(qū)別是:fx(向右)查x哟玷,且光標(biāo)停在x上,F(xiàn)x(向左)查x,且光標(biāo)停在x上一也,tx(向右)查x, 且光標(biāo)停在x前巢寡,Tx(向左)查x, 且光標(biāo)停在x后。

如何查找字符串椰苟?
使用/xxxxx抑月。其中×××××為需查找的內(nèi)容。當(dāng)查到多個(gè)內(nèi)容時(shí)舆蝴,可以輸入n來將光標(biāo)定位到下一個(gè)位置谦絮。此外查找命令有歷史記錄功能,可以輸入/洁仗,然后用光標(biāo)上层皱、下鍵來切換已經(jīng)查過的內(nèi)容。要注意的是幾個(gè)特殊的字符必須在前面加赠潦。這幾個(gè)字符為:.*[]^%/?~$叫胖。如果想往回查找,則輸入她奥?瓮增,改變查找順序,再輸入n來進(jìn)行定位哩俭。當(dāng)然也可以用N來反向查找绷跑。

如何翻頁(半頁)?
使用[ctrl]u和[ctrl]d携茂。其中u為向上翻半頁你踩,d為向下翻半頁。

如何插入一些特殊的字符,例如:∮等带膜?
使用:digraphs來顯示特殊字符的列表吩谦,然后輸入CTRL+K+顯示出來的2個(gè)字符來輸入特殊字符,例如輸入CTRL+K+I(xiàn)+o膝藕,則為∮式廷。

哦!忘記了告訴你如何退出vim芭挽!
在Normal模式下滑废,輸入ZZ就可以保存文檔并退出。
在Noraml模式下袜爪,輸入:q!可以強(qiáng)制退出蠕趁,就是不保留修改退出。

好了辛馆,享受Vim吧俺陋!

1、vi的基本概念
  基本上vi可以分為三種狀態(tài)昙篙,分別是命令模式(command mode)腊状、插入模式(Insert mode)和底行模式(last line mode),各模式的功能區(qū)分如下:

  1. 命令行模式command mode)
      控制屏幕光標(biāo)的移動(dòng)苔可,字符缴挖、字或行的刪除,移動(dòng)復(fù)制某區(qū)段及進(jìn)入Insert mode下焚辅,或者到 last line mode映屋。
  2. 插入模式(Insert mode)
      只有在Insert mode下,才可以做文字輸入法焰,按「ESC」鍵可回到命令行模式秧荆。
  3. 底行模式(last line mode)
      將文件保存或退出vi,也可以設(shè)置編輯環(huán)境埃仪,如尋找字符串乙濒、列出行號(hào)……等。
    不過一般我們?cè)谑褂脮r(shí)把vi簡(jiǎn)化成兩個(gè)模式卵蛉,就是將底行模式(last line mode)也算入命令行模式command mode)颁股。
    2、vi的基本操作
    a) 進(jìn)入vi
      在系統(tǒng)提示符號(hào)輸入vi及文件名稱后傻丝,就進(jìn)入vi全屏幕編輯畫面:
       $ vi myfile

不過有一點(diǎn)要特別注意甘有,就是您進(jìn)入vi之后,是處于「命令行模式(command mode)」葡缰,您要切換到「插入模式(Insert mode)」才能夠輸入文字亏掀。初次使用vi的人都會(huì)想先用上下左右鍵移動(dòng)光標(biāo)忱反,結(jié)果電腦一直嗶嗶叫,把自己氣個(gè)半死滤愕,所以進(jìn)入vi后温算,先不要亂動(dòng),轉(zhuǎn)換到「插入模式(Insert mode)」再說吧间影!
b) 切換至插入模式(Insert mode)編輯文件
  在「命令行模式(command mode)」下按一下字母「i」就可以進(jìn)入「插入模式(Insert mode)」注竿,這時(shí)候你就可以開始輸入文字了。
c) Insert 的切換
  您目前處于「插入模式(Insert mode)」魂贬,您就只能一直輸入文字巩割,如果您發(fā)現(xiàn)輸錯(cuò)了字!想用光標(biāo)鍵往回移動(dòng)付燥,將該字刪除宣谈,就要先按一下「ESC」鍵轉(zhuǎn)到「命令行模式(command mode)」再刪除文字。
d) 退出vi及保存文件
  在「命令行模式(command mode)」下键科,按一下「:」冒號(hào)鍵進(jìn)入「Last line mode」蒲祈,例如:
: w filename (輸入 「w filename」將文章以指定的文件名filename保存)
: wq (輸入「wq」,存盤并退出vi)
: q! (輸入q!萝嘁, 不存盤強(qiáng)制退出vi)

3、命令行模式(command mode)功能鍵
1). 插入模式
  按「i」切換進(jìn)入插入模式「insert mode」扬卷,按“i”進(jìn)入插入模式后是從光標(biāo)當(dāng)前位置開始輸入文件牙言;
  按「a」進(jìn)入插入模式后,是從目前光標(biāo)所在位置的下一個(gè)位置開始輸入文字怪得;
  按「o」進(jìn)入插入模式后咱枉,是插入新的一行,從行首開始輸入文字徒恋。
2). 從插入模式切換為命令行模式
  按「ESC」鍵蚕断。
3). 移動(dòng)光標(biāo)
  vi可以直接用鍵盤上的光標(biāo)來上下左右移動(dòng),但正規(guī)的vi是用小寫英文字母「h」入挣、「j」亿乳、「k」、「l」径筏,分別控制光標(biāo)左葛假、下、上滋恬、右移一格聊训。
  按「ctrl」+「b」:屏幕往“后”移動(dòng)一頁。
  按「ctrl」+「f」:屏幕往“前”移動(dòng)一頁恢氯。
  按「ctrl」+「u」:屏幕往“后”移動(dòng)半頁带斑。
  按「ctrl」+「d」:屏幕往“前”移動(dòng)半頁鼓寺。
  按數(shù)字「0」:移到文章的開頭。
  按「G」:移動(dòng)到文章的最后勋磕。
  按「$」:移動(dòng)到光標(biāo)所在行的“行尾”妈候。
  按「^」:移動(dòng)到光標(biāo)所在行的“行首”
  按「w」:光標(biāo)跳到下個(gè)字的開頭
  按「e」:光標(biāo)跳到下個(gè)字的字尾
  按「b」:光標(biāo)回到上個(gè)字的開頭
  按「#l」:光標(biāo)移到該行的第#個(gè)位置,如:5l,56l朋凉。
4). 刪除文字
  「x」:每按一次州丹,刪除光標(biāo)所在位置的“后面”一個(gè)字符。
  「#x」:例如杂彭,「6x」表示刪除光標(biāo)所在位置的“后面”6個(gè)字符墓毒。
  「X」:大寫的X,每按一次亲怠,刪除光標(biāo)所在位置的“前面”一個(gè)字符所计。
  「#X」:例如,「20X」表示刪除光標(biāo)所在位置的“前面”20個(gè)字符团秽。
  「dd」:刪除光標(biāo)所在行主胧。
  「#dd」:從光標(biāo)所在行開始刪除#行
5). 復(fù)制
  「yw」:將光標(biāo)所在之處到字尾的字符復(fù)制到緩沖區(qū)中。
  「#yw」:復(fù)制#個(gè)字到緩沖區(qū)
  「yy」:復(fù)制光標(biāo)所在行到緩沖區(qū)习勤。
  「#yy」:例如踪栋,「6yy」表示拷貝從光標(biāo)所在的該行“往下數(shù)”6行文字。
  「p」:將緩沖區(qū)內(nèi)的字符貼到光標(biāo)所在位置图毕。注意:所有與“y”有關(guān)的復(fù)制命令都必須與“p”配合才能完成復(fù)制與粘貼功能夷都。
6). 替換
  「r」:替換光標(biāo)所在處的字符。
  「R」:替換光標(biāo)所到之處的字符予颤,直到按下「ESC」鍵為止囤官。
7). 回復(fù)上一次操作
  「u」:如果您誤執(zhí)行一個(gè)命令,可以馬上按下「u」蛤虐,回到上一個(gè)操作党饮。按多次“u”可以執(zhí)行多次回復(fù)。
8). 更改
  「cw」:更改光標(biāo)所在處的字到字尾處
  「c#w」:例如驳庭,「c3w」表示更改3個(gè)字
9). 跳至指定的行
  「ctrl」+「g」列出光標(biāo)所在行的行號(hào)刑顺。
  「#G」:例如,「15G」嚷掠,表示移動(dòng)光標(biāo)至文章的第15行行首捏检。
4、Last line mode下命令簡(jiǎn)介
  在使用「last line mode」之前不皆,請(qǐng)記住先按「ESC」鍵確定您已經(jīng)處于「command mode」下后贯城,再按「:」冒號(hào)即可進(jìn)入「last line mode」。
A) 列出行號(hào)
 「set nu」:輸入「set nu」后霹娄,會(huì)在文件中的每一行前面列出行號(hào)能犯。
B) 跳到文件中的某一行
 「#」:「#」號(hào)表示一個(gè)數(shù)字鲫骗,在冒號(hào)后輸入一個(gè)數(shù)字,再按回車鍵就會(huì)跳到該行了踩晶,如輸入數(shù)字15执泰,再回車,就會(huì)跳到文章的第15行渡蜻。
C) 查找字符
 「/關(guān)鍵字」:先按「/」鍵术吝,再輸入您想尋找的字符,如果第一次找的關(guān)鍵字不是您想要的茸苇,可以一直按「n」會(huì)往后尋找到您要的關(guān)鍵字為止排苍。
 「?關(guān)鍵字」:先按「?」鍵,再輸入您想尋找的字符学密,如果第一次找的關(guān)鍵字不是您想要的淘衙,可以一直按「n」會(huì)往前尋找到您要的關(guān)鍵字為止。
D) 保存文件
 「w」:在冒號(hào)輸入字母「w」就可以將文件保存起來腻暮。
E) 離開vi
 「q」:按「q」就是退出彤守,如果無法離開vi,可以在「q」后跟一個(gè)「!」強(qiáng)制離開vi哭靖。
 「qw」:一般建議離開時(shí)具垫,搭配「w」一起使用,這樣在退出的時(shí)候還可以保存文件试幽。
5做修、vi命令列表
1、下表列出命令模式下的一些鍵的功能:
h
左移光標(biāo)一個(gè)字符
l
右移光標(biāo)一個(gè)字符
k
光標(biāo)上移一行
j
光標(biāo)下移一行
^
光標(biāo)移動(dòng)至行首
0
數(shù)字“0”抡草,光標(biāo)移至文章的開頭
G
光標(biāo)移至文章的最后
$
光標(biāo)移動(dòng)至行尾
Ctrl+f
向前翻屏
Ctrl+b
向后翻屏
Ctrl+d
向前翻半屏
Ctrl+u
向后翻半屏
i
在光標(biāo)位置前插入字符
a
在光標(biāo)所在位置的后一個(gè)字符開始增加
o
插入新的一行,從行首開始輸入
ESC
從輸入狀態(tài)退至命令狀態(tài)
x
刪除光標(biāo)后面的字符

x

刪除光標(biāo)后的#個(gè)字符
X
(大寫X)蔗坯,刪除光標(biāo)前面的字符

X

刪除光標(biāo)前面的#個(gè)字符
dd
刪除光標(biāo)所在的行

dd

刪除從光標(biāo)所在行數(shù)的#行
yw
復(fù)制光標(biāo)所在位置的一個(gè)字

yw

復(fù)制光標(biāo)所在位置的#個(gè)字
yy
復(fù)制光標(biāo)所在位置的一行

yy

復(fù)制從光標(biāo)所在行數(shù)的#行
p
粘貼
u
取消操作
cw
更改光標(biāo)所在位置的一個(gè)字

cw

更改光標(biāo)所在位置的#個(gè)字

2康震、下表列出行命令模式下的一些指令
w filename
儲(chǔ)存正在編輯的文件為filename
wq filename
儲(chǔ)存正在編輯的文件為filename,并退出vi
q!
放棄所有修改宾濒,退出vi
set nu
顯示行號(hào)
/或?
查找腿短,在/后輸入要查找的內(nèi)容
n
與/或?一起使用,如果查找的內(nèi)容不是想要找的關(guān)鍵字绘梦,按n或向后(與/聯(lián)用)或向前(與?聯(lián)用)繼續(xù)查找橘忱,直到找到為止。

對(duì)于第一次用vi卸奉,有幾點(diǎn)注意要提醒一下:
1钝诚、用vi打開文件后,是處于「命令行模式(command mode)」榄棵,您要切換到「插入模式(Insert mode)」才能夠輸入文字凝颇。切換方法:在「命令行模式(command mode)」下按一下字母「i」就可以進(jìn)入「插入模式(Insert mode)」潘拱,這時(shí)候你就可以開始輸入文字了。
2拧略、編輯好后芦岂,需從插入模式切換為命令行模式才能對(duì)文件進(jìn)行保存,切換方法:按「ESC」鍵垫蛆。
3禽最、保存并退出文件:在命令模式下輸入:wq即可!(別忘了wq前面的:)


         (h,j,k,l,w,b等等)或者是指行號(hào). 

(這里#代表一個(gè)數(shù)字)

執(zhí)行n次后面的命令...
: 進(jìn)入ex模式
) 下一句
( 上一句
} 下一段
{ 上一段
]] 下一節(jié)
[[ 上一節(jié)
0 行的開頭
$ 行的末尾
^ 行的第一個(gè)非空白字符

  •         下一行的開頭 
    
  •         上一行的開頭 
    

(空格) 下一個(gè)字符
(回車) 下一行
/ 向前搜索
? 向后搜索
% 查找當(dāng)前小(中,大)括號(hào)的匹配字符
, 逆向重復(fù)上一個(gè)f,F,t或T操作
; 重復(fù)上一個(gè)f,F,t或T操作
. 重復(fù)上一個(gè)操作
` 轉(zhuǎn)到標(biāo)記處
' 轉(zhuǎn)到標(biāo)記所在行的開頭
`` 查找前回到上一個(gè)做標(biāo)記的地方
'' 查找前回到上一個(gè)做標(biāo)記所在行的開頭
~ 切換字符的大小寫
" 保存到寄存器中
!! 重復(fù)上一次SHELL命令
! 把后面的文本送給命令, 取代輸出(例如,
!}fmt把當(dāng)前的段落

送給命令fmt處理,然后用fmt返回的東西替換輸出.)

       右移當(dāng)前段落一個(gè)移動(dòng)寬度(shiftwidth) 

<< 左移當(dāng)前段落一個(gè)移動(dòng)寬度(shiftwidth)

%
從當(dāng)前到匹配小(中,大)括號(hào)之間的文本右移
<%
從當(dāng)前到匹配小(中,大)括號(hào)之間的文本左移
(似乎漏了一個(gè)符號(hào)|, 移動(dòng)到某一列----譯注)
a 在當(dāng)前位置之后添加
A 在當(dāng)前行的末尾添加
^a 沒有使用
b 上一個(gè)單詞的開頭
B 上一個(gè)單詞的開頭,忽略標(biāo)點(diǎn)符號(hào)
^b 上移一屏
c 覆蓋...
C 覆蓋到行末尾
^c 終止插入模式,在命令模式?jīng)]有用
d 刪除...
D 刪除到行末尾
^d
下移半屏袱饭,如果在插入模式下則移到上一個(gè)移動(dòng)寬度(ShiftT-ab)處

e 單詞的末尾
E 單詞的末尾,忽略標(biāo)點(diǎn)符號(hào)
^e 屏幕下卷一行
f 查找...
F 向后查找...
^f 下移一屏
g 未用
G ...跳至[缺省是到文件末尾]
^g 顯示狀態(tài)欄
h 左移
H 屏幕上的第一行
^h 在插入模式下是退格,命令模式下是左移
i 在當(dāng)前的位置前面插入
I 在本行的第一個(gè)非空白字符前面插入
^i 插入模式下是制表鍵,命令模式下未用
j 下移
J 把下一行合并到本行
^j
命令模式下是下移,插入模式下是建一個(gè)新行
k 上移
K 未用
^k 未用
l 右移
L 屏幕中的最后一行
^l 重繪屏幕
m 把當(dāng)前位置標(biāo)記到寄存器中
M 屏幕的中間行
^m 回車
n 重復(fù)上次查找
N 逆向重復(fù)上次查找
^n 命令模式下是下移
o 在當(dāng)前行的下面建一個(gè)新行
O 在當(dāng)前行的上面建一個(gè)新行
^o 未用
p 在當(dāng)前行的下面粘貼
(譯注--應(yīng)為在當(dāng)前位置的后面粘貼)
P 在當(dāng)前行的上面粘貼
(譯注--應(yīng)為在當(dāng)前位置的前面粘貼)
^p 命令模式下是上移
q 未用
Q 退出并且啟動(dòng)ex
^q 未用
r 覆蓋當(dāng)前的字符
R 在插入模式下一直覆蓋字符
^r 在命令模式下面重繪屏幕
s 替換
S 替換整行
t 到...
T 向后到...
^t 移到下一個(gè)移動(dòng)寬度(shifttab)處
u 撤消上一次操作
U 撤消對(duì)本行的所有修改
^u 上移半屏
v 未用
V 未用
^v 未用
w 下一個(gè)單詞的開頭
W 下一個(gè)單詞的開頭,忽略標(biāo)點(diǎn)符號(hào)
^w
命令模式下未用,在插入模式下是到上一個(gè)單詞的開頭處

x 刪除當(dāng)前字符
X 刪除前一個(gè)字符
^x 未用
y 復(fù)制...
Y 復(fù)制整行
^y 屏幕上卷一行
z 重新配置當(dāng)前行周圍的屏幕
ZZ 保存之后退出
^z 未用

(譯注--在命令模式下,^z執(zhí)行了UNIX暫停操作)

6.1 - 命令模式的輸入選項(xiàng)(:命令)
(注: 這不是一個(gè)規(guī)范的列表,,
我只是列出了一些最重要的命令)
:r <文件> 把<文件>讀入到當(dāng)前文檔
:r !<命令> 把<命令>的輸出插入到當(dāng)前文本中
:nr <文件> 把<文件>插入到第n行
:!<命令> 運(yùn)行<命令>,然后返回
:sh 轉(zhuǎn)到SHELL
:so <文件> 讀取<文件>,再執(zhí)行文件里面的命令
(譯注--文件中的命令應(yīng)該都是一些ex命令)
:x 保存之后退出
:wq 保存之后退出
:l1,l2w
<文件>把第l1和第l2行之間的文本寫到<文件>中去,如果沒-有指定<文件>,

vi就假定是當(dāng)前文件,如果沒有指定l1,l2,就假定是整個(gè)文-件(就成了:w)

:w >> <文件> 添加到<文件>末尾. 也可以使用行號(hào)
:w! 覆蓋當(dāng)前文件
:q 退出
:q! 不存盤就退出
:e <文件> 不離開vi編輯<文件>
:e! 重新編輯當(dāng)前文件,忽略所有的修改
:n 編輯下一個(gè)文件
:e +n <文件>
從第n行開始編輯<文件>,如果超過了末尾,就從末尾開始編輯

:e#
編輯替換文件(如果使用了命令:e<文件>,替換文件就指的是原-始文件)

:args 顯示所有要編輯的文件
:rew 重新回到第一個(gè)編輯的文檔
:map m n 創(chuàng)建一個(gè)宏(使 m 做 n)
:map! m n 創(chuàng)建一個(gè)插入模式的宏(使 m 做 n)
:unmap m 刪除宏m
:unmap! m 刪除插入模式的宏m
:ab <1> <2> 縮寫,敲<1>的時(shí)候用<2>取代
:unab <1> 取消縮寫<1>
:set <選項(xiàng)> 設(shè)置<選項(xiàng)>...

6.2 - 設(shè)置選項(xiàng)(set)
可以使用括號(hào)中的縮寫形式. 語法:
:set <選項(xiàng)> <參數(shù)> (如果需要參數(shù)的話)
也可以在一行中指定多個(gè)選項(xiàng)
:set <選項(xiàng)>? 顯示出當(dāng)前這個(gè)選項(xiàng)的參數(shù)值
:set all 則顯示所有的選項(xiàng)值
對(duì)那些無須參數(shù)的選項(xiàng)來說,使用:set
no<選項(xiàng)>就可以把它給關(guān)了

選項(xiàng): 缺省值: 含義:
autoindent (ai) noai
使新行自動(dòng)縮進(jìn),和上(下)行的位置對(duì)齊
autoprint (ap) ap
每條命令之后都顯示出修改之處
autowrite (aw) noaw
在:n,:!命令之前都自動(dòng)保存文件
beautify (bf) nobf
在輸入的時(shí)候忽略所有的控制字符

(除了制表鍵(tab),換行(newline),進(jìn)紙(for-mfeed))
directory= (dir=) /tmp 存放緩沖區(qū)的目錄名
edcompatible noedcompatible
在替換的時(shí)候使用類ed的用法
errorbells (eb) errorbells 出錯(cuò)的時(shí)候響鈴
exrc (ex) noexrc
允許在主目錄(home)外面之外放.exrc文件
hardtabs= (ht=) 8 設(shè)置硬制表的邊界
ignore case (ic) noic 正規(guī)式里忽略大小寫
lisp nolisp 打開lisp模式
list nolist
顯示所有的制表鍵和行的結(jié)尾
magic magic
可以使用更多的正規(guī)表達(dá)式
mesg mesg 允許向終端發(fā)送消息
number (nu) nonumber 顯示行號(hào)
open open 允許開放和可視化
optimize (opt) optimize
優(yōu)化吞吐量,打印時(shí)不發(fā)回車
paragraphs= (para=) IPLPPPQPPLIbp 設(shè)置{ & }的分界符
prompt prompt
命令模式下的輸入給出:的提示符
readonly (ro) noro
除非用!號(hào)否則不準(zhǔn)保存文件
redraw noredraw 當(dāng)編輯的時(shí)候重繪屏幕
remap remap 允許宏指向其他的宏
report= 5
如果影響的行數(shù)>這個(gè)數(shù)的話就報(bào)告
scroll 1/2 window
下卷屏幕時(shí)滾動(dòng)屏幕的數(shù)目,

同樣這也是z命令輸出的行數(shù)(z 輸出2倍滾屏的大小)
sections= SHNHH HU
定義節(jié)的末尾(當(dāng)使用命令[[ 和 ]] 時(shí))
shell= (sh=) /bin/sh
缺省的SHELL,如果設(shè)置了環(huán)境變量SHELL的話,就使用變-量
shiftwidth= (sw=) 8
當(dāng)使用移動(dòng)(shift)命令時(shí)移動(dòng)的字符數(shù)
showmatch (sm) nosm 顯示{, }, (, ), [, 或者 ]
的匹配情況
showmode noshowmode
顯示你處在什么模式下面
slowopen (slow)
插入之后不要立刻更新顯示
tabstop= (ts=) 8
設(shè)置制表停止位(tabstop)的長(zhǎng)度
taglength= (tl=) 0
重要標(biāo)記的字符個(gè)數(shù)(0表示所有的字符)
tags= tag, /usr/lib/tags
定義包含標(biāo)記的文件路徑
term= 設(shè)置終端類型
terse noterse 顯示簡(jiǎn)短的錯(cuò)誤信息
timeout (to) timeout 一秒鐘后鍵盤映射超時(shí)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末川无,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子宁赤,更是在濱河造成了極大的恐慌舀透,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件决左,死亡現(xiàn)場(chǎng)離奇詭異愕够,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)佛猛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門惑芭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人继找,你說我怎么就攤上這事遂跟。” “怎么了婴渡?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵幻锁,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我边臼,道長(zhǎng)哄尔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任柠并,我火速辦了婚禮岭接,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘臼予。我一直安慰自己鸣戴,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布粘拾。 她就那樣靜靜地躺著窄锅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缰雇。 梳的紋絲不亂的頭發(fā)上酬滤,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天签餐,我揣著相機(jī)與錄音,去河邊找鬼盯串。 笑死氯檐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的体捏。 我是一名探鬼主播冠摄,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼几缭!你這毒婦竟也來了河泳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤年栓,失蹤者是張志新(化名)和其女友劉穎拆挥,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體某抓,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纸兔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了否副。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汉矿。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖备禀,靈堂內(nèi)的尸體忽然破棺而出洲拇,到底是詐尸還是另有隱情,我是刑警寧澤曲尸,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布赋续,位于F島的核電站,受9級(jí)特大地震影響另患,放射性物質(zhì)發(fā)生泄漏蚕捉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一柴淘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧秘通,春花似錦为严、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至话原,卻和暖如春夕吻,著一層夾襖步出監(jiān)牢的瞬間诲锹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國(guó)打工涉馅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留归园,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓稚矿,卻偏偏與公主長(zhǎng)得像庸诱,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子晤揣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容