VIM打造為超級IDE

先附上鏈接

手把手教你把Vim改裝成一個IDE編程環(huán)境(圖文)手把手教你把Vim改裝成一個IDE編程環(huán)境(圖文) -- 續(xù)1在Fedora下成功將Vim打造成適用于C/C++的IDE把VIM打造成一個真正的IDE(1)?:這是一個系列描沟,后面還有幾篇

一计盒、兩行合并為一行:

int

main(int argc,char argv)

假如要把上面兩行并為一行,只需要定位于int這行蕾各,然后按J(大寫)蕊温,即可袱箱。

二、撤消和重做

以前很傻义矛,只知道按u來撤消发笔,不知道重做。不一小心凉翻,撤消過頭就傻了了讨。原來重做是Ctrl+r

另外,大寫U用來撤消整行前计。

三胞谭、連續(xù)插入n個感嘆號

以前以為用i/a不能進(jìn)行連續(xù)多個字符的插入,原來錯了男杈!

Hello World

比如要在上面這句話后面插入10個"!"丈屹,總不能真的打10個吧?

只要在普通模式下把光標(biāo)定位于d伶棒,然后按10a!……不對啊旺垒,才一個!,別急苞冯,再按兩下Esc袖牙!哈哈侧巨,出來10個!了吧舅锄!這個貌似不太常用,但挺好玩司忱,呵呵~

四皇忿、快速保存退出

之前我會用兩個退出方法:

保存并退出:wq

不保存并退出:q!

現(xiàn)在保存并退出有更快的方法──直接在普通模式下按ZZ即可。

另外坦仍,用:e!可以不保存文件并重新載入這個文件鳍烁。

五、移動和滾動

直接按w/b來按單詞滾動繁扎,w是向前移動一個單詞幔荒,b是向后移動一個單詞,我居然不常用梳玫!虧我還常常dwdw的來刪除詞爹梁。

另外,Ctrl+D向下滾屏提澎,Ctrl+U向上滾屏姚垃,比我之前hjkl(左下右上)的有效率多了……汗

不知道在哪里?

:set number盼忌,來顯示行號积糯,:set nonu取消行號,行號+gg(或者 行號+G)直接到達(dá)該行谦纱。

六看成、查找時忽略大小寫和歷史查找

有時查找單詞時需要忽略大小寫,只要設(shè)置下面的就可以了

:setignorecase

還有另外一種忽略搜索時大小寫的方法更好用跨嘉,只要在待搜索字符串后加個\c就可以了

/stringYouWantToSearch\c

假如進(jìn)行過幾次查找川慌,想繼續(xù)以之前查過的關(guān)鍵詞查找時,只要按/,然后上下鍵來選擇即可

同理窘游,按下:唠椭,然后上下鍵,也可以翻看執(zhí)行過的歷史紀(jì)錄忍饰,不過僅限于當(dāng)前的編輯贪嫂。

七、快速查找

你要找當(dāng)前光標(biāo)定位處的字段艾蓝,難道要慢吞吞輸入/和字段嗎力崇?不必了!直接按*赢织,Vim就會把當(dāng)前的字段作為查找內(nèi)容亮靴,找下一處。

對了于置,:set

hlsearch可以將查找的內(nèi)容設(shè)置成高亮茧吊。這樣就好看了。反之八毯,加上:set

nohlsearch就可以了搓侄。上面的ignorecase也可以加no。

八话速、定義標(biāo)記

現(xiàn)在才發(fā)現(xiàn)定義標(biāo)記這個超有用的東西讶踪!真是后悔莫及啊泊交!

以前在一個C文件里乳讥,從一個方法跳到另一個方法,跳來跳去廓俭,都是記行數(shù)的……

原來云石,按下ma,就會給光標(biāo)所在處標(biāo)記了一個a白指,接下來可以通過`a來訪問這個地方留晚!注意,符號`是數(shù)字1左邊那個符號告嘲,此外错维,通過'a,可以訪問那個位置的行首橄唬,注意赋焕,符號'是單引號。

打命令:marks可以看到所有的標(biāo)記仰楚。

而''或``隆判,就可以在最近的兩個標(biāo)記之間相互跳轉(zhuǎn)犬庇!

???????當(dāng)你用"G" 命令跳到另一個地方,Vim會記住你從什么地方跳過去的侨嘀。這個位置成為一個標(biāo)記臭挽,要回到原來的地方,使用如下命令:''咬腕,''命令可以在兩個位置上跳來跳去欢峰。而CTRL-O 命令則跳到一個"較老"的地方 (提示: O 表示 older)。CTRL-I 則跳到一個 "較新" 的地方.

:jumps

命令能輸出一個你可以跳往的位置的列表涨共。最后一個你使用的標(biāo)記會用">" 符號標(biāo)記出來纽帖。

Vim

允許你在文本中放置自定義的標(biāo)記。命令"ma" 用 a 標(biāo)記當(dāng)前的光標(biāo)位置举反。你可以在文本中使用26 個標(biāo)記 (a 到 z)懊直。這些標(biāo)記是不可見的,只是一個由Vim 記住的位置火鼻。要跳到一個你定義的標(biāo)記室囊,可以使用命令`{mark},這里 {mark} 是指定義標(biāo)記的那個字母凝危。所以波俄,移到標(biāo)記a 的命令是:?`a你可以用如下命令取得所有的標(biāo)記的列表::marks

到有一些特殊的標(biāo)記晨逝,包括:

'

跳轉(zhuǎn)前的光標(biāo)位置

''

最后編輯的光標(biāo)位置

[

最后修改的開始位置

]

最后修改的結(jié)束位置

注:mark僅在當(dāng)前文件跳轉(zhuǎn)有效,jumps可在多個文件之間來回跳轉(zhuǎn)

九蛾默、替換文本(這個沒看懂怎么用................)

* 用cw或ce來將光標(biāo)所處的單詞替換掉,效果是一樣的捉貌;

*

按cc的話支鸡,直接替換整行。 另外趁窃,用S也能達(dá)到同樣的效果牧挣;

*

按C=c$,替換當(dāng)前至行尾的內(nèi)容醒陆;

* s

的話瀑构,是替換當(dāng)前的字符,跟r的功能一樣刨摩;

*

以前刪除一行至末尾用d$寺晌,原來D就行了;

上面的大多數(shù)都可以加數(shù)字澡刹!

十呻征、可視選擇(這個我沒怎么用過.....)

* 按v進(jìn)行選擇,如果想控制頭和尾罢浇,按o/O進(jìn)行切換陆赋;

*

如果是大寫的V沐祷,則按行進(jìn)行選擇;

十一攒岛、刪除單詞和替換句子赖临、復(fù)制單詞

* 一般來說,用dw/de刪除單詞需要將光標(biāo)定位于單詞開頭(de不會刪除單詞后的空格灾锯,dw會刪除單詞后的空格)思杯,用dw/de時需移到單詞開頭是因為dw/de會從光標(biāo)所在的那個字符(包括該字符)開始刪除直到該單詞結(jié)束,但是如果用daw挠进,則無需這樣色乾,只要光標(biāo)在這個單詞上就可以了(daw會將空格一起刪除,daw=Delete

a Word)领突,如果不包括空格暖璧,就是diw

*

替換句子的話君旦,就用cis就行了(目前我試驗出來的可以被用以標(biāo)示一句話結(jié)束的標(biāo)點符號是英文的問號?和句號. )

 ?接下來看下復(fù)制:  yy命令復(fù)制當(dāng)前整行的內(nèi)容到vi緩沖區(qū)  yw復(fù)制當(dāng)前光標(biāo)所在位置到單詞尾字符的內(nèi)容到vi緩存區(qū)澎办,相當(dāng)于復(fù)制一個單詞,而yaw/yiw也是復(fù)制一個單詞金砍,但光標(biāo)可以處在該單詞的任何位置局蚀,比起yw的需要移動到單詞的首字符要方便∷〕恚  y$復(fù)制光標(biāo)所在位置到行尾內(nèi)容到緩存區(qū)  y^復(fù)制光標(biāo)所在位置到行首內(nèi)容到緩存區(qū)  #yy 例如:5yy就是復(fù)制5行  #yw 例如:2yw就是復(fù)制兩個單詞

  如果要復(fù)制第m行到第n行之間的內(nèi)容琅绅,可以在末行模式中輸入m,ny例如:3,5y復(fù)制第三行到第五行內(nèi)容到緩存區(qū)鹅巍。

十二千扶、模式轉(zhuǎn)換

Vim作為一種強大的編輯工具,是通過鍵盤來實現(xiàn)骆捧,而不是通過鼠標(biāo)來實現(xiàn)的澎羞。這一點很重要。

vim

有三種常見的模式敛苇,Normail

Mode(命令模式)妆绞,Insert

Mode(輸入模式)和Visual Mode(視圖模式)。

這幾種模式的切換是也是很直接方便的枫攀,比如在命令模式下括饶,要求輸入字符,只要輸入i就進(jìn)入輸入模式而根據(jù)要輸入位置和當(dāng)前光標(biāo)的關(guān)系不同脓豪,有不同的切換巷帝。總之可以把命令模式和輸入模式的切換有Append扫夜,Insert楞泼,Replace驰徊,Subsitute 記作AIRS,這種記憶方法特別方便英文單詞的意思是空氣堕阔,vim在命令模式和輸入模式的切換就像空氣一樣棍厂,無影無形。而AIRS的英文字母的大小寫意思是不一樣的超陆。小寫的表示characterwise(字符)牺弹,大寫的表示linewise(行)[if !vml]

[endif]

十三、 刪除时呀、復(fù)制指定個數(shù)個字符

比如 :?5yl????????復(fù)制光標(biāo)后的5個字符(包括光標(biāo)所在的那個字符)

?5yh

復(fù)制光標(biāo)前的五個字符(包括光標(biāo)所在的那個字符)

5dl

刪除光標(biāo)后的5個字符(包括光標(biāo)所在的那個字符)

?5dh

刪除光標(biāo)前的5個字符(包括光標(biāo)所在的那個字符)

十四张漂、強大的替換功能

替換::%s/old_string/new_string/g〗髂龋或者:3,7s/old_string/new_string/g

在一個目錄下替換文本中的某個字符串

sed -i 's/orig_string/new_string/g' *

http://www.nonozone.net/vim-model-commonly-used-in-the-replacement-summary.html

http://gooss.org/vim-tips-replace-the-ingenious-use-of-4/

http://gooss.org/vim-tips-replace-the-ingenious-use-of-3/

十五航攒、同時編輯多個文件

在vim的普通模式下輸入?:e

filename,可以打開并編輯新的文件趴梢,但如果當(dāng)前文件還沒有保存的話漠畜,會有錯誤提示,這時需使用:w?先將其保存才行坞靶。

如果正在用vim編輯著多個文件憔狞,可以用?ctrl+^?在他們之間來回切換,比如現(xiàn)在同時打開了6個文件彰阴,則就有6個不同的緩沖區(qū)瘾敢,比如現(xiàn)在在編輯文件1,想切換到文件5去,則需要先把本文件保存(通過 :e )硝枉,然后再按5廉丽,再按ctrl+^,就切換到文件5了妻味。

:rew???讀入編輯名單中的第一個文件,

:last 讀入編輯名單中的最后一個文件。:next會關(guān)閉光前文件打開下個文件開始編輯,但當(dāng)前文件也需要先:w保存欣福。责球,但?:set

hidden?允許在有未保存的修改時切換緩沖區(qū),此時的修改由vim 負(fù)責(zé)保存.

你打開了幾個窗口拓劝,現(xiàn)在你想退出Vim雏逾,你可以分別關(guān)閉每一個窗口。更快的方法是:

:qall

這表示 "quit

all"(全部退出)郑临。如果任何一個窗口沒有存盤栖博,Vim都不會退出。同時光標(biāo)會自動跳到那個窗口厢洞,你可以用":write" 命令保存該文件或者":quit!" 放棄修改仇让。如果你知道有窗口被改了典奉,而你想全部保存,則執(zhí)行如下命令::wall這表示"write all"(全部保存)丧叽。但實際上卫玖,它只會保存修改過的文件。Vim知道保存一個沒有修改過的文件是沒有意義的踊淳。另外假瞬,還有":qall" 和"wall" 的組合命令::wqall這會保存所有修改過的文件并退出Vim?。最后迂尝,下面的命令由于退出Vim 并放棄所有修改:

:qall!

注意脱茉,這個命令是不能撤消的。

或者也可以用多窗口來在一個界面中編輯多個文件垄开,如下:

vim -o a b

c 打開多個文件芦劣,每個文件一個窗口(水平分割)

vim -O a b c

打開多個文件,每個文件一個窗口(垂直分割)

或者:

打開一個?:sp 另外一個文件?(水平分割):vsp 文件名(垂直分割)如此就可以在一個窗口打開2個或多個文件了说榆⌒橐鳎可以使用?ctrl + 兩次按 w在多個窗口的文件中切換

窗口大小調(diào)整:(輸入順序:ctrl+shift+w 行數(shù) +/-/>/<)

ctrl+shift+w,

5, - 當(dāng)前窗口縮小5行(高度,(如不指定行數(shù),默認(rèn)為1)

ctrl+shift+w, 5, +

當(dāng)前窗口增加5行(高度,(如不指定行數(shù)签财,默認(rèn)為1)

ctrl+shift+w, 5, >

當(dāng)前窗口增加5列(寬度,(如不指定列數(shù)串慰,默認(rèn)為1)

ctrl+shift+w, 5, <

當(dāng)前窗口增加5列(寬度,(如不指定列數(shù),默認(rèn)為1)

ctrl+shift+w,

= 使所有窗口幾乎一樣大

ctrl+shift+w,

_(下劃線) 使當(dāng)前窗口最大化

十六唱蒸、執(zhí)行shell命令

在 vi 中也可以執(zhí)行 shell 的命令邦鲫。在命令模式下,指令:!command神汹,command?是shell 命令庆捺。例如指令:!date 會把目前的時間和日期顯示到螢?zāi)簧掀ㄎ骸R悄阆氚裺hell 命令的結(jié)果放到文件中滔以,可以用:r

!command。比如r

!date 會把現(xiàn)在的時間放到光標(biāo)所在的行的下一行氓拼∧慊可以指定行數(shù),例如:20r

!date?會把現(xiàn)在的時間放到第二十行桃漾。

如果你要下一連串的shell 命令但又不想離開vi坏匪,你可以在line mode 下指令sh。這個指令會建立一個shell撬统,如果要離開sh回到vim适滓,可輸入exit,或按ctrl-D 。

也可以選擇檔案中的文字作為shell 命令的輸入恋追。輸出的結(jié)果會把替換掉你輸入的文字凭迹。例如:2,5!sort?會把第二列到第五列的文字依序排列罚屋,而原來的文字就會被覆蓋。

十七蕊苗、編輯得更快一點

按詞移動

w

按下w會前進(jìn)一個詞沿后。

b

按下b會后退一個詞。

這里朽砰,就像在Vim中的大部分情況下一樣尖滚,在這兩個命令前面加上一個數(shù)字可以讓它們重復(fù)做多次。

移動到行首或行末

$

$會讓你移動到所在行的末尾瞧柔。

^

^會讓你移動到所在行的開始漆弄。Home鍵也可以做相似的事。不過^會移動到第一個非空的字符處造锅,而Home會移動到行首撼唾。

這兩個命令也接受數(shù)字參數(shù),比如

2$

會移動到下一行末哥蔚。

在行上查找

f要查找的字符

f用來在一行上查找一個字符并移動到該字符所在處倒谷。比如

fx

用來移動到此行當(dāng)標(biāo)后第一個x處。如果有一個數(shù)字參數(shù)糙箍,就可以指定移動到某個指定的匹配位置渤愁。

F

F用來向左查找。

移動到指定行

行號G

G命令會把你帶到用行號指定的行深夯。如果使用沒有行號的G抖格,將會移動到最后一行。

顯示當(dāng)前所在位置

:set number

Vim的可制定性是很強的咕晋,所以你可以通過:set設(shè)定很多選項雹拄。number就是其中之一。它是一個布爾選項掌呜,用來控制是否在最左邊顯示行號滓玖。

:set number

可以把它打開。

:setnonumber

則可以關(guān)閉此選項站辉。

Ctrl+g

Ctrl+g會顯示當(dāng)然后在的位置呢撞。

向上和向下翻屏

Ctrl+u

會向上翻半屏

Ctrl+d

會向下翻半屏

刪除文本

dw

dw會刪除一個詞。你應(yīng)該可以看得出來饰剥,這里的w代表的就是word(詞).其實d后面可以加好多東西來控制刪除的對象。比如:

d$

會刪除從當(dāng)前位置到行末的所有內(nèi)容,同理摧阅,d^會刪除從當(dāng)前位置到行首的所有內(nèi)容汰蓉。

數(shù)字放在哪

這里有一個疑問,如果想刪除三個詞棒卷,那么應(yīng)該怎么辦顾孽?是d3w祝钢,還是3dw。其實它們都能做到若厚,不過原理不太一樣拦英。d3w是一次刪除三個詞,而3dw是執(zhí)行三次刪除一個詞测秸。其實這兩者可以混起來疤估,比如2d3w。

改變文本

cc

用來刪除一行并進(jìn)入輸入狀態(tài)霎冯。

cw

用來刪除一個詞并進(jìn)入輸入狀態(tài)等铃拇。

替換字符

r替換的字符

r命令把當(dāng)標(biāo)處的字符替換成在r命令中指定的字符。

更改大小寫

~

通過~可以把光標(biāo)處的字符用它的大寫(如果現(xiàn)在是小寫)或小寫(如果現(xiàn)在是大寫)替換沈撞。

Vim有著簡潔而強大的宏功能慷荔。

q宏名

按下 q+宏名 后會進(jìn)入宏錄制狀態(tài),也就是說缠俺,此后發(fā)生的一切操作都會記錄到名為“宏名”的宏中显晶。如果名為“宏名”的宏已經(jīng)存在,則將它覆蓋壹士。

@宏名

會調(diào)用名為“宏名”的宏磷雇。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市墓卦,隨后出現(xiàn)的幾起案子倦春,更是在濱河造成了極大的恐慌,老刑警劉巖落剪,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睁本,死亡現(xiàn)場離奇詭異,居然都是意外死亡忠怖,警方通過查閱死者的電腦和手機呢堰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凡泣,“玉大人枉疼,你說我怎么就攤上這事⌒猓” “怎么了骂维?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長贺纲。 經(jīng)常有香客問我航闺,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任潦刃,我火速辦了婚禮侮措,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘乖杠。我一直安慰自己分扎,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布胧洒。 她就那樣靜靜地躺著畏吓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪略荡。 梳的紋絲不亂的頭發(fā)上庵佣,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機與錄音汛兜,去河邊找鬼巴粪。 笑死,一個胖子當(dāng)著我的面吹牛粥谬,可吹牛的內(nèi)容都是我干的肛根。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼漏策,長吁一口氣:“原來是場噩夢啊……” “哼派哲!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起掺喻,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤芭届,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后感耙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體褂乍,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡逃片,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年损离,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖谬运,靈堂內(nèi)的尸體忽然破棺而出掂骏,到底是詐尸還是另有隱情级解,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布欧穴,位于F島的核電站,受9級特大地震影響映屋,放射性物質(zhì)發(fā)生泄漏湾蔓。R本人自食惡果不足惜贬循,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一奇适、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧籍琳,春花似錦、人聲如沸魂贬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽付燥。三九已至宣谈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間键科,已是汗流浹背闻丑。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留勋颖,地道東北人嗦嗡。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像饭玲,于是被迫代替她去往敵國和親侥祭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

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