)用vim寫程式

來源:互聯網
上載者:User
12.12.06用vim寫程式

Posted in Linux相關§Linux at 7:30 pm by zhou.b02
Tags is vim

演算法研究有了小成,要把演算法編成實用的代碼。matlab下的效率實在是低,我只會用c,而且費盡苦心也沒在windows下找到一個好用貼心的純C編譯環境,於是我決定在linux下編程式。環境就是vim+gcc+gdb。

我是個實用主義者,雖然也愛折騰新技術,但是必須在我認為那些功能是使用的這個前提下。vim用了好幾年了,但實際上我只會用其中最簡單的一些操 作,平時夠用了,學了不用也就慢慢忘記了,但是現在要在vim下面編程,估計怎麼也有1萬來行吧,就不夠用了。所以這幾個月發現vim我用的要比以前"高 級"多了。

一下操作在任何一個給介紹vim操作的文檔中都會有,非常簡單,但是我提出來,因為我認為這些對編程特別有用。一下操作加前面加":"的是在command mode下的,不加是在"normal mode"下的。

  • G,$,0,這幾個是在文檔中跳轉的指令,分別可以跳到文檔結尾,行末和行首。
  • :n,比如:0,:200,n是一個數字可以跳到任意一行。
  • :?str,:/str,尋找分別是向上向下尋找,str是要尋找的內容。
  • %,跳轉到對應的括弧處,比如int main(int argc, char* argv[]),把游標放在"("上,%會讓游標跳轉到")",如果游標在"]",%會讓游標跳轉到"["。這個在vim7.0後好像就沒什麼大用了,因為有高亮顯示了。
  • 替換,vim的替換是非常靈活的,具體能用多少,就看個人了。由於我不常用,每次需要複雜一點的替換時我還是要查文檔的,儘管如此我還是認為掌握替換在編寫大型程式的時候可能協助很大。
  • :v,塊操作,最主要用來複製、剪下和粘貼大段的代碼。用法是:v,當前游標和隨後的目標游標之間的地區被高亮,隨後的操作"y"為複製,"d"為剪下,這時這段內容在緩衝區裡,如果還需要把這段內容粘貼到另外的地方,移動游標到這裡"p"。
  • u、Ctrl+R,撤銷和重做。
  • :w file,:wq,:q,編輯完檔案之後:w file是另存,:wq是存檔並退出,:q是退出,當然如果修改過:q是不會讓你退出的要加強制符號"!"變成:q!。
  • :shell,"ctrl+z"+"fg"。在很多情況下,需要退出到shell下去進行一些操作,然後要馬上回來,退出再進入是很麻煩的,有兩 種方法比較快的解決這個問題。:shell,在vim下運行一個新的shell。"ctrl+z"讓vim後台運行,回到shell介面,如果要回到 vim,在shell下敲入fg。這兩個方法原理完全不同,但是我認為往往能完成同一個目的。
  • :make,不退出vim運行本目錄下的make。修改程式bug的時候很方便。
  • 分屏,我覺得這個操作對程式員來說最重要了,時常需要看多個程式檔案,而文本介面下只能看到一個vim介面,我是在windows下用gvim時 學會的分屏,差一句,在gvim下可以學到很多常用的操作熱鍵。Ctrl+W、v縱向分屏,Ctrl+W、n橫向分屏,分屏可以嵌套,Ctrl+W、 Ctrl+W切換畫面焦點。另外,Ctrl+W和其他健組合還可以調整各個分屏,如+"|"可以最大化當前分屏,+"="可以平分兩個分屏等等。

用vim編程還需要對vim進行必要的環境設定。每個使用者的vim環境設定檔是~/.vimrc。以下幾個環境變數有必要配置:

  • set tabstop = n
  • set softtabstop = n
  • set shiftwidth =n
  • set expandtab
  • set cindent
  • syntax on

前4個決定了tab的風格,具體如何設定可以在vim下看help tabstop,裡面提供了4種設定風格。cindent的設定使vim針對C語言實現自動縮排。syntax on開啟了高亮顯示開關。網上還有很多寫好的加入了個人風格的vimrc可以借鑒,大部分都會給編程提供一些額外的便利。

很多程式員還不滿足於此,vim畢竟只是一個編輯器,編程式還是像VC這樣的工具好,能看到所有的函數,能跳轉到聲明處,能補全等等。還好vim相 比其他編輯器,它還是能夠被擴充,現在有很多第三方外掛程式加強了這方面的功能。常見的有ctags、cscope、taglist、 cppcomplete、global等。我現在的環境使ctags+taglist,我個人感覺已經足夠了,cppcomplete能部分實現代碼補 全,我覺得不好用,還是不用了,畢竟我們在文本介面下工作,不能要求太高。

  • ctags:http://ctags.sourceforge.net/ 。這是一個很強的工具,可以分析指定目錄的代碼的關聯關係,在各自目錄下產生tags檔案,vim程式的時候指定了tags檔案就可以讓游標跳轉到函數或者變數聲明的地方。ctags有很多參數我一般這樣用:
  • ctags -R `find sourcedir -name "*.c"` `find headerdir -name "*.h"`
  • 為了方便起見在~/.vimrc裡設定" set tags=./tags " 這樣不用每次在vim裡設tags了。另外有一點非常要注意emacs也有一個ctags,和這個ctags是不一樣的,如果用debian,要用apt -get install exuberant-ctags。
  • taglist:http://www.vim.org/scripts/script.php?script_id=273 。它能在vim左側做一個分屏,顯示這個檔案或者包括其他檔案的tag,這種效果顯然已經和VC裡的效果類似了。

我就是喜歡linux文本介面下簡潔的風格,這樣設定後,在享受這種風格的同時,也提高了編程的效率。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.