欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
一起來(lái) - 程序員的編輯器——VIM

一、VIM的歷史

1976年左右Bill Joy開(kāi)發(fā)了vi,他也是伯克利大學(xué)的畢業(yè)生,后來(lái)他跟其他人一起成立了Sun Microsystems公司并成為了Sun的首席科學(xué)家。一開(kāi)始Bill開(kāi)發(fā)了ex,爾后開(kāi)發(fā)了vi作為ex的visual interface,也就是說(shuō)vi允許一次能看到一屏的文本而非一行,vi也因此得名。

“早期,當鍵盤(pán)和視頻終端成為最新的計算機交互手段時(shí),人們開(kāi)發(fā)了VI。那時(shí)候的鍵盤(pán)不具有目前熟悉的全部功能鍵,所以,VI就設計成只需要打字機的鍵盤(pán)加上退出鍵就能完成對文本的輸入和修改(現在有的還接受一些其他的鍵輸入方式,如光標控制鍵)。盡管看起來(lái)受了限制,不能充分利用現代鍵盤(pán)新增的許多鍵,可是‘禍中有?!?,限制帶來(lái)的好處是手指不離開(kāi)打字區就能完成所有的編輯工作?!?/p>

技術(shù)不斷進(jìn)步,需求也在不斷提高,VI的各種變種也不斷涌現,知名的有nvi,elvis,VIM,vile,yzis,其中移植性最好、特性最多、使用最廣的當屬VIM,VIM主要是Bram Moolenaar開(kāi)發(fā)的。最初Bram在A(yíng)miga計算機上改進(jìn)一個(gè)叫Stevie的VI版本,他稱(chēng)之為“Vi IMitation”。隨著(zhù)功能的逐漸豐富,VIM的含義也就改成了“Vi IMproved”。相比原始的VI,VIM增加的一項最重要的功能便是多級撤銷(xiāo),VI只支持一級撤銷(xiāo)。

[separator]


二、VI/VIM基礎知識

  很多人應該都知道VI是個(gè)有模式的編輯器:編輯模式和命令模式,按ESC回到命令模式,用i或者a進(jìn)入編輯模式,由于區分了模式,導致VI的命令非常簡(jiǎn)潔,而無(wú)模式編輯器比如Emacs,所有的命令都需要加上控制鍵Ctrl或Alt。

    VI繼承了ed的理念,另外也有歷史原因,VI追求的是快捷——啟動(dòng)程序迅速,編輯文本高效,功能專(zhuān)注,而Emacs追求的是功能的豐富強大以及集成帶來(lái)的方便。

在VIM里頭:help mode可以看到VIM的所有模式,主要有如下幾種:
  • Normal mode  即通常所謂的命令模式,在此模式使用a、i、A、I、o、O等進(jìn)入Insert mode
  • Insert mode  即通常所謂的編輯模式,在此模式使用ESC進(jìn)入Normal mode或者Ctrl-o臨時(shí)進(jìn)入Normal mode。
  • Command-line mode 命令行模式,在Normal mode下按冒號進(jìn)入,按ESC取消執行命令或者回車(chē)執行命令,然后回到Normal mode。(Visual Studio.Net也添加了命令行腳本功能,幸甚)
  • Visual mode  即選擇模式(注意跟用鼠標選擇不同),用v,V,C-v或C-q進(jìn)入
  • Select mode  鼠標選擇
  • Replace mode  在Normal mode下按R進(jìn)入,按ESC返回Normal mode,相當于Windows下命令行中按Insert鍵進(jìn)入的覆蓋模式

  從VI/VIM中退出: 按ESC確認返回到Normal mode,然后

  • :wq 保存并退出
  • :q! 不保存并退出
  • :x 退出,如果文件更改則保存
  • ZZ 退出,如果文件更改則保存(按住Shift,再按兩次z)

  VI的命令是非常具有美感的,下面是幾個(gè)例子:

  • i 在光標前插入 I 在行首插入
  • a 在光標后插入 A 在行末插入
  • o 在下一行插入 O 在上一行插入
  • x 刪除當前字符 X 刪除前一個(gè)字符

  類(lèi)似的還有b,B,ge,gE,w,W,e,E,f,F,t,T,這些命令都可以用:help cmdname查到幫助。

  • dd 刪除一行 yy 拷貝一行
  • h j k l 左下上右移動(dòng)光標
  • Ctrl-w h,Ctrl-w j,Ctrl-w k,Ctrl-w l 切換到左下上右窗口

  類(lèi)似ed,VI/VIM的命令大多都可以帶一個(gè)數字前綴或者一個(gè)數字范圍,比如:

  • 5dd 從當前行開(kāi)始刪除5行
  • 5yy 從當前行開(kāi)始拷貝5行
  • 1,3d 刪除1至3行
  • 1,3y 拷貝1至3行 (.代表當前行,$代表最后一行)

  d<motion>,y<motion>,c<motion>,v<motion>分別代表刪除/拷貝/修改/選擇<motion>

  命令指定的范圍,比如
  int main(void)
  {
  ......;
  }

  將光標放在{處,然后輸入v%就可以把大括號中內容選定,然后按=就可以按照C語(yǔ)言格式縮排(:help =可以看到=命令的描述),%命令的作用是跳到匹配處,比如括號之間,C的宏指令#if #else #endif之間。

  int some_ugly_modifier and some_ugly_name (void)
  如果光標放在第一個(gè)s上,想刪除到“(”為止,則輸入dt(就可以了,t(的作用是跳到下一個(gè)
  "("前。

  dG可以從當前位置一直刪除到文件末尾,因為G的作用是跳到文件最后一行。

  VIM的命令可以非??旖莸淖龅揭恍碗s的編輯操作。


  命令解釋如下:

  • %       全文(“%”是“1,$”范圍的縮寫(xiě))
  • s       替換
  • /       搜索字符串開(kāi)始
  • (       左括號
  • \)      開(kāi)始記錄匹配
  • \d+     一個(gè)或多個(gè)數字
  • \)      結束記錄匹配
  • )       右括號
  • /       搜索字符串結束
  • \=      把后面的表達式計算出來(lái)作為替換字符串
  • "("     左括號
  • .       字符串連接運算符
  • (submatch(1) + 1)       把第一個(gè)匹配的結果加一作為一個(gè)整體返回
  • .")"    添上右括號
  • /g      替換字符串結束,g表示替換每一行的所有匹配結果。
  • :set ve=all 使得光標可以定位到屏幕任何位置(缺省下VIM的光標只能放在行內的字符上)
  • gg              到文件第一行
  • /\s\+&\s*$      找以&結尾的行,&前至少一個(gè)空白字符,后0或多個(gè)空白字符
  • qa              記錄宏到寄存器a
  • D               刪除到行尾
  • 78|             定位到第78列
  • i&<ESC>         插入&并返回到命令模式
  • n               查找下一個(gè)&
  • q               停止記錄宏
  • 10000@a         執行一萬(wàn)遍寄存器a中保存的命令
  • :set ve=""      恢復ve缺省值

三、編程輔助

  既然是程序員的編輯器,自然要show一下它的編程輔助功能。

 ?。?) ctags,cscope

  現在的IDE都提供了類(lèi)、函數的索引功能,可以方便的找到某個(gè)類(lèi)或者函數的在哪里定義的,VIM這方面可以利用ctags、cscope做到, Exuberant ctags支持的語(yǔ)言種類(lèi)非常多,UltraEdit的tags功能也是利用的ctags。cscope只支持C,它能實(shí)現Source Insight的一些功能,比如查找某個(gè)函數調用了哪些函數,某個(gè)函數被哪些函數調用。VIM對這兩個(gè)工具集成的非常好,利用它們就可以在源文件中方便的跳轉搜索類(lèi)和函數了。

  Reference:

 ?。?)multi window,multi buffer,multi tab page

  一個(gè)buffer對應一個(gè)文件,它可以對應多個(gè)window,這樣可以方便的對照編輯一個(gè)文件的不同部分,tab page跟現在許多編輯器上常見(jiàn)的標簽頁(yè)意義并不一樣,可以將tab page理解為一個(gè)windows的容器,這樣如果想新建一個(gè)窗口編輯文件但又不想打亂現在的多窗口布局,那么就可以新開(kāi)一個(gè)tab page,把新窗口放到這個(gè)新的tab page里頭。tab page是VIM 7.0不久前新增的特性,目前VIM 7.0還未正式發(fā)布。(此文發(fā)表至PConline時(shí),已經(jīng)正式發(fā)布。)

  •   Reference:
  •   :help windows
  •   :help buffers
  •   :help tabpage

 ?。?) 語(yǔ)法高亮

  VIM發(fā)行版里帶了450多種語(yǔ)言的語(yǔ)法高亮,在其主頁(yè)vim.org上還可以找到更多。

  •   Reference:
  •   :help syntax

 ?。?) 自動(dòng)縮進(jìn)

  在打開(kāi)自動(dòng)縮進(jìn)選項后,VIM會(huì )自動(dòng)的控制縮進(jìn),比如輸入{自動(dòng)向右縮進(jìn)一個(gè)tab字符(具體用什么縮進(jìn)可以配置),輸入}自動(dòng)回退縮進(jìn)。使用=命令可以對選擇的程序塊排版縮進(jìn),這對于整理代碼非常有幫助。另外對選擇的塊用>>和<<命令可以很方便的控制一個(gè)程序塊的縮進(jìn)。

  •   Reference:
  •   :help cindent
  •   :help autoindent
  •   :help smartindent

 ?。?) 類(lèi)和函數列表

  taglist等插件可以提供很方便的類(lèi)和函數列表功能。

 ?。?) 自動(dòng)完成

  VIM在Insert mode下輸入一個(gè)單詞的前幾個(gè)字符,然后用Ctrl-p或者Ctrl-n就可以列出以這些字符開(kāi)頭的單詞,特別在配置了ctags后也能列出頭文件中的符號,特別方便,除此外VIM還有行自動(dòng)完成、文件名自動(dòng)完成等,這點(diǎn)即使是現在強大的IDE也未免不足。

  如果設置了如下選項:

  •   :set wildmode=list:full
  •   :set wildmenu

  則在命令行打開(kāi)文件或者輸入命令時(shí)按Tab(以輸入字符為前綴補全)或者Ctrl-d(列出包含輸入字符的所有匹配項目)自動(dòng)補全,這一功能大大降低了VIM的使用難度。

  另外有許多插件可以實(shí)現許多IDE中的自動(dòng)完成類(lèi)成員的功能,當然,這個(gè)功能還比不上Eclispe、Visual Studio等IDE中的強大,這一點(diǎn)是VIM比較可惜的地方。VIM 7.0引入了Omni Completion,可以自定義匹配完成函數,也許可以彌補這個(gè)缺陷。

  •   Reference: :help ‘complete‘
  •   :help omni-completion

 ?。?) folding

  VIM支持折疊代碼,還可以根據文件中特殊的標記對文件中的行折疊,可以實(shí)現Outline視圖,這可以極大的方便編輯很大的文件。

  Reference: :help fold

 ?。?) quickfix

  許多人對于UNIX開(kāi)發(fā)的印象都是“編輯代碼,退出編輯器,編譯,發(fā)現錯誤,記錄出錯信息,遍輯代碼,退出編輯器,編譯,用gdb調試,再編輯代碼……”,這是古老的VI時(shí)代的事情了,有了VIM的quickfix特性,可以在VIM里編譯然后直接跳到編譯出錯的行,這個(gè)反復的過(guò)程無(wú)需退出編輯器,而且VIM的quickfix特性可以經(jīng)配置后支持不同的編譯器以及不同的語(yǔ)言:只要編譯器在出錯信息里包含文件名和行號。

  不過(guò)比較遺憾的是VIM對于集成調試支持還不好,有些項目嘗試集成GDB到VIM,比如http://skawina.eu.org/mikolaj/vimgdb/http://www.volny.cz/zellerin/gdbvim/,在http://www.vim.org/search.php中的scripts處搜索gdb也可以找到一些插件.這方面Emacs的GUD(Grand Unified Debugger)調試界面要更強大,畢竟GCC/GDB/Emacs是一家。

  Reference: :help quickfix

 ?。?)auto command

  VIM可以在某些事件發(fā)生時(shí)比如打開(kāi)文件、保存文件、切換窗口時(shí)自動(dòng)執行一些VIM命令,VIM的許多插件都利用了這個(gè)功能。常用的一種情況是把某種文件后綴指定到一種文件格式上,比如*.jv指定到Java文件格式,這樣在每次打開(kāi).jv類(lèi)型的文件時(shí)自動(dòng)使用Java的語(yǔ)法高亮:

  :autocmd BufNewFile, BufRead *.jv :set ft=Java

  Reference: :help autocmd.txt

 ?。?0)mode line

  在編輯文件時(shí)常常指定一些選項,比如縮進(jìn)量、是否將制表符轉換成空格等,每次手動(dòng)指定這些選項很麻煩,寫(xiě)到vimrc中卻又成了全局選項,而且換了一份 VIM,原有的設置就丟失了。VIM可以識別文件中的特殊行,自動(dòng)設置一些選項,下面是寫(xiě)在C源文件開(kāi)頭的一個(gè)mode line示例:

  • /* vi:set tw=0 ts=8 sw=8 noet nowrap ft=c fdm=syntax: */
  • /*
  • * File: xxxx.c
  • * Author: xxx
  • */

 


四、強大方便的幫助系統

  使用了那么多軟件,只有VIM和Emacs的幫助系統給筆者方便快捷的感覺(jué),大部分軟件的幫助往往是擺設而已,而VIM的幫助的確是考慮到了自己“help”的身份,利用它能很方便容易的找到想要的東西。

  VIM的幫助是超鏈接形式的,它使用的就是tags,所以可以跟ctags功能一樣按Ctrl-]跳轉到鏈接所指處,按Ctrl-t返回。

  • :help  打開(kāi)幫助首頁(yè),這個(gè)首頁(yè)分類(lèi)非常清楚
  • :help cmd 查找normal mode命令,比如:help dd
  • :help i_cmd 查找insert mode命令,比如:help i_Ctrl-y
  • :help :cmd 查找command-line命令,比如:help :s 
  • :help ‘option 查找選項,比如:help ‘tabstop
如果你記不清命令或者選項的全稱(chēng),那么可以利用Tab或者Ctrl-d的自動(dòng)補全功能。

  :help options 可以找到所有的選項說(shuō)明

  查看某一個(gè)選項的值(實(shí)際上選項是VIM中的一種變量,類(lèi)似SHELL的變量以$符號引用,VIM的選項以&引用,另外VIM的寄存器以@引用):

  :echo &tabstop

五、其它高級功能

 ?。?)寄存器

  VIM里面的寄存器可以用來(lái)保存拷貝的文本、記錄的宏、設置的書(shū)簽等等,一般的編輯器都只有一個(gè)剪切板(MS Office加入了多個(gè)剪切板),而VIM和Emacs編輯器中的多寄存器可以實(shí)現多個(gè)剪切板的功能。VIM中有九類(lèi)寄存器:

  • 無(wú)名寄存器 " 最近一次刪除/修改/替換操作的文本都會(huì )放入這個(gè)寄存器
  • 10個(gè)數字寄存器 0-9 拷貝或者刪除的文本存入這些寄存器,這些寄存器是循環(huán)使用的,在每次存入內容到寄存器1時(shí),原有的內容會(huì )依次存入到后一個(gè)寄存器中。
  • 小刪除寄存器 - 刪除內容少于一行時(shí)放入這個(gè)寄存器。
  • 26個(gè)命名寄存器 a-zA-Z  大小寫(xiě)無(wú)關(guān)。這些寄存器可以在拷貝或者刪除等操作中指定使用。
  • 四個(gè)只讀寄存器  :.%# 特殊用途。
  • 表達式寄存器 = 特殊用途。
  • 選擇和拖放寄存器 *+~ 用于與系統剪切板交互,以及接收拖放操作的內容。
  • 黑洞寄存器 _ 放到這里面的內容都被丟棄,這樣可以刪除或拷貝時(shí)不影響其它寄存器。
  • 最后一次搜索模式寄存器 / 保存最后一次搜索的正則表達式。

  使用:reg命令可以看到所有寄存器中的內容,使用"+y或者"*y可以將visual mode下選擇
  的內容拷貝到系統剪切板,使用"+p或者"*p可以將剪切板中的內容粘貼到VIM中,如果打開(kāi)了
  mswin特性的話(huà)則在insert mode下使用Ctrl-x,Ctrl-v,Ctrl-c了。

  Reference: :help registers

 ?。?) 宏
  Normal mode下按q<reg>,<reg>指{a-zA-Z0-9"}37個(gè)寄存器中的一個(gè),然后可以進(jìn)行任何操作,包括在模式間切換,最后在Normal模式下按q可以結束宏錄制,用@<reg>命令可以應用這個(gè)宏,命令前可以帶數字前綴表示執行多少次這個(gè)宏。

  Reference: :help q

 ?。?) 書(shū)簽

  Normal mode下按m<reg>作書(shū)簽,<reg>指26個(gè)命名寄存器中的一個(gè),然后可以用‘<reg>或者`<reg>跳到書(shū)簽處。

  Reference: :help m

 ?。?) 映射

  VI/VIM可以將某個(gè)按鍵序列映射到一個(gè)命令序列上,比如在配置文件.vimrc(Windows下是_vimrc)中寫(xiě)入

map <F6> <ESC>i<C-R>=strftime("%Y-%m-%d")<ESC><ESC>

  即可以在Normal mode下插入當前日期。

  Reference: :help :map

 ?。?) 縮寫(xiě)

  VI/VIM支持用一個(gè)縮寫(xiě)字符串代替一個(gè)長(cháng)的字符串,比如

  :ab hw hello world

  然后在Insert mode下輸入“hw ”(不包括引號)后VIM就自動(dòng)替換成了“hello world”。這里展示一個(gè)Emacs下abbrev功能的動(dòng)畫(huà)(沒(méi)錯,是Emacs的):

  http://www.bloomington.in.us/~brutt/msf-abbrev.html
  http://www.bloomington.in.us/~brutt/msf-abbrev-demo.gif

  Reference: :help :ab

 ?。?) :s//和:g//,:!g//

  這兩個(gè)命名加上正則表達式,常常能完成非常復雜的編輯任務(wù),可以毫不夸張地說(shuō)是VIM的兩柄瑞士軍刀。:s是替換操作,:g是查找匹配模式的行,:!g是查找不匹配模式的行。

  http://www.vim.org/tips/tip.php?tip_id=1063這個(gè)tip可以把:g找到的行拷貝到一個(gè)新的緩沖區中,非常有用。

  •   Reference: :help :s
  •   :help :g

 ?。?) 插件

  VIM自己有腳本語(yǔ)言,另外也支持用Perl/Python/Tcl/Ruby/Scheme編寫(xiě)插件,這些插件極大的豐富了VIM的功能。

 ?。?) color scheme

  VIM有許多配色方案,下面這個(gè)鏈接有許多配色方案效果的圖樣:http://www.cs.cmu.edu/~maverick/VimColorSchemeTest/

 ?。?) 二進(jìn)制編輯

  VIM可以利用xxd實(shí)現二進(jìn)制編輯,不過(guò)這項功能還是不夠好用。

 ?。?0) sign

  sign指在編輯窗口的最左列顯示一個(gè)標記,利用這個(gè)功能能實(shí)現很多IDE中的書(shū)簽標記或者斷點(diǎn)標記。

  Reference: :help sign

六、VIM Scripts

  VIM script包含幾大類(lèi):

  •   color scheme 配色方案
  •   ftplugin File type插件,特定語(yǔ)言語(yǔ)法的設置,比如如何識別注釋
  •   syntax  語(yǔ)法高亮的配色
  •   plugin  提供額外功能的插件,比如智能完成、緩沖區管理。

  VIM的script安裝非常簡(jiǎn)單,下載的script文件或者壓縮包里頭都有安裝說(shuō)明,在VIM的安裝目錄(比如C:\VIM64)下面有一個(gè) vimfiles目錄,把script放到vimfiles目錄下即可。對于多用戶(hù)系統,可以在HOME目錄(一般是c:\Documents and Settings\ <USER_NAME>\)下面建立一個(gè)vimfiles目錄,把script放置到這里。

  下面是一些好用的VIM插件,具體使用辦法請參考各自。vim文件頭部的注釋。

  BufExplorer.vim  *****
  http://www.vim.org/scripts/script.php?script_id=42
  這個(gè)插件可以使編輯多文件更加方便,裝完插件后Normal mode下輸入\be即可打開(kāi)緩沖區列表,光標放置在某一個(gè)文件上按回車(chē)即可打開(kāi)這個(gè)文件,而緩沖區列表自動(dòng)關(guān)閉。

  Taglist.vim  *****
  http://www.vim.org/scripts/script.php?script_id=273
  這個(gè)插件可以實(shí)現類(lèi)或者函數列表功能,支持C/C++,java,perl,python,tcl,sql,php等語(yǔ)言,它可以在VIM中創(chuàng )建一個(gè)窗口,列出編輯的源文件中的類(lèi)、函數、變量定義列表,而且更方便的是這個(gè)列表也插入在了右鍵菜單中,分類(lèi)存放,訪(fǎng)問(wèn)非常方便。

  TabBar.vim  ***
  http://www.vim.org/scripts/script.php?script_id=1338
  這個(gè)插件實(shí)現了類(lèi)似UltraEdit中的標簽頁(yè)的功能,而且能通過(guò)Alt-<n>來(lái)切換,<n>代表1-9。

  minibufexpl.vim  ***
  http://www.vim.org/scripts/script.php?script_id=159
  實(shí)現了類(lèi)似UltraEdit中的標簽也功能。

  c.vim   ***
  http://www.vim.org/scripts/script.php?script_id=213
  提供了很多便于C/C++編程的功能,比如文件頭模版,代碼片斷等。

  CRefVim   **
  http://www.vim.org/scripts/script.php?script_id=614
  為VIM定制的C參考手冊,這樣對于語(yǔ)法或者函數不清楚的地方可以方便的查找了。

  latex-suite  *****
  http://www.vim.org/scripts/script.php?script_id=475
  http://vim-latex.sf.net/
  提供了很多便于編輯TeX/LaTeX文件的功能,比如在VIM里面編譯或者預覽、自動(dòng)插入TeX標記等。

  word_complete.vim ***
  http://www.vim.org/scripts/script.php?script_id=73
  Insert模式下在輸入的時(shí)候自動(dòng)補全單詞,如果補全正確可以按Tab鍵接受,否則可以不管它繼續輸入或者按Ctrl-n,Ctrl-p切換補全。 注意是輸入三個(gè)字符后才開(kāi)始補全。

  Vim JDE
  http://www.vim.org/scripts/script.php?script_id=1213
  支持C/C++等的自動(dòng)完成(需要VIM 7.0,編譯時(shí)打開(kāi)+ruby特性).

  cppcomplete.vim  **
  http://www.vim.org/scripts/script.php?script_id=527
  能自動(dòng)完成C/C++/Java的結構或類(lèi)成員,注意它的快捷鍵是Alt-l(字母L)不是Alt-i。

  The NEAD Commenter **
  http://www.vim.org/scripts/script.php?script_id=1218
  在許多類(lèi)型的文件中方便的加上注釋或者取消注釋。

  winmanager
  http://www.vim.org/scripts/script.php?script_id=95
  把標準的File Explorer以及Buffer Explorer插件集成在一起,提供現代編輯器中常見(jiàn)的文件列表和緩沖區列表功能。

  sketch.vim ***
  http://www.vim.org/scripts/script.php?script_id=705
  Draw with mouse: boxes, arrows, lines, fills. Transparent/opaque drag and drop.照著(zhù)它的教程做一遍,你就會(huì )震撼于它的創(chuàng )意了。

  DrawIt.vim **
  http://www.vim.org/scripts/script.php?script_id=40
  可以方便的畫(huà)連線(xiàn)圖。

  MultipleSearch  ***
  http://www.vim.org/scripts/script.php?script_id=479
  MultipleSearch2.vim ***
  http://www.vim.org/scripts/script.php?script_id=1183
  Mark.vim  ***
  http://www.vim.org/scripts/script.php?script_id=1238
  otf.vim   **
  http://www.vim.org/scripts/script.php?script_id=634
  這些插件可以同時(shí)高亮顯示多次搜索結果,這個(gè)特性非常有利于顯示代碼中某些變量或函數的調用位置。

  SearchComplete.vim *
  http://www.vim.org/scripts/script.php?script_id=474
  可以用/搜索時(shí)按Tab補全要搜索的單詞。

  Vim Intellisense
  http://insenvim.sourceforge.net
  顧名思義,此插件用于給VIM提供智能完成功能,支持C++,C#,Java,JSP,HTML,SQL,XML,筆者安裝后一直懶得配置,也就沒(méi)用上。

  project
  http://www.vim.org/scripts/script.php?script_id=69
  提供一些IDE功能,看介紹似乎很不錯。

  JavaBrower
  http://www.vim.org/scripts/script.php?script_id=588
  提供文件中Java類(lèi)的樹(shù)狀列表。

  vimspell
  http://www.vim.org/scripts/script.php?script_id=465
  ispell or aspell based spell checker with fly-spelling。

  cream
  http://cream.sourceforge.net/
  一套配置文件,可以把VIM的界面改成CUA(Common User Access)模型,降低VIM的學(xué)習難度,個(gè)人不推薦這種做法,不過(guò)其中有些高級配置值得學(xué)習(有意思的是Emacs也有類(lèi)似的項目: Easymacs,EmacsW32)。

  IComplete
  http://icomplete.sf.net
  搭配VIM 7.0的Omni Complete,可以做到C/C++的智能完成功能.

七、VIM資源

  幾個(gè)學(xué)習正則表達式的工具(from happyvim at newsmth)

  http://www.yzis.org/  yzis是一個(gè)新的VI變種,它支持變寬字體,目前功能還不夠豐富。

  http://ex-vi.sourceforge.net/ 傳統VI的源代碼

八、編譯安裝最新CVS版的VIM

  1. 獲取源代碼

  cvs -z3 -d:pserver:anonymous@cvs.sf.net:/cvsroot/vim co vim7

  源代碼位于當前目錄的vim7目錄下面,假設安裝目標在d:\work\program\Vim\vim70b

  2.編譯

  注意重新編譯前最好clean一下,確?!?obj*”目錄被刪除了,否則可能出現莫名其妙的問(wèn)題,比如鏈接時(shí)找不到一些函數。下面是一個(gè)批處理腳本:

  rem --------------------------------------------->
  @echo off
  set path=c:\winnt;c:\winnt\system32
  vcvars32.bat
  cd vim7\src
  rem .sh文件跟其它程序有關(guān)聯(lián),避免運行VC的link時(shí)執行了link.sh
  ren link.sh link.sh.old
  @echo clean...
  rem clean時(shí)加入這些選項是因為$(OUTDIR)和$(OBJDIR)根據這些標志合成的,
  rem 如果不加這些標志, 在rmdir /s /q時(shí)會(huì )找不到目錄, 從而沒(méi)有刪除掉。
  nmake -f Make_mvc.mak clean FEATURES=HUGE GUI=yes OLE=yes MBYTE=yes IME=yes GDYNAMIC_IME=yes GIME=yes PERL=d:\work\program\Perl DYNAMIC_PERL=yes PERL_VER=58 PYTHON=d:\work\program\Python24 DYNAMIC_PYTHON=yes PYTHON_VER=24  SNIFF=yes CSCOPE=yes CPUNU=i586 DEBUG=yes MAP=lines
  @echo build big debug version...
  nmake -f Make_mvc.mak all FEATURES=HUGE GUI=yes OLE=yes MBYTE=yes IME=yes GDYNAMIC_IME=yes GIME=yes PERL=d:\work\program\Perl DYNAMIC_PERL=yes PERL_VER=58 PYTHON=d:\work\program\Python24 DYNAMIC_PYTHON=yes PYTHON_VER=24  SNIFF=yes CSCOPE=yes CPUNU=i586 DEBUG=yes MAP=lines
  ren link.sh.old link.sh
  @echo done.
  pause
  @echo on
  rem <-----------------------------------------------

  對于MinGW,

  @echo off
  @echo clean...
  make -f Make_ming.mak clean DEBUG=yes
  @echo make...
  make -f Make_ming.mak all GUI=yes OLE=yes MBYTE=yes IME=yes GDYNAMIC_IME=yes GIME=yes PERL=d:/work/program/Perl DYNAMIC_PERL=yes PERL_VER=58 PYTHON=d:/work/program/Python24 DYNAMIC_PYTHON=yes PYTHON_VER=24 CSCOPE=yes CPUNU=i586 DEBUG=yes MAP=lines
  @echo done.
  pause
  @echo on

  如果發(fā)現MinGW編譯出來(lái)的gvimd.exe非常大(約4~5MB),可以用MinGW自帶的strip處理一下。

  3. 安裝

  如果你的系統先前有一份不同版本的VIM,那么需要先卸載掉(運行vim\vimXX\uninstal.exe,或者在拷貝完文件后運行新版VIM的 install.exe,它也會(huì )提示卸載舊版本),最近的VIM 7 CVS代碼安裝目錄也從vim70aa轉變到vim70b,也需要卸載原先的vim70aa,這一步主要是刪除一些注冊表項。

  如果你從CVS上更新代碼后,install要求的安裝目錄名字沒(méi)有改變(也就是說(shuō)VIM版本沒(méi)變),那么不需要卸載原先的版本,直接拷貝文件覆蓋即可,如果你想更改目錄安裝的話(huà)也需要卸載。

  cd vim7
  dir /s/b *.exe
  dir /s/b *.dll
  xcopy vim7\runtime d:\work\program\vim\vim70b (vim70b是一個(gè)目錄)
  copy vim7\src\*.exe  d:\work\program\Vim\vim70b
  copy vim7\src\xxd\xxd.exe d:\work\program\Vim\vim70b
  copy vim7\src\vimtbar.dll d:\work\program\Vim\vim70b
  copy vim7\src\GvimExt\gvimext.dll d:\work\program\Vim\vim70b
  copy vim7\src\VisVim\Visvim.dll d:\work\program\Vim\vim70b

  然后進(jìn)入vim70b目錄運行install.exe,如果發(fā)現一個(gè)DOS窗口一閃而逝,那么很可能是建立的vim70b目錄名不對,比如筆者前幾天升級后使用的仍然是vim70aa目錄名,在DOS窗口中運行install.exe它就提示需要在vim70b目錄下運行,將vim70aa改名即可。 install.exe的源代碼是vim7\src\dosinst.c,這里面修改了注冊表,并拷貝一些文件到WINDOWS目錄下等等。

  4.善后

  視情況你需要更新PATH環(huán)境變量、文件關(guān)聯(lián)、_vimrc中的路徑名等,并將diff.exe,ctags.exe,cscope.exe拷貝到vim70b下面。

  最后運行g(shù)vimd.exe,鍵入:ver開(kāi)始享受VIM吧。

九、一份vimrc配置文件(注:原文如此,不太清楚作者所要表達的信息)

十、VIM的不足

  前面已經(jīng)提到,VIM在自動(dòng)完成和集成調試方面還比不上現代的許多IDE,另外VIM對二進(jìn)制編輯還沒(méi)有UltraEdit強大,對于現在流行的重構, VIM也支持不力,但是作為一個(gè)文本編輯器而言,堪比的只有Emacs,另外Visual SlickEdit也很強大,不過(guò)它是商業(yè)軟件。VIM也可以嵌入到Visual Studio中作為編輯器,另外Code Forge,Eclipse,NetBeans,Sun Visual Workshop等也提供了一定的VIM支持或者鍵綁定。

  •   Reference:
  •   :help workshop
  •   :help netbeans
  •   :help debugger

 

 
http://www.i170.com/Article/51571/trackback

評論:

 
 smoon 于 12-18 09:45 評論  

此文摘自太平洋電腦網(wǎng):
     《程序員的編輯器-----VIM》

相關(guān)VIM資料:
     世界第二的VIM:普通人的編輯利器(上)》
     vim 使用經(jīng)驗》
     《vim手冊》

 
 smoon 于 12-18 09:49 評論  

vim有三種模式-普通(可視命令)模式,命令行模式,編輯模式。啟動(dòng)vim后在任何模式下按Esc鍵進(jìn)入到普通模式。普通模式下輸入 : 回車(chē)進(jìn)入命令行模式,此時(shí)vim最窗口最下面一行為 :    后面可以輸入命令行命令.在執行任何命令前要確保在相應的模式下。
1.啟動(dòng)與退出 
   1)vi filename    (啟動(dòng)vim)
   2)命令行模式下 :wq=> 保存并退出,:q!=>強行退出,:e!=>放棄修改文件內容,重新載入該文件,:x =>退出,文件更改并保存,ZZ =>同:x命令 (退出vim)

 
 smoon 于 12-18 09:49 評論  

2.基本設置-命令行模式下 

  • :set nu 顯示行號
  • :syn on 顯示語(yǔ)法高亮
  • :set shiftwidth=4 設置自動(dòng)縮進(jìn) 4 個(gè)空格, 當然要設自動(dòng)縮進(jìn)先.
  • :set sts=4 即設置 softtabstop 為 4. 輸入 tab 后就跳了 4 格.
  • :set tabstop=4 實(shí)際的 tab 即為 4 個(gè)空格, 而不是缺省的 8 個(gè).
  • :set expandtab 在輸入 tab 后, vim 用恰當的空格來(lái)填充這個(gè) tab.
  • :set suffixes=.bak,~,.o,.h,.info,.swp,.aux,.bbl,.blg,.dvi,.lof,.log,.lot,.ps,.toc
  • 在vim中打開(kāi)文件時(shí), 按 tab 鍵補齊文件名時(shí)它會(huì )忽略上述文件.
  • :set enc=utf-8 設置文字編碼
設置配置文件:
:scriptnames  列出配置文件.vimrc所在的目錄
:version 用戶(hù)所用的配置文件.vimrc的位置

 

 
 smoon 于 12-18 09:49 評論  

3.光標定位(普通模式、可視模式)


$        當前行的末尾
0        當前行的開(kāi)頭
^        當前行第一個(gè)字母
gg       文件頭
G        文件尾
``       回到光標跳轉前的位置
H        跳到屏幕上的第一行
M        跳到屏幕的中間行
L        跳到屏幕上的最后一行
w:      光標以單詞向前移動(dòng)至單詞第一個(gè)字母
b:      與w相反,向后移動(dòng)至單詞的第一個(gè)字母
e:       光標以單詞向前移動(dòng)至單詞最后一字母
ge:      與e相反,向后移動(dòng)至單詞的最后一字母
%:       移動(dòng)到與制匹配的括號上去(),{},[],<>等
CTRL+G  得到當前光標在文件中的位置
向前翻頁(yè):    CTRL+F
向下移動(dòng)半屏:CTRL+G
向后翻頁(yè):    CTRL+B

補記:
.光標定位(普通模式、可視模式)$ 當前行的末尾0 當前行的開(kāi)頭^ 當前行第一個(gè)字母gg 文件頭G 文件尾`` 回到光標跳轉前的位置H 跳到屏幕上的第一行M 跳到屏幕的中間行L 跳到屏幕上的最后一行w: 光標以單詞向前移動(dòng)至單詞第一個(gè)字母b: 與w相反,向后移動(dòng)至單詞的第一個(gè)字母e: 光標以單詞向前移動(dòng)至單詞最后一字母ge: 與e相反,向后移動(dòng)至單詞的最后一字母%: 移動(dòng)到與制匹配的括號上去()...

光標定位技巧的補充:
‘‘ 同`` -- 此命令相當有用, 它移動(dòng)光標到上一個(gè)標記處, 比如用 gd, * 等查
找到某個(gè)單詞后, 再輸入此命令則回到上次停留的位置.

‘. -- 此命令相當好使, 它移動(dòng)光標到上一次的修改行.

`. -- 此命令相當強大, 它移動(dòng)光標到上一次的修改點(diǎn).

 

 
 smoon 于 12-18 09:49 評論  

4.刪除和復制(普通模式、可視模式)


刪除
  • dd:    刪除一行
  • dw:    刪除一個(gè)單詞,需將光標移到單詞的第一個(gè)字母。
  • d$:    刪除當前光標到該行的行尾的字母
  • daw:   刪除一個(gè)單詞,光標在單詞任意位置
  • dnw:   刪除N個(gè)單詞
  • dnj:    向下刪除n行
  • dnk:    向上刪除n行 
  • J:      刪除換行符,將光標移到改行,按shift+j刪除行尾的換行符,下一行接上來(lái)了。
復制:
  • yy:    復制一行
  • yw:    復制一個(gè)單詞,需將光標移到單詞的第一個(gè)字母。
  • yaw:   復制一個(gè)單詞,光標在單詞任意位置
  • ynw:   復制N個(gè)單詞
  • ynj:    向下復制n行
  • ynk:    向上復制n行 
修改:
  • cl:    更改當前字符
  • cw:    修改當前單詞到結尾
  • cc:    修改當前行
粘貼:p,粘貼用x、d、y操作的文本

可視模式下的方式:

可視模式下,選中要編輯的文字,可執行d、y,操作。

寄存器下的操作:
在復制前可以先指定一個(gè)寄存器,方法是在雙引號后跟一個(gè)字母,例如"a指定了寄存器a,"B指定了寄存器B。所以,"ayy把當前行放進(jìn)了寄存器a,以后就可以用"ap來(lái)粘貼寄存器a里的內容了。如果不確定寄存器里放了什么內容,可以使用:reg來(lái)查看。
Vim提供了一個(gè)很有用的特殊寄存器"+,它的內容就是系統剪貼板的內容??梢栽赩im里用"+p粘貼出來(lái)。

 

 
 smoon 于 12-18 09:50 評論  

5.多文件操作
 


  1. :ls :buffers     顯示buffer列表
    :bn                  
    轉到下一個(gè)buffer
    :bp                  
    轉到上一個(gè)
    buffer
    :b 3                 
    轉到編號為 3
    buffer
    :b index.html        
    轉到名為index.html
    buffer
    :sav                 
    另存為
    ……
    :set hidden          
    切換buffer時(shí)不給出保存當前buffer的提示

    CTRL-G               
    查看當前buffer狀態(tài)信息,如文件名、總行數、修改后未保存等。
  2. :sp(:vsp) 文件名      vim 將分割出一個(gè)橫()向窗口, 并在該窗口中打開(kāi)新文件. vim6.0 開(kāi)始, 文件名可以是一個(gè)目錄的名稱(chēng),把該目錄打開(kāi)并顯示文件列表, 在文件名上按回車(chē)則在本窗口打 開(kāi)該文件, 若輸入O 則在新窗口中打開(kāi)該文件, 輸入 ? 可以看 到幫助信息 。                
  3. :e 文件名             vim 將在原窗口中打開(kāi)新的文件, 若舊文件編輯過(guò), 會(huì )要求保存.
  4. c-w-w(即 ctrl 鍵與 w 鍵一同按下) vim 割了好幾個(gè)窗口怎么辦? 輸入此命令可以將光標循環(huán)定位到各個(gè)窗口之中.c-w-h光標到左窗口,c-w-j下窗口,c-w-k上窗口,c-w-l右窗口。
  5. ls         此命令查看本 vim 程序已經(jīng)打開(kāi)了多少個(gè)文件, 在屏幕的最下方
                         
    會(huì )顯示出如下數據:
                          1   %a      "usevim.html"        
    162
                          2   #       "xxxxxx.html"        
    0
                          其中:
                          1              
    表示打開(kāi)的文件序號, 這個(gè)序號很有用處
    .
                          %a             
    表示文件代號, % 表示當前編輯的文件
    ,
                                          #
    表示上次編輯的文件

                          "usevim.html"  
    表示文件名.
                         
    162          表示光標位置.
    :b 序號(代號)         此命令將指定序號(代號)的文件在本窗口打開(kāi), 其中的序號(代號)
                         
    就是用 :ls 命令看到的.
  6. :set diff             此命令用于比較兩個(gè)文件, 可以用
                          :vsp filename
                         
    命令打開(kāi)另一個(gè)文件, 然后在每個(gè)文件窗口中輸入此命令,就能看
                         
    到效果了.

 

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
VIM常用命令
程序員用 vim 編輯代碼的常用技巧
Vi使用
vim替換^M字符
[vim與gvim技巧]vim&gvim技巧大全(5)
編輯器之戰: Vim 的復仇
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久