vim作為編程ide的一些技巧

前言:

vim,這里就不介紹了,用功linux的基本都知曉了绣张,一般我們寫(xiě)個(gè)小腳本的話(huà)狂秦,很多人習(xí)慣用特定的ide編輯器進(jìn)行編程,如果能夠熟練使用vim后治专,一定會(huì)讓你在工作中更持續(xù)激情下去卖陵。

vim開(kāi)發(fā)c

這里用vim作為c的編輯器

vim ~/.vimrc
#輸入一下內(nèi)容
:set number
:set sw=8
:set ts=8
:set sm
:set cin
:syntax on

然后效果是:


image.png

可以清楚的看到,vim代碼風(fēng)格张峰,有行數(shù)泪蔫,有顏色的特效了。
因?yàn)関im啟動(dòng)時(shí)會(huì)先加載~/.vimrc,所以我們加配置文件來(lái)做到喘批。

vim一些常見(jiàn)命令:

這里備注一下撩荣,下面內(nèi)容來(lái)自博客:
vim高級(jí)使用

1)一些常用的Vim配置,在~/.vimrc中

syntax on       支持語(yǔ)法高亮

set nu          顯示行號(hào)
set nonu      不顯示行號(hào)

set ai          設(shè)置自動(dòng)縮進(jìn)

set shiftwidth=4   設(shè)置自動(dòng)縮進(jìn) 4 個(gè)空格, 當(dāng)然要設(shè)自動(dòng)縮進(jìn)先.

set sts=4          即設(shè)置 softtabstop 為 4\. 輸入 tab 后就跳了 4 格.

set tabstop=4      實(shí)際的 tab 即為 4 個(gè)空格, 而不是缺省的 8 個(gè).

set expandtab      在輸入 tab 后, vim 用恰當(dāng)?shù)目崭駚?lái)填充這個(gè) tab.

:set hls 打開(kāi)搜索高亮

:set nohls 取消搜索高亮 

:set list : 顯示特殊字符

:set nolist 


2)多文件編輯

:e filename  vim將在原窗口中打開(kāi)新的文件, 若舊文件編輯過(guò), 會(huì)要求保存.

:sp filename vim將分割出一個(gè)橫向窗口, 并在該窗口中打開(kāi)新文件.

:vsp filename vim將在右邊分割出一個(gè)窗口, 并在該窗口中打開(kāi)新文件.

如果:sp 或 :vsp沒(méi)有指定文件饶深,則在新窗口中打開(kāi)原文件餐曹。

ctrl+w w來(lái)在vim打開(kāi)的多個(gè)窗口中切換.

ctrl+w q來(lái)關(guān)閉多個(gè)窗口中當(dāng)前的窗口.

 打開(kāi)的兩個(gè)文件上下窗口分布 : vim -o file1 file2
 打開(kāi)的兩個(gè)文件左右窗口分布 : vim -O file1 file2           



3) 查找

/xxx(?xxx) 表示在整篇文檔中搜索匹配xxx的字符串, / 表示向下查找, ? 表示向上查找.查找到以后, 再輸入 n 查找下一個(gè)匹配處, 輸入 N 反方向查找.

*(#) 當(dāng)光標(biāo)停留在某個(gè)單詞上時(shí), 輸入這條命令表示查找與該單詞匹配的下(上)一個(gè)單詞. 同樣, 再輸入 n 查找下一個(gè)匹配處, 輸入 N 反方向查找. (可以使用shift+* 或 shift + #來(lái)查找當(dāng)前光標(biāo)所在單詞)

g*(g#) 此命令與上條命令相似, 只不過(guò)它不完全匹配光標(biāo)所在處的單詞, 而是匹配包含該單詞的所有字符串.

% 本命令查找與光標(biāo)所在處相匹配的反括號(hào), 包括 () [] { }.

在vim中一般查找 :/str,如果有空格則需要:/str str2/ 



4) 光標(biāo)移動(dòng)

w(e) 移動(dòng)光標(biāo)到下一個(gè)單詞. b 移動(dòng)光標(biāo)到上一個(gè)單詞.

0 移動(dòng)光標(biāo)到本行最開(kāi)頭. ^ 移動(dòng)光標(biāo)到本行最開(kāi)頭的字符處. $ 移動(dòng)光標(biāo)到本行結(jié)尾處.

向前向后翻頁(yè) ctrl+f 和 ctrl+b. 

% 跳轉(zhuǎn)到相配對(duì)的括號(hào). 

G(shift+g)   - go to the last line in the vim editor (文件的末尾) 

1G - goto line number 1(文件的開(kāi)始)

20G - goto line number 20



5)拷貝, 刪除與粘貼

x表示刪除當(dāng)前字符。 

在 vi 中 y 表示拷貝, d 表示刪除, p 表示粘貼. 其中拷貝與刪除是與光標(biāo)移動(dòng)命令結(jié)合的, 看幾個(gè)例子就能夠明白了.

yw 表示拷貝從當(dāng)前光標(biāo)到光標(biāo)所在單詞結(jié)尾的內(nèi)容. dw 表示刪除從當(dāng)前光標(biāo)到光標(biāo)所在單詞結(jié)尾的內(nèi)容. y0 表示拷貝從當(dāng)前光標(biāo)到光標(biāo)所在行首的內(nèi)容. d0 表示刪除從當(dāng)前光標(biāo)到光標(biāo)所在行首的內(nèi)容. y$ 表示拷貝從當(dāng)前光標(biāo)到光標(biāo)所在行尾的內(nèi)容. d$ 表示刪除從當(dāng)前光標(biāo)到光標(biāo)所在行尾的內(nèi)容. yfa 表示拷貝從當(dāng)前光標(biāo)到光標(biāo)后面的第一個(gè)a字符之間的內(nèi)容. dfa 表示刪除從當(dāng)前光標(biāo)到光標(biāo)后面的第一個(gè)a字符之間的內(nèi)容.

特殊地: yy 表示拷貝光標(biāo)所在行. dd 表示刪除光標(biāo)所在行. D 表示刪除從當(dāng)前光標(biāo)到光標(biāo)所在行尾的內(nèi)容.

刪除整個(gè)文檔 :1,$d

刪除某行后面的換行符號(hào):在命令狀態(tài)下敌厘,在某一行上按"J"鍵將Join下一行台猴,呵呵 

u 撤銷(xiāo)上次的操作,ctrl+r恢復(fù)上次的撤銷(xiāo)俱两。 

刪除所有空白行(^是行的開(kāi)始饱狂,\s*是零個(gè)或者多個(gè)空白字符;$是行尾) :g/^\s*$/d



6)替換

單個(gè)字符替換用r宪彩,覆蓋多個(gè)字符用R休讳,用多個(gè)字符替換一個(gè)字符用s,整行替換用S.

:s/vivian/sky/ 替換當(dāng)前行第一個(gè) vivian 為 sky

:s/vivian/sky/g 替換當(dāng)前行所有 vivian 為 sky

:n,$s/vivian/sky/ 替換第 n 行開(kāi)始到最后一行中每一行的第一個(gè) vivian 為 sky

:n,$s/vivian/sky/g 替換第 n 行開(kāi)始到最后一行中每一行所有 vivian 為 sky

n 為數(shù)字尿孔,若 n 為 .衍腥,表示從當(dāng)前行開(kāi)始到最后一行

:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替換每一行的第一個(gè) vivian 為 sky

:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替換每一行中所有 vivian 為 sky

可以使用 # 作為分隔符磺樱,此時(shí)中間出現(xiàn)的 / 不會(huì)作為分隔符

:s#vivian/#sky/# 替換當(dāng)前行第一個(gè) vivian/ 為 sky/

:%s+/oradata/apras/+/user01/apras1+ (使用+ 來(lái) 替換 / ): /oradata/apras/替換成/user01/apras1/

:2,50s/part1/part2      #用part2替換第2行到第50行中每行第1個(gè)part1

:2,50s/part1/part2/g    #用part2替換第2行到第50行中所有的part1

:.,+3s/part1/part2      #用part2替換當(dāng)前行以及當(dāng)前行后面的三行中每行第1個(gè)part1

:.,+3s/part1/part2/g    #用part2替換當(dāng)前行以及當(dāng)前行后面的三行中所有的part1 

例如將每行增加 xxx : :%s/\(.*\)/\1 xxx/g 



7)visual block狀態(tài)

ctrl+v進(jìn)入,列塊選擇婆咸,例如4l選中光標(biāo)接下來(lái)的4列,7j光標(biāo)開(kāi)始的7行芜辕,執(zhí)行4l和7j后選中7行4列的塊尚骄, 也可以在ctrl+v后使用hjkl來(lái)控制選擇的行和列,可以使用y侵续,d等進(jìn)行拷貝刪除操作倔丈。例如刪除多行前面的空格。

(塊編輯:編輯一行状蜗,效果被應(yīng)用到所有選中的行)例如注釋多行:ctrl+v選擇塊后需五,然后I進(jìn)入編輯狀態(tài)在第一行的開(kāi)始輸入#,然后兩次esc退出后轧坎,剛才選中的所有行前面自動(dòng)加#宏邮,從而達(dá)到注釋所有行的目的。

shift+v可以用來(lái)選中多行缸血,然后:s/aaa/bbb/g, 對(duì)選中的行中進(jìn)行替換蜜氨。

shift+v選中多行后,執(zhí)行d直接刪除選中的多行捎泻。

[http://man.chinaunix.net/newsoft/vi/doc/visual.html](http://man.chinaunix.net/newsoft/vi/doc/visual.html) 



8) 其他

查看當(dāng)前vim打開(kāi)的文件:vim下:f

vim中去除空行或行末的^M:dos2unix ufile

VIM中sort不能用:只能在terminal下執(zhí)行sort -u file > file_new

**vim中diff文件: 如果已經(jīng)打開(kāi)了一個(gè)文件飒炎,則 **:vert diffsplit file2, 如果還沒(méi)有打開(kāi)文件笆豁,則直接執(zhí)行vi -O test_vi.txt test_vi2.txt郎汪,此時(shí)兩個(gè)文件左右排列,如果需要兩個(gè)文件上下排列的話(huà)闯狱,執(zhí)行vi -o test_vi.txt test_vi2.txt煞赢。 vimdiff最多可以同時(shí)比較4個(gè)文件。

不退出vim扩氢,直接執(zhí)行命令耕驰,例如在perl文件中,直接執(zhí)行不退出录豺,:!perl % 朦肘。 如果前面已經(jīng)執(zhí)行過(guò)了,則重復(fù)前面的命令時(shí)双饥,只需要:!!


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末媒抠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子咏花,更是在濱河造成了極大的恐慌趴生,老刑警劉巖阀趴,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異苍匆,居然都是意外死亡刘急,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)浸踩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)叔汁,“玉大人,你說(shuō)我怎么就攤上這事检碗【菘椋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵折剃,是天一觀(guān)的道長(zhǎng)另假。 經(jīng)常有香客問(wèn)我,道長(zhǎng)怕犁,這世上最難降的妖魔是什么边篮? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮因苹,結(jié)果婚禮上苟耻,老公的妹妹穿的比我還像新娘。我一直安慰自己扶檐,他們只是感情好凶杖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著款筑,像睡著了一般智蝠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上奈梳,一...
    開(kāi)封第一講書(shū)人閱讀 51,698評(píng)論 1 305
  • 那天杈湾,我揣著相機(jī)與錄音,去河邊找鬼攘须。 笑死漆撞,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的于宙。 我是一名探鬼主播浮驳,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼捞魁!你這毒婦竟也來(lái)了至会?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤谱俭,失蹤者是張志新(化名)和其女友劉穎奉件,沒(méi)想到半個(gè)月后宵蛀,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡县貌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年术陶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片煤痕。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瞳别,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出杭攻,到底是詐尸還是另有隱情,我是刑警寧澤疤坝,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布兆解,位于F島的核電站,受9級(jí)特大地震影響跑揉,放射性物質(zhì)發(fā)生泄漏锅睛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一历谍、第九天 我趴在偏房一處隱蔽的房頂上張望现拒。 院中可真熱鬧,春花似錦望侈、人聲如沸印蔬。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)侥猬。三九已至,卻和暖如春捐韩,著一層夾襖步出監(jiān)牢的瞬間退唠,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工荤胁, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瞧预,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓仅政,卻偏偏與公主長(zhǎng)得像垢油,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子已旧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

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