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

專職C++

不能停止的腳步

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  163 Posts :: 7 Stories :: 135 Comments :: 0 Trackbacks

常用鏈接

留言簿(28)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

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

瀏覽代碼

首先,我們先從瀏覽代碼開始。有時候,我們需要看多個文件,所以,傳統的做法是,我們開多個tty終端,每個tty里用Vim打開一個文件,然后來回切換。這很沒有什么效率。我們希望在一個Vim里打開多個文件,甚至瀏覽程序目錄。

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

:E

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

這個界面中,你可以用 j, k 鍵上下移動,然后回車,進入一個目錄,或是找開一個文件。你可以看到上面有一堆命令:

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

當然,打開的文件會把現有已打開的文件給沖掉——也就是說你只看到了一個文件。

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

:cd <dir> – 改變當前目錄

:pwd  - 查看當前目錄

緩沖區

其實,你用:E 瀏覽打開的文件都沒有被關閉,這些文件都在緩沖區中。你可以用下面的命令來查看緩沖區:

:ls

于是,在你的Vim下,你會看到如下界面:

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

:buffer 4

或是:

:buffer src/http/ngx_http.c

注意,

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

你還可以動用如下命令,快速切換:

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

上圖中,我們還可以看到5有一個%a,這表示當前文件,相關的標記如下:

- (非活動的緩沖區)
a (當前被激活緩沖區)
h (隱藏的緩沖區)
% (當前的緩沖區)
# (交換緩沖區)
= (只讀緩沖區)
+ (已經更改的緩沖區)

窗口分屏瀏覽

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

把當前窗口上下分屏,并在下面進行目錄瀏覽:

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

如果你要在上面,你就在 :He后面加個 !,

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

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

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

下圖是分別用:He 和 :Ve搞出來的同時看三個文件:

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

分屏同步移動

要讓兩個分屏中的文件同步移動,很簡單,你需要到需要同步移動的兩個屏中都輸入如下命令(相當于使用“鐵鎖連環”):

:set scb

如果你需要解開,那么就輸入下面的命令:

:set scb!

注:set scb 是 set scrollbind 的簡寫。

Tab頁瀏覽目錄

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

:Te  全稱是 :Texplorer

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

我們要在多個Tabe頁中切換,在normal模式下,你可以使用下面三個按鍵(注意沒有冒號):

gt   – 到下一個頁

gT  - 到前一個頁

{i} gt   – i是數字,到指定頁,比如:5 gt 就是到第5頁

你可以以使用 【:tabm {n}】來切換Tab頁。

gvim應該是:Ctrl+PgDn 和 Ctrl+PgUp 來在各個頁中切換。

如果你想看看你現在打開的窗口和Tab的情況,你可以使用下面的命令:

:tabs

于是你可以看到:

使用如下命令可以關閉tab:(當然,我更喜歡使用傳統的:q, :wq來關閉)

:tabclose [i] – 如果后面指定了數字,那就關閉指定頁,如果沒有就關閉當前頁

最后提一下,如果你在Shell命令行下,你可以使用 vim 的 -p 參數來用Tab頁的方式打開多個文件,比如:

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

保存會話

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

:mksession ~/.mysession.vim

如果文件重復,vim默認會報錯,如果你想強行寫入的話,你可以在mksession后加! :

:mksession! ~/.mysession.vim

于是下次,你可以這樣打開這個會話:

vim -S ~/.mysession.vim

保存完會話后,你也沒有必要一個一個Tab/Windows的去Close。你可以簡單地使用:

:qa   – 退出全部 

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

Quickfix

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

:cw

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

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

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

你可以使用下面的命令而不用回到quickfix中來:

:cp 跳到上一個錯誤

:cn 跳到下一個錯誤

:cl 列出所有錯誤

:cc 顯示錯誤詳細信息

下面我們來看另一個quickfix的功能。

如果你用過vim的cscope插件,你就知道cscope可以用來查找相當的代碼,但cscope需要事先生成一個數據庫,對一些簡單的查找,其實,我們用vim的grep命令就可以了,不需要專門為之生成數據庫。vim的grep命令和shell的幾乎一樣。

我們來看個例子:

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

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

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

然后同上面一樣,你可以用 j,k 鍵移動quickfix里的光標到相應的行,然后按回車定位文件,或是使用【:cn】或【:cp】來移動到定位。(這樣,你會把多個文件打開到緩沖區,別忘了【:ls】來查看緩沖區)

你看,到這里,一個小小的IDE就這樣產生了,而且,最帥的時,我們連一點插件都沒有裝,也沒有在.vimrc文件中配置過什么。

關鍵字補全

我們還是堅持不用任何插件。我們來看看是怎么個自動補全的。

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

Ctrl +N】  - 當你按下這它時,你會發現Vim就開始搜索你這個目錄下的代碼,搜索完成了就會出現一個下拉列表(居然是粉紫色的,真是丑死了)

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

Ctrl + P】 – 接下來你可以按這個鍵,于是回到原點,然后你可以按上下光標鍵來選擇相應的Word。

對于上面那個例子,我們按下了Ctrl+P后出現下面的這個樣子。我們可以看到,光標回到了一開始我輸入的位置,然后你可以干兩件事,一個是繼續輸入(這可以幫助過濾關鍵詞),另一個是用“光標鍵”上移或下移來選擇下拉列表中的關鍵字,選好后回車,就補全了。

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

  • Ctrl + X 和 Ctrl + D 宏定義補齊
  • Ctrl + X 和 Ctrl + ] 是Tag 補齊
  • Ctrl + X 和 Ctrl + F 是文件名 補齊
  • Ctrl + X 和 Ctrl + I 也是關鍵詞補齊,但是關鍵后會有個文件名,告訴你這個關鍵詞在哪個文件中
  • Ctrl + X 和 Ctrl +V 是表達式補齊
  • Ctrl + X 和 Ctrl +L 這可以對整個行補齊,變態吧。

其它技巧

字符相關

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

【gUU】 – 把一行的文件變成全大寫?;蚴恰綱U】

按【v】鍵進入選擇模式,然后移動光標選擇你要的文本,按【u】轉小寫,按【U】轉大寫

【ga】 –  查看光標處字符的ascii碼

【g8】 – 查看光標處字符的utf-8編碼

【gf】  - 打開光標處所指的文件 (這個命令在打到#include頭文件時挺好用的,當然,僅限于有路徑的)

【*】或【#】在當前文件中搜索當前光標的單詞

縮進相關

【>>】向右給它進當前行 【<<】向左縮進當前行

【=】  - 縮進當前行 (和上面不一樣的是,它會對齊縮進)

【=%】 – 把光標位置移到語句塊的括號上,然后按=%,縮進整個語句塊(%是括號匹配)

【G=gg】 或是 【gg=G】  - 縮進整個文件(G是到文件結尾,gg是到文件開頭)

復制粘貼相關

按【v】 鍵進入選擇模式,然后按h,j,k,l移動光標,選擇文本,然后按 【y】 進行復制,按 【p】 進行粘貼。

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

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

光標移動相關

【Ctrl + O】向后回退你的光標移動

【Ctrl + I 】向前追趕你的光標移動

這兩個快捷鍵很有用,可以在Tab頁和Windows中向前和向后trace你的光標鍵,這也方便你跳轉光標。

讀取Shell命令相關

【:r!date】 插入日期

上面這個命令,:r 是:read的縮寫,!是表明要運行一個shell命令,意思是我要把shell命令的輸出讀到vim里來。

vim的終級插件

CentOS下:yum erase emacs

Ubuntu下:apt-get remove emacs

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

(:wq)

posted on 2014-05-06 23:03 冬瓜 閱讀(284) 評論(0)  編輯 收藏 引用 所屬分類: 轉貼
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            在线亚洲欧美专区二区| 久久久精品午夜少妇| 欧美精品一区二区三区在线看午夜| 亚洲在线视频| 亚洲女女做受ⅹxx高潮| 中文日韩电影网站| 亚洲一区亚洲二区| 亚洲欧美美女| 久久精品国产亚洲5555| 久久久欧美精品| 欧美成熟视频| 亚洲免费成人| 亚洲欧美日韩国产精品| 欧美在线一二三四区| 久久人人爽国产| 欧美激情va永久在线播放| 亚洲图片在线观看| 欧美寡妇偷汉性猛交| 欧美巨乳波霸| 欧美视频在线观看免费| 国产九九精品视频| 亚洲国产精品一区二区三区| 99精品国产高清一区二区| 亚洲免费观看高清完整版在线观看| 亚洲第一中文字幕| 香蕉成人久久| 亚洲国产精品专区久久| 亚洲国产精品黑人久久久| 亚洲一区二区不卡免费| 久久久中精品2020中文| 欧美日韩1080p| 黄色精品网站| 午夜精品久久久久久久久久久久| 免费成人美女女| 亚洲午夜激情| 欧美激情第三页| 黄色成人在线网站| 亚洲男人的天堂在线aⅴ视频| 久久精品国产一区二区三| 日韩亚洲欧美精品| 久久久久久网| 欧美视频久久| 亚洲全黄一级网站| 久久精品亚洲国产奇米99| 亚洲精品永久免费| 久久国产乱子精品免费女| 欧美日韩一区在线| 亚洲电影在线播放| 午夜一级久久| 日韩亚洲欧美高清| 欧美成人久久| 国产精品羞羞答答| 亚洲精品中文字幕在线观看| 久久综合久久88| 校园激情久久| 国产精品免费一区二区三区在线观看 | 一区二区动漫| 欧美国产综合视频| 久久精品主播| 一区一区视频| 看片网站欧美日韩| 午夜精品影院在线观看| 国产精品sm| 亚洲午夜电影| 夜夜嗨av一区二区三区网站四季av| 免费一级欧美片在线观看| 在线观看欧美成人| 久久综合久久综合久久| 欧美在线日韩在线| 一区二区在线观看av| 国产精品对白刺激久久久| 久久综合婷婷| 亚洲福利视频三区| 欧美激情bt| 欧美乱妇高清无乱码| 日韩亚洲一区在线播放| 亚洲精品国产视频| 欧美日韩亚洲一区三区| 亚洲一区网站| 一区二区免费看| 国产乱人伦精品一区二区| 久久成人资源| 狂野欧美性猛交xxxx巴西| 亚洲国产欧美在线人成| 亚洲精品老司机| 国产精品欧美日韩一区二区| 久久精品亚洲一区二区| 美女视频一区免费观看| 一本久久综合亚洲鲁鲁| 亚洲欧美日韩成人| 在线看欧美日韩| 999亚洲国产精| 国产精品一区二区男女羞羞无遮挡 | 欧美日韩精品二区| 欧美一级视频免费在线观看| 欧美一级欧美一级在线播放| 在线日本成人| 一区二区欧美精品| 亚洲国产导航| 亚洲欧美国产日韩天堂区| 影音先锋另类| 一本久久综合| 伊人春色精品| 日韩一级免费| 有码中文亚洲精品| 中文在线资源观看网站视频免费不卡 | 黄色一区二区三区四区| 亚洲国产成人精品久久久国产成人一区| 欧美日韩ab| 久久国产精品一区二区三区四区 | 国产亚洲观看| 亚洲精品少妇网址| 欲香欲色天天天综合和网| 亚洲香蕉在线观看| 亚洲人www| 久久久www成人免费精品| 亚洲免费人成在线视频观看| 免费亚洲电影在线观看| 久久精品国产一区二区三| 久久精品中文字幕一区二区三区 | 久热re这里精品视频在线6| 欧美激情一二三区| 久久精品国产一区二区电影 | 亚洲精品国产精品久久清纯直播| 99精品国产在热久久下载| 影音先锋久久| 欧美在线观看天堂一区二区三区| 亚洲丝袜av一区| 欧美精品色一区二区三区| 欧美插天视频在线播放| 狠狠综合久久av一区二区小说| 午夜在线电影亚洲一区| 亚洲资源av| 欧美日韩在线观看视频| 最近中文字幕mv在线一区二区三区四区| 国产日韩欧美一区在线| 亚洲天堂网在线观看| 亚洲一区欧美激情| 欧美视频一区二区| 日韩亚洲国产精品| 夜夜嗨av一区二区三区网页 | 欧美区视频在线观看| 亚洲欧美日韩一区二区在线| 麻豆免费精品视频| 欧美刺激午夜性久久久久久久| 在线日韩av片| 久久综合狠狠综合久久综合88| 久久婷婷综合激情| 黄色成人在线网址| 开元免费观看欧美电视剧网站| 欧美成人免费在线视频| 亚洲国产精品久久久久婷婷老年| 免费日韩av| 亚洲黄色高清| 亚洲私人影吧| 国产自产高清不卡| 久久天天综合| 亚洲国产第一页| 99精品国产热久久91蜜凸| 欧美日韩在线看| 午夜精品久久久久99热蜜桃导演| 亚洲女女女同性video| 国产一区二区三区的电影 | 老司机免费视频一区二区| 亚洲第一毛片| 亚洲一区在线视频| 国内精品久久久久影院优| 久久综合九色九九| 亚洲精品一线二线三线无人区| 午夜精品久久久久久久久久久| 狠狠色狠色综合曰曰| 欧美大香线蕉线伊人久久国产精品| 亚洲卡通欧美制服中文| 久久精品国产综合精品| 91久久久久久国产精品| 国产精品久久久久久av下载红粉| 久久成人资源| 亚洲精品国产无天堂网2021| 国产欧美日韩一区| 国产麻豆精品在线观看| 午夜精品三级视频福利| 农村妇女精品| 亚洲永久免费精品| 激情综合久久| 国产精品国产三级国产aⅴ入口| 欧美一区亚洲二区| 亚洲国内精品| 久久久一二三| 中文欧美日韩| 狠狠色狠狠色综合日日五| 欧美日本一道本在线视频| 亚洲综合好骚| 亚洲激情第一页| 久久久久www| 亚洲欧美99| 亚洲精品中文字幕有码专区| 黑人巨大精品欧美一区二区小视频 | 国产精品久久久一区二区| 猛男gaygay欧美视频| 欧美伊人影院|