青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

專職C++

不能停止的腳步

  C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  163 Posts :: 7 Stories :: 135 Comments :: 0 Trackbacks

常用鏈接

留言簿(28)

我參與的團(tuán)隊(duì)

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

原文地址:http://coolshell.cn/articles/11312.html相信大家看過(guò)《簡(jiǎn)明Vim教程》也玩了《Vim大冒險(xiǎn)》的游戲了,相信大家對(duì)Vim都有一個(gè)好的入門了。我在這里把我日常用Vim編程的一些技巧列出來(lái)給大家看看,希望對(duì)大家有用,另外,也是一個(gè)拋磚引玉的過(guò)程,也希望大家把你們的技巧跟貼一下,我會(huì)更新到這篇文章中。另外,這篇文章里的這些技巧全都是vim原生態(tài)的,不需要你安裝什么插件。我的Vim的版本是7.2

瀏覽代碼

首先,我們先從瀏覽代碼開(kāi)始。有時(shí)候,我們需要看多個(gè)文件,所以,傳統(tǒng)的做法是,我們開(kāi)多個(gè)tty終端,每個(gè)tty里用Vim打開(kāi)一個(gè)文件,然后來(lái)回切換。這很沒(méi)有什么效率。我們希望在一個(gè)Vim里打開(kāi)多個(gè)文件,甚至瀏覽程序目錄。

瀏覽目錄的命令很簡(jiǎn)單:(你也可以直接vim一個(gè)目錄)

:E

注意,是大寫。于是,你會(huì)看到下面這樣的界面:

這個(gè)界面中,你可以用 j, k 鍵上下移動(dòng),然后回車,進(jìn)入一個(gè)目錄,或是找開(kāi)一個(gè)文件。你可以看到上面有一堆命令:

  • 【 – 】 到上級(jí)目錄
  • 【D】刪除文件(大寫)
  • 【R】改文件名(大寫)
  • 【s】對(duì)文件排序(小寫)
  • 【x】執(zhí)行文件

當(dāng)然,打開(kāi)的文件會(huì)把現(xiàn)有已打開(kāi)的文件給沖掉——也就是說(shuō)你只看到了一個(gè)文件。

如果你要改變當(dāng)前瀏覽的目錄,或是查看當(dāng)前瀏覽的目錄,你可以使用和shell一樣的命令:

:cd <dir> – 改變當(dāng)前目錄

:pwd  - 查看當(dāng)前目錄

緩沖區(qū)

其實(shí),你用:E 瀏覽打開(kāi)的文件都沒(méi)有被關(guān)閉,這些文件都在緩沖區(qū)中。你可以用下面的命令來(lái)查看緩沖區(qū):

:ls

于是,在你的Vim下,你會(huì)看到如下界面:

你可以看到Vim打開(kāi)了四個(gè)文件,編號(hào)是4,5,6,7,如果你要切換打開(kāi)的文件,這個(gè)時(shí)候,你不要按回車(按了也沒(méi)事,只不過(guò)按了就看不到:ls輸出的buffer列表了),你可以使用下面的命令切換文件(buffer后面的4表示切到4號(hào)文件也就是src/http/ngx_http.c):

:buffer 4

或是:

:buffer src/http/ngx_http.c

注意,

  • 你可以像在Shell中輸入命令按Tab鍵補(bǔ)全一樣補(bǔ)全Vim的命令。
  • 也可以用像gdb一樣用最前面的幾個(gè)字符,只要沒(méi)有沖突。如:buff

你還可以動(dòng)用如下命令,快速切換:

:bnext      縮寫 :bn
:bprevious   縮寫 :bp
:blast  縮寫 :bl
:bfirst 縮寫 :bf

上圖中,我們還可以看到5有一個(gè)%a,這表示當(dāng)前文件,相關(guān)的標(biāo)記如下:

- (非活動(dòng)的緩沖區(qū))
a (當(dāng)前被激活緩沖區(qū))
h (隱藏的緩沖區(qū))
% (當(dāng)前的緩沖區(qū))
# (交換緩沖區(qū))
= (只讀緩沖區(qū))
+ (已經(jīng)更改的緩沖區(qū))

窗口分屏瀏覽

相信你在《Vim的窗口分屏》一文中,你已經(jīng)知道了怎么拆分窗口了。其實(shí),我更多的不是用拆分窗口的命令,而是用瀏覽文件的命令來(lái)分隔窗口。如:

把當(dāng)前窗口上下分屏,并在下面進(jìn)行目錄瀏覽:

:He   全稱為 :Hexplore  (在下邊分屏瀏覽目錄)

如果你要在上面,你就在 :He后面加個(gè) !,

:He!  (在上分屏瀏覽目錄)

如果你要左右分屏的話,你可以這樣:

:Ve 全稱為 :Vexplore (在左邊分屏間瀏覽目錄,要在右邊則是 :Ve!)

下圖是分別用:He 和 :Ve搞出來(lái)的同時(shí)看三個(gè)文件:

在分屏間的跳轉(zhuǎn)和切換在《Vim的窗口分屏》一文中提過(guò)了:先按Ctrl + W,然后按方向鍵:h j k l

分屏同步移動(dòng)

要讓兩個(gè)分屏中的文件同步移動(dòng),很簡(jiǎn)單,你需要到需要同步移動(dòng)的兩個(gè)屏中都輸入如下命令(相當(dāng)于使用“鐵鎖連環(huán)”):

:set scb

如果你需要解開(kāi),那么就輸入下面的命令:

:set scb!

注:set scb 是 set scrollbind 的簡(jiǎn)寫。

Tab頁(yè)瀏覽目錄

分屏可能會(huì)讓你不爽,你可能更喜歡像Chrome這樣的分頁(yè)式的瀏覽,那么你可以用下面的命令:

:Te  全稱是 :Texplorer

下圖中,你可以看到我用Te命令打開(kāi)了三頁(yè),就在頂端我們可以可以看到有三頁(yè),其中第一頁(yè)Tab上的數(shù)字3表示那一頁(yè)有3個(gè)文件。

我們要在多個(gè)Tabe頁(yè)中切換,在normal模式下,你可以使用下面三個(gè)按鍵(注意沒(méi)有冒號(hào)):

gt   – 到下一個(gè)頁(yè)

gT  - 到前一個(gè)頁(yè)

{i} gt   – i是數(shù)字,到指定頁(yè),比如:5 gt 就是到第5頁(yè)

你可以以使用 【:tabm {n}】來(lái)切換Tab頁(yè)。

gvim應(yīng)該是:Ctrl+PgDn 和 Ctrl+PgUp 來(lái)在各個(gè)頁(yè)中切換。

如果你想看看你現(xiàn)在打開(kāi)的窗口和Tab的情況,你可以使用下面的命令:

:tabs

于是你可以看到:

使用如下命令可以關(guān)閉tab:(當(dāng)然,我更喜歡使用傳統(tǒng)的:q, :wq來(lái)關(guān)閉)

:tabclose [i] – 如果后面指定了數(shù)字,那就關(guān)閉指定頁(yè),如果沒(méi)有就關(guān)閉當(dāng)前頁(yè)

最后提一下,如果你在Shell命令行下,你可以使用 vim 的 -p 參數(shù)來(lái)用Tab頁(yè)的方式打開(kāi)多個(gè)文件,比如:

vim -p cool.cpp shell.cpp haoel.cpp
vim -p *.cpp

保存會(huì)話

如果你用Tab或Window打開(kāi)了好些文件的文件,還設(shè)置了各種滾屏同步,或是行號(hào)……,那么,你可以用下面的命令來(lái)保存會(huì)話:(你有興趣你可以看看你的 mysession.vim文件內(nèi)容,也就是一個(gè)批處理文件)

:mksession ~/.mysession.vim

如果文件重復(fù),vim默認(rèn)會(huì)報(bào)錯(cuò),如果你想強(qiáng)行寫入的話,你可以在mksession后加! :

:mksession! ~/.mysession.vim

于是下次,你可以這樣打開(kāi)這個(gè)會(huì)話:

vim -S ~/.mysession.vim

保存完會(huì)話后,你也沒(méi)有必要一個(gè)一個(gè)Tab/Windows的去Close。你可以簡(jiǎn)單地使用:

:qa   – 退出全部 

:wqa  -保存全部并退出全部

Quickfix

假如我們有一個(gè)hello.cpp文件和一個(gè)makefile,于是我們可以直接在vim下輸入 :make , 于是就可以make這個(gè)hello.cpp文件,如果出錯(cuò)了,我們需要按回車返回,這個(gè)時(shí)候,我們可以使用下面的命令來(lái)把出錯(cuò)顯到在vim的分屏中:

:cw

于是,就會(huì)出現(xiàn)下面右邊的那個(gè)樣子:(是不是看上去和我一樣很帥?)

上圖中左邊是我的makefile,右邊是我的錯(cuò)誤百出的源代碼,右邊下面是quickfix窗屏。你可以看到quickfix窗屏指向的第一個(gè)錯(cuò)誤已經(jīng)定位到我們相就錯(cuò)誤的文件行上了。

你可以使用像瀏覽文件那樣用j, k在quckfix窗屏中上下移動(dòng)到相應(yīng)的錯(cuò)誤上然后按回車,然后就可以在上面的窗屏里定位到相應(yīng)的源文件的代碼行。但是,如果是這樣的話, 你要定位下一條錯(cuò)誤還得用Ctrl +W 回到quickfix屏中來(lái)然后重復(fù)來(lái)過(guò)。

你可以使用下面的命令而不用回到quickfix中來(lái):

:cp 跳到上一個(gè)錯(cuò)誤

:cn 跳到下一個(gè)錯(cuò)誤

:cl 列出所有錯(cuò)誤

:cc 顯示錯(cuò)誤詳細(xì)信息

下面我們來(lái)看另一個(gè)quickfix的功能。

如果你用過(guò)vim的cscope插件,你就知道cscope可以用來(lái)查找相當(dāng)?shù)拇a,但cscope需要事先生成一個(gè)數(shù)據(jù)庫(kù),對(duì)一些簡(jiǎn)單的查找,其實(shí),我們用vim的grep命令就可以了,不需要專門為之生成數(shù)據(jù)庫(kù)。vim的grep命令和shell的幾乎一樣。

我們來(lái)看個(gè)例子:

比如我們正在瀏覽nginx的代碼,這時(shí),我想看看哪里用到了nginx的NGX_HTTP_VAR_INDEXED宏。于是,我可以在vim里輸入如下的命令:

:grep -r –include=”*.[ch]” NGX_HTTP_VAR_INDEXED src/

上面這個(gè)命令意思是遞歸查詢src目錄下所有的.c和.h文件,其中包括NGX_HTTP_VAR_INDEXED宏。然后,你就會(huì)看到vim到shell里去執(zhí)行并找到了相關(guān)的文件,按回車返回vim后,別忘了用 【:cw 】把grep的輸出取回來(lái),于是我們就有下面的樣子:

然后同上面一樣,你可以用 j,k 鍵移動(dòng)quickfix里的光標(biāo)到相應(yīng)的行,然后按回車定位文件,或是使用【:cn】或【:cp】來(lái)移動(dòng)到定位。(這樣,你會(huì)把多個(gè)文件打開(kāi)到緩沖區(qū),別忘了【:ls】來(lái)查看緩沖區(qū))

你看,到這里,一個(gè)小小的IDE就這樣產(chǎn)生了,而且,最帥的時(shí),我們連一點(diǎn)插件都沒(méi)有裝,也沒(méi)有在.vimrc文件中配置過(guò)什么

關(guān)鍵字補(bǔ)全

我們還是堅(jiān)持不用任何插件。我們來(lái)看看是怎么個(gè)自動(dòng)補(bǔ)全的。

在insert模式下,我們可以按如下快捷鍵:

Ctrl +N】  - 當(dāng)你按下這它時(shí),你會(huì)發(fā)現(xiàn)Vim就開(kāi)始搜索你這個(gè)目錄下的代碼,搜索完成了就會(huì)出現(xiàn)一個(gè)下拉列表(居然是粉紫色的,真是丑死了)

下圖是我輸入了ngx_http_然后按ctrl+n出現(xiàn)的樣子,它已經(jīng)幫我補(bǔ)全了一個(gè),但是我不想要這個(gè)。然后,在Vim的下方我們可以看到狀態(tài)變成了“關(guān)鍵字補(bǔ)全”,然后后面有^N^P的提示,意思就是告訴你還有一個(gè)Ctrl+P.

Ctrl + P】 – 接下來(lái)你可以按這個(gè)鍵,于是回到原點(diǎn),然后你可以按上下光標(biāo)鍵來(lái)選擇相應(yīng)的Word。

對(duì)于上面那個(gè)例子,我們按下了Ctrl+P后出現(xiàn)下面的這個(gè)樣子。我們可以看到,光標(biāo)回到了一開(kāi)始我輸入的位置,然后你可以干兩件事,一個(gè)是繼續(xù)輸入(這可以幫助過(guò)濾關(guān)鍵詞),另一個(gè)是用“光標(biāo)鍵”上移或下移來(lái)選擇下拉列表中的關(guān)鍵字,選好后回車,就補(bǔ)全了。

與此類似的,還有更多的補(bǔ)齊,都在Ctrl +X下面:

  • Ctrl + X 和 Ctrl + D 宏定義補(bǔ)齊
  • Ctrl + X 和 Ctrl + ] 是Tag 補(bǔ)齊
  • Ctrl + X 和 Ctrl + F 是文件名 補(bǔ)齊
  • Ctrl + X 和 Ctrl + I 也是關(guān)鍵詞補(bǔ)齊,但是關(guān)鍵后會(huì)有個(gè)文件名,告訴你這個(gè)關(guān)鍵詞在哪個(gè)文件中
  • Ctrl + X 和 Ctrl +V 是表達(dá)式補(bǔ)齊
  • Ctrl + X 和 Ctrl +L 這可以對(duì)整個(gè)行補(bǔ)齊,變態(tài)吧。

其它技巧

字符相關(guān)

【guu 】 – 把一行的文字變成全小寫。或是【Vu】

【gUU】 – 把一行的文件變成全大寫。或是【VU】

按【v】鍵進(jìn)入選擇模式,然后移動(dòng)光標(biāo)選擇你要的文本,按【u】轉(zhuǎn)小寫,按【U】轉(zhuǎn)大寫

【ga】 –  查看光標(biāo)處字符的ascii碼

【g8】 – 查看光標(biāo)處字符的utf-8編碼

【gf】  - 打開(kāi)光標(biāo)處所指的文件 (這個(gè)命令在打到#include頭文件時(shí)挺好用的,當(dāng)然,僅限于有路徑的)

【*】或【#】在當(dāng)前文件中搜索當(dāng)前光標(biāo)的單詞

縮進(jìn)相關(guān)

【>>】向右給它進(jìn)當(dāng)前行 【<<】向左縮進(jìn)當(dāng)前行

【=】  - 縮進(jìn)當(dāng)前行 (和上面不一樣的是,它會(huì)對(duì)齊縮進(jìn))

【=%】 – 把光標(biāo)位置移到語(yǔ)句塊的括號(hào)上,然后按=%,縮進(jìn)整個(gè)語(yǔ)句塊(%是括號(hào)匹配)

【G=gg】 或是 【gg=G】  - 縮進(jìn)整個(gè)文件(G是到文件結(jié)尾,gg是到文件開(kāi)頭)

復(fù)制粘貼相關(guān)

按【v】 鍵進(jìn)入選擇模式,然后按h,j,k,l移動(dòng)光標(biāo),選擇文本,然后按 【y】 進(jìn)行復(fù)制,按 【p】 進(jìn)行粘貼。

【dd】剪切一行(前面加個(gè)數(shù)字可以剪切n行),【p】粘貼

【yy】復(fù)制一行(前面加個(gè)數(shù)字可以復(fù)制n行),【p】粘貼

光標(biāo)移動(dòng)相關(guān)

【Ctrl + O】向后回退你的光標(biāo)移動(dòng)

【Ctrl + I 】向前追趕你的光標(biāo)移動(dòng)

這兩個(gè)快捷鍵很有用,可以在Tab頁(yè)和Windows中向前和向后trace你的光標(biāo)鍵,這也方便你跳轉(zhuǎn)光標(biāo)。

讀取Shell命令相關(guān)

【:r!date】 插入日期

上面這個(gè)命令,:r 是:read的縮寫,!是表明要運(yùn)行一個(gè)shell命令,意思是我要把shell命令的輸出讀到vim里來(lái)。

vim的終級(jí)插件

CentOS下:yum erase emacs

Ubuntu下:apt-get remove emacs

對(duì)了,以前本站也有一篇小短文《如何在vim中得到你最喜愛(ài)的IDE特性》你也可以看看。

(:wq)

posted on 2014-05-06 23:03 冬瓜 閱讀(284) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 轉(zhuǎn)貼
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            韩国精品在线观看| 国产一区二区三区久久| 日韩网站在线| 亚洲黄色精品| 欧美福利网址| 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美人与禽性xxxxx杂性| 免费av成人在线| 欧美好骚综合网| 国产精品国产三级国产普通话蜜臀| 欧美性色综合| 韩日成人在线| 亚洲精品免费网站| 欧美一区二粉嫩精品国产一线天| 久久精品亚洲一区二区三区浴池| 女主播福利一区| 亚洲视频第一页| 国产美女精品免费电影| 奶水喷射视频一区| 一本色道久久88综合日韩精品| 午夜在线电影亚洲一区| 久久综合久久综合这里只有精品 | 亚洲图色在线| 久久免费偷拍视频| 亚洲美女视频在线观看| 欧美一区高清| 欧美猛交免费看| 精品999在线观看| 亚洲一区二区成人| 亚洲第一网站| 欧美在线黄色| 国产精品国产三级国产普通话三级 | 久久综合伊人77777蜜臀| 日韩视频一区二区三区| 老巨人导航500精品| 国产嫩草一区二区三区在线观看 | 国产亚洲一区精品| 欧美成人精品在线| 亚洲乱码国产乱码精品精| 新67194成人永久网站| 91久久国产自产拍夜夜嗨| 久久精品1区| 国产片一区二区| 亚洲一区免费网站| 欧美福利精品| 久久女同精品一区二区| 国产亚洲精品aa| 欧美一区二区三区免费看 | 麻豆成人小视频| 午夜精彩视频在线观看不卡| 国产精品久久久久av| 在线视频中文亚洲| 亚洲乱码视频| 欧美日韩亚洲一区二区三区| 亚洲乱码精品一二三四区日韩在线| 久久久久久夜| 午夜日韩电影| 国产一区二区在线免费观看| 欧美在线三区| 久久国产毛片| 亚洲国产成人一区| 亚洲电影专区| 欧美人在线视频| 亚洲一区二区精品在线| 亚洲网站视频福利| 国产欧美日韩激情| 免费成人av在线看| 91久久精品一区二区别| 欧美成人精品在线播放| 亚洲欧洲三级| 99精品福利视频| 国产精品乱人伦一区二区| 国产精品99久久久久久久女警| 99视频一区二区三区| 国产精品日韩一区| 久久躁日日躁aaaaxxxx| 老鸭窝91久久精品色噜噜导演| 91久久黄色| 在线视频中文亚洲| 国产一区二区三区av电影 | 欧美日韩dvd在线观看| 亚洲一区二区三区影院| 亚洲综合精品四区| 在线观看成人网| 日韩一二三在线视频播| 国产一区二区三区不卡在线观看| 欧美电影免费观看| 日韩午夜精品视频| 欧美在线视频观看| 亚洲伦伦在线| 亚洲欧美日韩第一区| 在线观看视频欧美| 中国av一区| 亚洲福利视频三区| 一本久久综合亚洲鲁鲁五月天| 久久精品国产99| 久久久99免费视频| 欧美大片免费看| 久久国产99| 欧美日韩妖精视频| 久久人人爽人人爽| 欧美视频一区二区三区四区| 美女脱光内衣内裤视频久久影院| 欧美精品日韩| 麻豆精品传媒视频| 国产精品人成在线观看免费| 亚洲国产mv| 激情欧美日韩一区| 一区二区三区精品国产| 亚洲高清在线视频| 欧美亚洲专区| 亚洲性色视频| 欧美高清在线视频观看不卡| 久久精品国产91精品亚洲| 欧美视频在线观看视频极品 | 亚洲视频免费| 老司机免费视频久久| 久久精品国产一区二区三区| 欧美日韩亚洲一区二区三区| 欧美激情一区二区在线| 国内成人精品视频| 亚洲欧美日韩精品久久久久| 亚洲一品av免费观看| 欧美喷水视频| 亚洲精品久久久蜜桃| 亚洲日本一区二区| 久久久久久一区二区三区| 亚洲欧美国产视频| 欧美成人xxx| 亚洲电影激情视频网站| 狠狠色香婷婷久久亚洲精品| 欧美一区二区免费观在线| 亚洲女同在线| 国产精品成人在线| 中文在线一区| 香蕉精品999视频一区二区| 欧美午夜精品| 亚洲一区二区四区| 欧美中文字幕不卡| 国产伊人精品| 久久综合给合| 最新日韩精品| 亚洲一二三区精品| 国产伦精品一区二区| 欧美一区二区三区在线观看视频| 久久久久久久久蜜桃| 在线播放精品| 欧美第十八页| 亚洲视频在线一区| 亚洲欧美欧美一区二区三区| 国产精品私房写真福利视频 | 亚洲伦理在线| 一区二区欧美日韩| 国产精品麻豆欧美日韩ww| 亚洲视频一区| 久久久久久久久蜜桃| 亚洲激情图片小说视频| 欧美国产在线电影| 亚洲一区二区动漫| 毛片基地黄久久久久久天堂| 亚洲区第一页| 欧美大尺度在线| 亚洲麻豆视频| 久久久国产精彩视频美女艺术照福利| 狠狠久久亚洲欧美专区| 欧美国产丝袜视频| 亚洲免费在线视频| 欧美激情偷拍| 欧美一区亚洲二区| 亚洲肉体裸体xxxx137| 欧美午夜精品久久久久久浪潮| 欧美一区二区高清| 亚洲人成网站在线播| 久久av老司机精品网站导航| 亚洲第一中文字幕| 国产精品国产馆在线真实露脸 | 亚洲特级毛片| 国产一区二区黄| 欧美破处大片在线视频| 亚洲欧美日韩网| 亚洲国产精品久久久久秋霞影院| 亚洲欧美视频一区二区三区| 亚洲国产美女| 国产一区二区中文| 国产精品美女xx| 欧美激情按摩在线| 久久精品亚洲热| 亚洲视频在线观看三级| 亚洲国产导航| 免费在线看成人av| 久久aⅴ乱码一区二区三区| 9人人澡人人爽人人精品| 国精品一区二区三区| 欧美性大战久久久久| 欧美激情麻豆| 亚洲性线免费观看视频成熟| 亚洲在线观看视频| 亚洲精品极品| 亚洲娇小video精品| 欧美激情1区2区|