




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
VI/VIM終極教程第四版VimViVi普遍被ViEmacs1999EmacsLinuxworld20002Vim贏得了SlashdotBeanieEmacsVimEmacs同樣都是非常優秀的文本編輯器。目錄簡介發展歷史學習方法高效的讀代碼版本信息EmacsVim展開簡介發展歷史學習方法高效的讀代碼版本信息EmacsVim展開簡介Vim是從vi別豐富,在程序員中被廣泛使用。和EmacsUnix[1]使用vim先知道其設計理念是很重要的,有助于記憶,舉一反三;1.vim的設計理念是組合;:Vimvim的設計理念是命"dd"含義是刪除,"j"鍵代表移動到下一行,組合后"dj"刪除當前行和下一行。另外還可以指定命令重復次(兩次故組合后含義是刪除到光標開始到行首間的內容(不包含光標);"d$"$"代表行尾,刪除到行尾的內容(包含光標);用/模式間的組合:在普通模式中,有很多方法可以進入插入模式。比較普通的方式是按"a"(append/追加)鍵或者"i"(insert/插入)鍵。,;^$w等vim;寫代碼的時候手需要時刻保持在鍵盤上,隨機定位代碼、隨機刪除代碼、移動代碼、插入代;順序寫、設置字體格式、翻頁讀多于隨機寫刪除操作,且每個動作之間本身就有很多的停頓,UI)VIM高效vim進行操作只會徒增你的:vim,C,java入門50)發展歷史BramMoolenaar在80Amiga上還沒有他最常用的編輯viBram從一個開源的vi復制Stevie開始,開發了Vim的1.0版本。最初的目標只是完全復制viVimVi模擬1991年Vim1.14版被"FredFishDisk#591"這個Amiga用的免費軟體集所收錄了。1992年1.22版本的m被移植到了X和Sm的全名就變成i(改良)了。在這之后,Vim加入了不計其數的新功能。做為第一個里程碑的是1994年的3.0版本加入了多視窗編輯模式(分割視窗。從那之后,同一熒幕可以顯示的Vim編輯文件數可以1996年發布的Vim4.01998年5.0版本的Vim加入了highlight(語法高亮)2001年的Vim6.0版本加入了代碼折疊、2006年5月發布的Vim7.0版更加入了拼字檢查、上下文相關補完,標簽頁編輯等新功能。2008年8月發布的Vim7.2,該版本合并了vim7.120100815,vim7.3主要功能vi多緩沖編輯任意個數的分割窗口(橫,豎)具備列表和字典功能的腳本語言可以在腳本中調用Perl,Ruby,Python,Tcl,MzScheme,C,C++單詞縮寫功能動態單詞補完對應400種以上文本文件的語法高亮C/C++,Perl,Java,Ruby,Python40種以上語言的自動縮排ctags的標簽中跳轉崩潰后文件恢復光標位置和打開的緩沖狀態的保存復原(session功能)可以對兩個文件進行差分,同步功能的diff模式遠程文件編輯。[1]學習方法Vimvimvi已經改良了不少,但是初次使用還是會vim2vim且vim(完成大部分的編輯工vim有過百條命令對應編輯vimvim用在日常的文本編輯中vim技能就上升一級。其實,Vim與其它編輯器一個很大的區別在于,它可以完成復雜的編輯與格式化功能.在這些領域還少有軟件能與它分庭抗禮,但是,與所有的靈活性的代價一樣,你需要用自己的雙手來實現它.這在事實上造成了用戶在使用Vim過程中的幾個自然階段.notepad,word,edit,,Vim的使用對你,.對三種工作模式的不解甚至使你認為它是一個充滿BUG.事實上,這些起初看起來古怪的特性是Vim(或者是的作者和它的用戶們在自己漫長的文字編輯和程序設計生涯中總結出來的最快速最實在的操作,在幾乎等于計算機本身歷史的成長期中,,無用的特性或糟糕的設計在Vim用戶.Vim.第二個階段你開始熟悉一些基本的操作,這些操作足以應付你日常的工作,你使用這些操作.但這些階段你仍然很少去碰Vim.notepad,edit.第三個階段,,冗長而乏味,有沒有更好的辦法.于是,UNIX,,:helpxxx的大門.開始.,實用性.不過這卻是你擁有魔力的第一步.接下來,你開始認識到這些咒語背后的真經,開始偷偷修改一些奇怪的符號,于是,奇跡產生了,魔力不但仍然有效,而且真實地作用于你..但這個過程并非是達到某個臨界狀態后的一路坦途,,,看似MissionImpossible的任務.這是你使用Vim的最后一個階段,..開始以敲入i18n來輸入internationalization,開始讓Vim替你糾正經常把the誤teh,Vim,開始寫越來越長的script,.Vim完成高效的編輯而高度緊張.你開始在Vim郵件列表里提一些確實是問題的問題.也開始發現你在VimSHELL.事實上你已經成了一個無可救藥的Vim骨灰級玩家.,高效率移動1、在插入模式之外VIM“啞巴”編輯器一樣。很多新手都會一直呆在插入模式里面,因為這樣易于使用。但VIM的強大之處在于他的命令模式!你會發現,在你越來越了解VIM間使用插入模式了。2、使用h、j、k、l使用VIMVIM,你就不用頻繁的在箭頭hj、l你就會發現這樣操作的高效之處了。在你編輯你的電子郵件或者其他有段落的文本時VIM看來是一個大的長長的行。這時你可以在按h、j、k或者l之前鍵入一個g,這樣VIM就會按屏幕上面的行如你所愿的移動了。3、在當前行里面有效的移動光標很多編輯器只提供了簡單的命令來控制光標的移動(/尾等VIM則提供了很多強大的命令來滿足你控制光標的欲望。當光標從一點移動到另外一點,在這兩點之間的文本(包括這兩個點)“”,這里的命令也被稱作是motion(簡單說明一下,后面會用到這個重要的概念)4、常用到的一些命令(motion)fxx;來重復你的上一個f命令。tx:和上面的命令類似,但是是移動到x的左邊一個位置。(這真的很有用)Fx:和fx類似,不過是往回找。使用,來重復上一個F:和tx類似,不過是往回移動到x的右邊一個位置。b:光標往前移動一個詞。w:光標往后移動一個詞。0:移動光標到當前行首(是數字^:移動光標到當前行的第一個字母位置。$:移動光標到行尾。):移動光標到下一個句子。(5、在整個文件里面有效移動光標VIM有很多命令,可以用來到達文件里面你想到達的地方。下面是一些在文件里面移動的命令:<Ctrl-f>:向下移動一屏。<Ctrl-u>:向上移動半屏。[2]G:到文件尾:移動光標到指定的行(比如G就是到第0行)gg:到文件首H:移動光標到屏幕上面ML:移動光標到屏幕下面*:讀取光標處的字符串,并且移動光標到它再次出現的地方。#:和上面的類似,但是是往反方向尋找。:從當前光標處開始搜索字符串,并且到達text出現的地方。必須使用回車來開n移動到下個text移動到上一個text處。?text:和上面類似,但是是反方向。a-z你看不見書簽的存在,但它確實已經在那里了。`a:到書簽a處。注意這個不是單引號,它一般位于大部分鍵盤的1的左邊。`.:到你上次編輯文件的地方。這個命令很有用,而且你不用自己去標記它。[]{}()然后通過%高效的輸入1、使用關鍵詞自動完成VIM有一個非常漂亮的關鍵詞自動完成系統。這表示,你可以輸入一個長詞的一部分,然后按一下某個鍵,然后VIM為iAmALongAndAwkwardVarName在你寫的代碼的某個地方。也許你不想每回都自己一個一個字母的去輸入它。使用關鍵詞自動完成功能,你只需要輸入開始幾個字母(比如,然后按(按住Ctrl,再按N)或者。如果VIM沒有給出你想要的詞,繼續按,直到你滿意為止,VIM會一直循環它找到的匹配的字符串。2、聰明的進入插入模式很多新手進入插入模式都只是用i。這樣當然可以進入插入模式,但通常不是那么合適,因為VIM提供了很多進入插入模式的命令。下面是最常用的一些:i:在當前字符的左邊插入I:在當前行首插入a:在當前字符的右邊插入A:在當前行尾插入o:在當前行下面插入一個新行Oc{motion}:刪除motiont(但不包括,然后進入插入模式。被刪除的字符被存在了剪貼板里面,并且可以再粘貼出來。d{motion}:和上面差不多,但是不進入插入模式。3、有效的移動大段的文本使用可視選擇(visualselections)和合適的選擇模式不像最初的VI,VIM允許你高亮(選擇)模式:v:按字符選擇。經常使用的模式,所以親自嘗試一下它。V<C-V>:按塊選擇。非常強大,只在很少的編輯器中才有這樣的功能。你可以選擇一個矩形塊,并且在這個矩形里面的文本會被高亮。(wVjj將會高亮當前行以及下面兩行。4、在可視選擇模式下剪切和拷貝一旦你高亮了選區,你或許想進行一些操作:d:剪貼選擇的內容到剪貼板。y:拷貝選擇的內容到剪貼板。c在非可視選擇模式下剪切和拷貝會節省時間:d{motion}:剪切motiondw會剪切一個詞而dfS會將從當前光標到下一個S之間的字符剪切至剪貼板。y{motion}:和上面類似,不過是拷貝。c{motion}:和d{motion}類似,不過最后進入插入模式。dd:剪切當前行。yy:拷貝當前行。ccD:剪切從光標位置到行尾到剪貼板。Y:拷貝當前行。C:和D類似,最后進入插入模式。x:剪切當前字符到剪貼板。sx5、粘貼粘貼很簡單,按p。6、使用多重剪貼板很多編輯器都只提供了一個剪貼板。VIM有很多。剪貼板在VIM里面被稱為寄存器”。最好使用VIM占用了。使用寄存器的命令為雙引號“。比如:我們要拷貝當前行到寄存器k。你應該按“kyy(你也可以使用V”ky。為什么這樣也可以呢?)現在當前行應該已經存在了寄存器k器k“kp來粘貼寄存器k里面的內容到你想要的位置。7、避免重復令人驚奇的.命令在VI.(小數點符號“dw”(刪除一個詞,I將會接著再刪除一個詞。8、使用數字使用數字也是VIM強大的而且很節省時間的重要特性之一。在很多VIM的命令之前都可以使用一個數字,這個數字將會告訴VIM這個命令需要執行幾次。比如:3j將會把光標向下移動三行。10dd將會刪除十行。y3t″將會拷貝從當前光標到第三個出現的引號之間的內容到剪貼板。數字是擴展motion命令作用域非常有效的方法。高效的讀代碼建議在vim上安裝Taglist+cscope+ctags插件有利于高效讀代碼,有利于學習![3]1、安裝對于小編我來說我使用的是Ubuntu,安裝軟件一般使用的命令是apt-getinstall***!對于vim+Taglist+cscope+ctags組合編輯器的創建,vim,cscope,ctags安裝起來比較方便使用上述命令即可安裝!(對于不同的LinuxFedorayum命令安裝)對于Taglist使用這個方法安裝不了,我們需要先下載,然后安裝完成:首先上網下載Taglist插件,下載完成后解壓,再將文件下的taglist.vim使用cp命令拷貝到HOME/.vim/plugin文件夾下(cp-rtaglist.vim~/.vim/plugin)2、vim的配置vim是一個非常好用的編輯工具,以下介紹幾個常用的底行模式命令:(1).設置縮進:setsmartindent//設置縮進:setsmartindentshiftwidth=4//C語言自動縮進,縮進值為4個字符寬度(2).顯示光標行列信息:setruler//顯示光標信息(右下角)(3).查看制表符:setlist//顯示制表符,以^符號顯示制表符的位置(4).查看行數信息:setnumber//顯示行號(左邊)(5).關鍵字高亮:syntaxon//關鍵字高亮(6).多文件編輯,在編寫程序時有可能需要同時編輯多個文件,在這種情況下,需要如下設置:splittwo.c//多文件編輯當然,如果不嫌麻煩,可以在每次打開Vim時輸入如上命令,如我經常用的是:setnumber:setruler:syntaxon:setsmartindent命令,如果將平時在底行模式下輸入的命令直接寫入配置文件,則以后使用Vim時不用再次輸入這些命令。首先,試著在Vi的底行模式下輸入如下命令,如果不支持的話,去下載一個Vim的全版本,sudoapt-getinstall。以(1).找到Vimrc文件。查看文件的權限:ls-lvimrcshisir@shisir-desktop:/usr/share/vim$cd/etc/vimshisir@shisir-desktop:/etc/vim$lsgvimrcvimrcvimrc.tinyshisir@shisir-desktop:/etc/vim$ls-lvimrc-r--r--r--1rootroot24922009-04-1008:08vimrc如果沒有寫權限的話,修改權限,使我們可以修改該配置文件sudochmoda+wvimrc根據個人需要將上述命令寫入配置文件比如,我個人的設置是:syntaxon,setruler,setnumber,setsmartindentshiftwidth=4vimrc"顯示行號setnumber"filetypeon"sethistory=1000"自動對齊setautoindentsetcindent"setsmartindent"tab4個空格settabstop=4"4setshiftwidth=4"設置匹配模式,輸入左括號會出現右括號setshowmatch"編輯時顯示光標狀態setruler"快速匹配setincsearch"ifhas("vms")setnobackupelsesetbackupendif"""""""""""""設置開啟ctags"""""""""""""ctags-Rsetautochdir"""""""""""""""""Taglist設置"""""""""""""""""""letTlist_Auto_Open=1letTlist_Ctags_Cmd='/usr/bin/ctags'letTlist_Show_One_File=1letTlist_Exit_OnlyWindow=1""""""""""""""""""""""cscope""""""""""""""""""setcscopequickfix=s-,c-,d-,i-,t-,e-ifhas("cscope")setcsprg=/usr/bin/cscopesetcsto=1setcstsetnocsverb"addanydatabaseincurrentdirectoryiffilereadable("cscope.out")csaddcscope.outendifsetcsverbendif因為我的文檔中的原配置文件已經有了語法高亮:"Vim5andlaterversionssupportsyntaxhighlighting.Uncommentingthenext"lineenablessyntaxhighlightingbydefault.ifhas("syntax")syntaxonendif所以我就沒寫了,您如果vimrc文件里面沒有此項建議自己加上syntaxon設置語法高亮PS:在配置文件中"符號后的內容是注釋,而且在配置文件中是不需要添加符號的,這里關于cscope、ctags和Taglist的設置可以先寫上,后面將對這三個插件有介紹。好了,現在去開一個Vim,編輯一個程序看看,是不是感覺很不一般呢?好了,下面順便演示下,智能補全的用法,我分四種情況:1、前面申明過的變量或者函數名的補全;2、結構體等自建結構的補全;3、STL等標準庫的補全;4、括號、引號等自動匹配補全。對于第一種情況,寫程序的過程中,直接用CTRL+p明了結構體T,想在輸入3、Taglist插件的使用TagList插件,是一款基于在vim如上圖所示)顯示當前的vim插件.在Vim中加載代碼文件后,可以使用以下命令控制taglist:TlistOpen打開并將輸入焦點至于標簽列表窗口,效果如上圖所示:TlistClose關閉標簽列表窗口:TlistToggle切換標簽列表窗口狀態(打開←→關閉),標簽列表窗口是否獲得焦點取決于其他配置ctl-w+w或ctl-w+方向鍵窗口切換(taglist本質上是一個vim分隔窗口,因此可以使用ctl-w在Taglist窗口主要有以下操作按F1:打開幫助回車鍵:跳到光標所在的標記的定義處(如將光標移到main函數,按回車鍵)o:新建一個窗口,跳到標記定義處p:預覽標記定義(仍然在taglist窗口)空格:顯示標記的原型(如函數原型)u:taglistu)s:()d:taglist文件vif1.c,f2.cf1.c)x:ntaglist窗口+:展開(指標記)-:折疊*:全部展開=:全部折疊[[:將光標移到前一個文件的起點]]:將光標移到后一個文件的起點q:退出taglist窗口F1:關閉幫助4、ctags插件的使用VIMVIMvitutor20VIM,vim的用法。但是對于LinuxC/C++的程序員,使用VIM+Ctags的^_^盡管ctags也可以支持其它編輯器,但是它正式支持的只有VIM。并且VIM中已經默認安裝了Ctags,它可以幫助程序員很容易地瀏覽源代碼。熟練的使用s僅需記住下面七條命令(很簡單吧,呵呵)$ctags–R*($LinuxShell)$vi–ttagtag):ts(ts助記字:tagslistVI):tp(tp此命令不常用,可以不用記:tn(tn助記字:tagsnext此命令不常用,可以不用記Ctrl+]跳到光標所在函數或者結構體的定義處Ctrl+T返回查找或跳轉下面我們逐條的解釋上面的命令:“$ctags–R(當前目錄“*”表示所有文件。這條命令會在當前目錄下產生一個“tags”文件,當用戶在當前目錄中運行vitagsTags文件中包括這些對象的列表:用#define定義的宏枚舉型變量的值函數的定義、原型和聲明名字空間(namespace)類型定義(typedefs)變量(包括定義和聲明)類、結構、枚舉類型)和聯合)類、結構和聯合中成員變量或函數VIM用這個“tags”文件來定位上面這些做了標記的對象。剩下的命令就是定位這些對象的方法:“$vi–ttag”:在運行vim的時候加上“-t”參數,例如:[/usr/src]$vim-tmain變量或函數或其它)的文件,并把光標定位到這一行。如果這個變量或函數有多處定義,在VI命令就能列出一個列表供用戶選擇。tp”tagtag標記文件。當然,若當前tags文件中用戶所查找的變量或函數名只有一命令不可用。(“Ctrl+]”,這樣就能直接跳到這個變量或函數定義的源文件中,并把光標定位到這一行。用“Ctrl+T”可以退回原來的地方。即使用戶使用了N次“Ctrl+]”N個變量,按N次“Ctrl+t”也能回到最初打開的文件,它^_^vim“tags”文件所在的目錄下運行。否則,運行vim的時候還要用文件的路徑,這樣vims文件(。5、cscope插件的使用e是一個類似s的工具。你可以把它想作是超過頻的強大很多。在Vim里,通過cscope一樣在函數等等之間便捷的跳轉。VIMcscope“cscopecscope“cscopeVIM8cscope的查詢功能,如下:例如,我work()findcwork”,回車后發現沒有找到匹配的功能,可能并沒有函數調用work()“:csfindswork”,查找這個符vimegrep程序的功能。cscopecscope.out文件vim命令行下執行:(vimrc中有這一步):csaddcscope.out在vim命令行下執行::cshelpcscopecommands:add:Addanewdatabase(Usage:addfile|dir[pre-path][flags])find:Queryforapattern(Usage:findc|d|e|f|g|i|s|tname)c:Findfunctionscallingthisfunction//查找調用本函數的函數d:Findfunctionscalledbythisfunction//查找本函數調用的函數e:Findthisegreppattern//查找egrep模式,相當于egrep功能,但查找速度快多了f:Findthisfile//查找并打開文件,類似vim的find功能g:Findthisdefinition//查找函數、宏、枚舉等定義的位置,類似ctags的功能i:Findfiles#includingthisfile//查找包含本文件的文件s:FindthisCsymbol//查找C語言符號,即查找函數名、宏、枚舉值等出現的地方t:Findassignmentsto//查找指定的字符串help:Showthismessage(Usage:help)VIM命令kill:Killaconnection(Usage:kill#)reset:Reinitallconnections(Usage:reset)show:Showconnections(Usage:show)cscopedo_fork函數的定義:vim:csfgdo_fork版本信息Emacs和Vim二款神一樣
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 助產學第1版試題及答案
- 老師禮儀試題及答案
- 2025年交通運輸專業考試題及答案詳解
- java面試題及答案108題
- 軟件設計師設計理念總結試題及答案
- 迭代2025年西方政治制度試題及答案
- 西方政治制度的合法性與治理效率試題及答案
- 軟考網絡工程師考試復習時間管理試題及答案
- 軟件設計師跨領域學習試題及答案
- 軟考網絡工程師面向未來的技能需求試題及答案
- 新編簡明英語語言學教程 第二版 戴煒棟10 Language Acquisition課件
- 檔案歸檔流程圖
- 特選2023年成人高考專升本政治考試真題及參考答案
- 古埃及神話課件
- (完整版)漢密爾頓焦慮量表(HAMA)
- DB13-T2330-2016濱海鹽土鹽地堿蓬種植技術規程
- 現代寫作教程全套課件
- DB51∕T 1349-2011 油菜脫粒機-行業標準
- 金融投資類必讀書目大匯總新
- 2021年人教版七年級數學下冊計算類專項訓練卷 【含答案】
- 小型雕刻機結構設計說明書
評論
0/150
提交評論