vim常用操作簡明教程附我用了多年的vim配置文件

vim常用操作簡明教程附我用了多年的vim配置文件

為配合演示,加了個Makefile,并特意加了詳細注釋,是我平時用的,中小工程可以用,很方便

所需要的文件都在github https://github.com/tongpengfei/vimconfig

最近有同事想用vim,借著這樣的機會,我就向沒有用過vim,想用vim的同學(xué)簡明介
紹一下,為了讓各位有比較直觀的感受,我特意吐血配了一些激情小動圖,希望大家
喜歡.

所以此文的面向?qū)ο笫菦]用過vim,想了解vim的同學(xué).

一開始用vim的時候下載了很多插件,因為當(dāng)時已經(jīng)習(xí)慣vs了,用vim時候想盡量貼
近vs習(xí)慣,后來隨著時間退移, 發(fā)現(xiàn)用到的功能越來越少,比如開始用到的Tlist,cope
在后來的代碼編輯中不知道為啥漸漸不怎么用了,不過瀏覽開源工程時候還是挺好
用的,打開Tlist可以看到文件的函數(shù)定義.

到最后整理出vimconfig的時候就只有一點點功能了焰枢,對我來說最實用的還是代
碼顏色這塊,當(dāng)時主要是為了配出喜歡的c,cpp代碼的顏色,有興趣的可以看
vimcfg/.vim/syntax/tpf.vim 和vimcfg/.vim/color/c.vim文件一個是
語法匹配,一個是顏色定義,這個是2010年的時候配的,長期不看,其實我也不
怎么記得了.

最終的配色就是這樣:


vim_color.png

安裝vim

  • ubuntu可以用下面這行命令安裝
bash$ sudo apt-get install vim 
  • centos可以用下面這行命令安裝
bash$ sudo yum install vim 

安裝vim confg

安裝配置文件只需要把vimcfg下的.vim .vimrc復(fù)制到~/目錄下就可以了. 
可以使用命令復(fù)制到目錄~/下
bash$ cp -rf vimcfg/.* ~/

使用vim

  • 打開空的vim編輯器,在bash下輸入 vim 即可
bash$ vim 
open_empty.gif
  • 退出vim
在vim里輸入 :q 然后回車
  • 用vim編輯main.cpp,注意下面圖中退出時候我用的是:q! 加!號表示強制退出,這個是習(xí)慣問題,就好比我在vs中寫代碼,當(dāng)寫完一段的時候下意識的按ctrl+shift+s,有時候會按住ctrl+shift+狂點s,我想這個時候我應(yīng)該是已經(jīng)進入高潮了,在vim里打完一段時候下意識的點:w,esc是一樣的,:w就是保存的意思,esc表示退出編輯狀態(tài),而且按esc時候也有狂點esc的毛病,這個會在后面介紹編輯模式時候說到.
bash$ vim main.cpp
open_close.gif
  • 還可以用vim打開一個目錄,比如下面我打開當(dāng)前目錄,便會列出該目錄下的所有文件. 使用j,k可以上下移動光標(biāo),選中想進入的文件后,按回車便可進入該文件,一般在工程
    不熟的時候可以用這個命令在多個文件中切換,如果是自己寫的項目,大多數(shù)文件名都
    在心里記著, 直接vim 文件名前幾個字符+tab補全就可以快速編輯該文件.
bash$ vim .
open_dir.gif
  • 在vim里面切到另一個文件

    • 打開vim后輸入 :e 文件名 可以跳到另一個文件,在下面的ctrl+^演示里會一起演示


      open_in_vim.gif
  • 在最近打開的兩個文件間來回切換,常用于頭文件和cpp間來切換,非常實用

    • ctrl+^ 打開文件后,再用:e 文件名 跳到新文件名,然后按ctrl+^在這兩個文件間來回切換


      swap.gif
  • 移動光標(biāo),是vim里最常用的指令,使用vim的過程,在我看來基本上就是在移動光標(biāo),可以用hjkl也可以用方向鍵,但是強烈建議一開始就用hjkl來控制方向,這樣可以極大的提高代碼編輯速度,因為手可以不用在字母與方向鍵之間來回切換.一打開文件的時候,是正常模式,這個時候可以用hjkl在代碼間來回移動,下面列出常用的移動光標(biāo)指令

    一共有12種:

    • h 對應(yīng) 左, 相當(dāng)于 方向鍵的左


      h.gif
    • l 對應(yīng) 右, 相當(dāng)于 方向鍵的右


      l.gif
    • j 對應(yīng) 下, 相當(dāng)于 方向鍵的下

    • k 對應(yīng) 上, 相當(dāng)于 方向鍵的上


      jk.gif
    • 0 (數(shù)字0)跳到一行的開頭

    • $ 跳到一行的結(jié)尾


      line_start_end.gif
    • e 跳到一個單詞的結(jié)尾


      e.gif
    • b 跳到一個單詞的開頭


      b.gif
    • gg 跳到文件開頭

    • G 跳到文件結(jié)尾


      gg_G.gif
    • ctrl + f 向下翻一頁

    • ctrl + b 向上翻一頁


      ctrl_f_b.gif
  • 下面說插入模式,就是打代碼時候用的,
    這里我引用一下這位同學(xué)宙斯黃的教程,因為這幾句話說起來有點繞蚓峦,為避免歧義,在網(wǎng)上找了一下定義

    這是我常用的4個插入指令:

    • i 在光標(biāo)所在字符前開始輸入文字并進入插入模式


      i.gif
    • a 在光標(biāo)所在字符后開始輸入文字并進入插入模式


      a.gif
    • o (小寫字母o) 在光標(biāo)所在行的下面單獨開一新行來輸入文字并進入插入模式


      o.gif
    • O (大寫字母O) 在光標(biāo)所在行的上面單獨開一新行來輸入文字并進入插入模式济锄。


      shift_o.gif

    下面是經(jīng)過歲月洗禮,漸漸被我遺忘的指令,如果不是寫這篇文章,我可能再也想不起來插入還有下面這些指令,有興趣的可以了解一下,因為我不怎么用,就不介紹了

    • s 刪除光標(biāo)所在的字符并進入插入模式
    • I 在行首開始輸入文字并進入插入模式暑椰。此行首指第一個非空白字符處。如果行首有空格荐绝,則在空格之后輸入文字并進入插入模式
    • A 在行尾開始輸入文字并進入插入模式一汽。這個好用,您不必管光標(biāo)在此行的什麼地方低滩,只要按 A 就會在行尾等著您輸入文字召夹。
    • S 刪除光標(biāo)所在行并進入插入模式
  • 退出插入模式,就是再回到正常模式,嗯,你猜對了就是esc,一個神奇的能讓你高潮的按鍵,下面圖中可以看到我點了o進入插入模式,寫了asb然后esc退出插入模式,上下移動了光標(biāo),再點a進入了插入模式,寫了asb,然后又點了esc退出插入模式,然后又上下移動了幾下,強烈建議大家在看小動圖的時候也新身實踐一下,體驗用vim寫代碼的快感

    • esc


      esc.gif
  • 和刪除相關(guān)的指令,注意使用刪除指令前需要先esc退出插入模式,為方便演示,下面的指令中用到了u,即回退,比如刪掉一行后想撤銷刪除,可以點u

    • dd 刪掉一行


      dd.gif
    • dw 從光標(biāo)刪掉單詞結(jié)尾,下圖中注意我在一個單詞的開頭和中間分別用了dw,可以看出效果的不同


      dw.gif
    • D 從光標(biāo)刪掉到行尾


      D.gif
  • 和復(fù)制相關(guān)的指令,下面的演示中用到了粘貼指令p

    • yy 復(fù)制整行,下圖中用到的指令是 yy + p,即可復(fù)制并粘貼整行


      yy.gif
    • yw 從光標(biāo)開始復(fù)制到單詞的結(jié)尾,下圖中用yw后用o切到了下一行并進入了插入模式,然后esc退出插入模式,再p粘貼


      yw.gif
    • y$ 從光標(biāo)開始復(fù)制到行尾,下圖中用y$后同樣用了o,最后在粘貼完后用了i,tab,tab把代碼對齊


      y_end.gif
  • 粘帖

    • p 嗯就是把剛剛復(fù)制的文本,粘貼到光標(biāo)處
  • 視圖模式,這個功能中可以選中一段代碼,并結(jié)合上面的光標(biāo)和刪除命令達到刪除多行的效果.嗯,Words is cheap, show me the gif!

    • v 在正常模式中,按v可以進入視圖模式,下面演示中用了v+移動光標(biāo)hjkl,可以看到是選中代碼的效果,這樣就可以結(jié)合y復(fù)制,結(jié)合d刪除,后面我們在動圖中會一一演示


      v.gif
    • v+y 實現(xiàn)復(fù)制選中的文本,下圖中用到v+l選中,y復(fù)制選中的文本,o在下行插入,esc退出插入,p粘貼,同理可以用v+j, v+k選中多行,然后復(fù)制,這個可以自己實踐一下


      vyp.gif
    • v+d 實現(xiàn)復(fù)制刪除選中的文本,下圖中用到v+l選中,d刪除選中的文本


      vyd.gif
    • v+e 選中從光標(biāo)到單詞結(jié)尾

    • v+b 選中從光標(biāo)到單詞開頭

    • v+0 選中從光標(biāo)到行頭的文本

    • v+$ 選中從光標(biāo)到行尾的文本

    • v+gg 選中從光標(biāo)到文件開頭

    • v+G 選中從光標(biāo)到文件結(jié)尾

    • v+ctrl+f 向下翻頁并選中從光標(biāo)到下一頁的文本

    • v+ctrl+b 向上翻頁并選中從光標(biāo)到上一頁的文本

    從以上幾個選中的指令中可以看到對移動光標(biāo)的熟練程度直接影響了vim編輯的熟練度,所以當(dāng)我們一開始用vim時候應(yīng)該有意無意的多移動光標(biāo),當(dāng)能做到光標(biāo)隨著眼睛動的時候基本上就練成九陽神功了.

    • 重點講一下ctrl+v,表示選中一塊代碼,可以實現(xiàn)一些神奇的效果,同樣上圖就清楚了,下面我先用了ctrl+v,然后移動光標(biāo)選中一塊代碼后,用了d刪除選中的代碼,又用u撤銷刪除了,其中一個細節(jié)就是每次做完一個操作后恕沫,都習(xí)慣性的用esc+:w保存了一下


      ctrl_v.gif
    • 同樣的ctrl+v也可以和其他移動光標(biāo)的指令結(jié)合實現(xiàn)選中不同文本的效果,因為和上面差不多,我在這里就不一一演示了,動圖已經(jīng)動到吐血了.

  • 替換

    • r 在正常模式下(就是按esc后)輸入r可以替換光標(biāo)所在字符


      r.gif
    • R 替換多個字符


      shift_r.gif
    • /void 搜索void, 按n跳到下一個void,shift+n跳到上一個void


      search.gif
    • 在光標(biāo)所在處單詞按*(shift+8) 表示搜索當(dāng)前光標(biāo)所在處的單詞


      shift_8.gif

下面講命令模式,命令模式水太深,我這里只講我常用的幾個指令,后面大家入門后可以自己根據(jù)喜好用不同的命令

在正常模式下輸入:號即進入命令模式

  • :w 保存文件

  • :q 退出vim

  • :q! 強制退出

  • :qwa! 強制保存退出所有打開的文件,這里說一嘴vim *.cpp即可打開該目錄下的所有cpp文件,:n可以切到下一個文件,我用的不多,所以不做詳細介紹

  • :set nu 顯示行號

  • :set nonu 隱藏行號


    set_nu.gif
  • :10 跳到第10行


    go_line.gif
  • :/10:20s/void/1234/g 把從10-20行的所有void換為1234,下圖中把void換成abcd后用了u撤銷替換


    replace_lines.gif
  • :/10:20s/^////g 把10-20行加上單行注釋// 下圖中有個細節(jié)是用/@搜過@字符用來去掉黃色高亮,因為文件中并沒有@符號,自然就不顯示高亮了


    comment.gif
  • cope的使用

    • :cope 在下面打開一個小窗口,這里可以輸出一些命令

    • 使用ctrl+w+w在兩個窗口間跳轉(zhuǎn)

    • :q 會退出所在窗口


      cope_open.gif
    • 在cope中用 :make 會在這里顯示make的輸出


      cope_make.gif
    • 在cope中用 :grep somewords . -rn 用來搜過 somewords,搜出來后會顯示在這個小窗口监憎,上下移動再回車會快速在定位到目標(biāo)文件的目標(biāo)行,非常實用,在cope窗口一樣可以用/搜索文本


      cope_grep.gif

嗯!掌握以上用法基本上可以滿足日常需求了,最后祝大家都能享受在vim中寫代碼的快感.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市婶溯,隨后出現(xiàn)的幾起案子鲸阔,更是在濱河造成了極大的恐慌偷霉,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件褐筛,死亡現(xiàn)場離奇詭異类少,居然都是意外死亡,警方通過查閱死者的電腦和手機渔扎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門瞒滴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赞警,你說我怎么就攤上這事÷擦剑” “怎么了愧旦?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長定罢。 經(jīng)常有香客問我笤虫,道長,這世上最難降的妖魔是什么祖凫? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任琼蚯,我火速辦了婚禮,結(jié)果婚禮上惠况,老公的妹妹穿的比我還像新娘遭庶。我一直安慰自己,他們只是感情好稠屠,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布峦睡。 她就那樣靜靜地躺著,像睡著了一般权埠。 火紅的嫁衣襯著肌膚如雪榨了。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天攘蔽,我揣著相機與錄音龙屉,去河邊找鬼。 笑死满俗,一個胖子當(dāng)著我的面吹牛转捕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播漫雷,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼瓜富,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了降盹?” 一聲冷哼從身側(cè)響起与柑,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤谤辜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后价捧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丑念,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年结蟋,在試婚紗的時候發(fā)現(xiàn)自己被綠了脯倚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡嵌屎,死狀恐怖推正,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宝惰,我是刑警寧澤植榕,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站尼夺,受9級特大地震影響尊残,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜淤堵,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一寝衫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拐邪,春花似錦慰毅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽郎嫁。三九已至昼牛,卻和暖如春奄容,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背啡邑。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工贱勃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谤逼。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓贵扰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親流部。 傳聞我的和親對象是個殘疾皇子戚绕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345