1. 程式人生 > >強大的vim配置,讓程式設計更隨意

強大的vim配置,讓程式設計更隨意

轉自:http://blog.csdn.net/chary8088/article/details/7715383

花了很長時間整理的,感覺用起來很方便,共享一下。

我的vim配置主要有以下優點:

1.按F5可以直接編譯並執行C、C++、java程式碼以及執行shell指令碼,按“F8”可進行C、C++程式碼的除錯

2.自動插入檔案頭 ,新建C、C++原始檔時自動插入表頭:包括檔名、作者、聯絡方式、建立時間等,讀者可根據需求自行更改

3.對映“Ctrl + A”為全選並複製快捷鍵,方便複製程式碼

4.按“F2”可以直接消除程式碼中的空行

5.“F3”可列出當前目錄檔案,開啟樹狀檔案目錄

6. 支援滑鼠選擇、方向鍵移動

7. 程式碼高亮,自動縮排,顯示行號,顯示狀態行

8.按“Ctrl + P”可自動補全

9.[]、{}、()、""、' '等都自動補全

10.其他功能讀者可以研究以下檔案

 vim本來就是很強大,很方便的編輯器,加上我的程式碼後肯定會如虎添翼,或許讀者使用其他程式語言,可以根據自己的需要進行修改,配置檔案裡面已經加上註釋。

讀者感興趣的話直接複製下面的程式碼到文字檔案,然後把檔案改名為“ .vimrc” (不要忘記前面的“.”),然後把檔案放到使用者資料夾的根目錄下面即可。重新開啟vim即可看到效果。


  1. """"""""""""""""""""""""""""""""""""""""""""""""
    """"""""""""""""""""""""""""""""""""""""""
  2. " 顯示相關    
  3. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  4. "set shortmess=atI   " 啟動的時候不顯示那個援助烏干達兒童的提示    
  5. "winpos 5 5          " 設定視窗位置    
  6. "set lines=40 columns=155    " 設定視窗大小    
  7. "set nu              " 顯示行號    
  8. set go=             " 不要圖形按鈕    
  9. "color asmanian2     " 設定背景主題    
  10. set guifont=Courier_New:h10:cANSI   " 設定字型    
  11. "syntax on           " 語法高亮    
  12. autocmd InsertLeave * se nocul  " 用淺色高亮當前行    
  13. autocmd InsertEnter * se cul    " 用淺色高亮當前行    
  14. "set ruler           " 顯示標尺    
  15. set showcmd         " 輸入的命令顯示出來,看的清楚些    
  16. "set cmdheight=1     " 命令列(在狀態行下)的高度,設定為1
  17. "set whichwrap+=<,>,h,l   " 允許backspace和游標鍵跨越行邊界(不建議)    
  18. "set scrolloff=3     " 游標移動到buffer的頂部和底部時保持3行距離    
  19. set novisualbell    " 不要閃爍(不明白)    
  20. set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}   "狀態行顯示的內容    
  21. set laststatus=1    " 啟動顯示狀態行(1),總是顯示狀態行(2)    
  22. set foldenable      " 允許摺疊    
  23. set foldmethod=manual   " 手動摺疊    
  24. "set background=dark "背景使用黑色   
  25. set nocompatible  "去掉討厭的有關vi一致性模式,避免以前版本的一些bug和侷限    
  26. " 顯示中文幫助  
  27. if version >= 603
  28.     set helplang=cn  
  29.     set encoding=utf-8
  30. endif  
  31. " 設定配色方案  
  32. "colorscheme murphy  
  33. "字型   
  34. "if (has("gui_running"))   
  35. "   set guifont=Bitstream\ Vera\ Sans\ Mono\ 10
  36. "endif   
  37. set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936  
  38. set termencoding=utf-8
  39. set encoding=utf-8
  40. set fileencodings=ucs-bom,utf-8,cp936  
  41. set fileencoding=utf-8"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  42. """""新檔案標題"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  43. "新建.c,.h,.sh,.java檔案,自動插入檔案頭  
  44. autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()"  
  45. ""定義函式SetTitle,自動插入檔案頭  
  46. func SetTitle()  
  47.     "如果檔案型別為.sh檔案  
  48.     if &filetype == 'sh'  
  49.         call setline(1,"\#########################################################################")  
  50.         call append(line("."), "\# File Name: ".expand("%"))  
  51.         call append(line(".")+1, "\# Author: ma6174")  
  52.         call append(line(".")+2, "\# mail: [email protected]")  
  53.         call append(line(".")+3, "\# Created Time: ".strftime("%c"))  
  54.         call append(line(".")+4, "\#########################################################################")  
  55.         call append(line(".")+5, "\#!/bin/bash")  
  56.         call append(line(".")+6, "")  
  57.     else  
  58.         call setline(1, "/*************************************************************************")  
  59.         call append(line("."), "    > File Name: ".expand("%"))  
  60.         call append(line(".")+1, "    > Author: ma6174")  
  61.         call append(line(".")+2, "    > Mail: [email protected] ")  
  62.         call append(line(".")+3, "    > Created Time: ".strftime("%c"))  
  63.         call append(line(".")+4, " ************************************************************************/")  
  64.         call append(line(".")+5, "") 
  65.     endif 
  66.     if &filetype == 'cpp' 
  67.         call append(line(".")+6, "#include<iostream>") 
  68.         call append(line(".")+7, "using namespace std;") 
  69.         call append(line(".")+8, "") 
  70.     endif 
  71.     if &filetype == 'c' 
  72.         call append(line(".")+6, "#include<stdio.h>") 
  73.         call append(line(".")+7, "") 
  74.     endif 
  75.     "新建檔案後,自動定位到檔案末尾 
  76.     autocmd BufNewFile * normal G 
  77. endfunc  
  78. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  79. "鍵盤命令 
  80. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  81. nmap <leader>w :w!<cr> 
  82. nmap <leader>f :find<cr> 
  83. " 對映全選+複製 ctrl+a 
  84. map <C-A> ggVGY 
  85. map! <C-A> <Esc>ggVGY 
  86. map <F12> gg=G 
  87. " 選中狀態下 Ctrl+c 複製 
  88. vmap <C-c> "+y 
  89. "去空行   
  90. nnoremap <F2> :g/^\s*$/d<CR>  
  91. "比較檔案   
  92. nnoremap <C-F2> :vert diffsplit  
  93. "新建標籤   
  94. map <M-F2> :tabnew<CR>   
  95. "列出當前目錄檔案   
  96. map <F3> :tabnew .<CR>   
  97. "開啟樹狀檔案目錄   
  98. map <C-F3> \be   
  99. "C,C++ 按F5編譯執行 
  100. map <F5> :call CompileRunGcc()<CR> 
  101. func! CompileRunGcc() 
  102.     exec "w" 
  103.     if &filetype == 'c' 
  104.         exec "!g++ % -o %<" 
  105.         exec "! ./%<" 
  106.     elseif &filetype == 'cpp' 
  107.         exec "!g++ % -o %<" 
  108.         exec "! ./%<" 
  109.     elseif &filetype == 'java'  
  110.         exec "!javac %"  
  111.         exec "!java %<" 
  112.     elseif &filetype == 'sh' 
  113.         :!./% 
  114.     endif 
  115. endfunc 
  116. "C,C++的除錯 
  117. map <F8> :call Rungdb()<CR> 
  118. func! Rungdb() 
  119.     exec "w" 
  120.     exec "!g++ % -g -o %<" 
  121.     exec "!gdb ./%<" 
  122. endfunc 
  123. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  124. ""實用設定 
  125. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  126. " 設定當檔案被改動時自動載入  
  127. set autoread  
  128. " quickfix模式  
  129. autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr>  
  130. "程式碼補全   
  131. set completeopt=preview,menu   
  132. "允許外掛    
  133. filetype plugin on  
  134. "共享剪貼簿    
  135. set clipboard+=unnamed   
  136. "從不備份    
  137. set nobackup  
  138. "make 執行  
  139. :set makeprg=g++\ -Wall\ \ %  
  140. "自動儲存  
  141. set autowrite  
  142. set ruler                   " 開啟狀態列標尺  
  143. set cursorline              " 突出顯示當前行  
  144. set magic                   " 設定魔術  
  145. set guioptions-=T           " 隱藏工具欄  
  146. set guioptions-=m           " 隱藏選單欄  
  147. "set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\  
  148. " 設定在狀態行顯示的資訊  
  149. set foldcolumn=0
  150. set foldmethod=indent   
  151. set foldlevel=3
  152. set foldenable              " 開始摺疊  
  153. " 不要使用vi的鍵盤模式,而是vim自己的  
  154. set nocompatible  
  155. " 語法高亮  
  156. set syntax=on  
  157. " 去掉輸入錯誤的提示聲音  
  158. set noeb  
  159. " 在處理未儲存或只讀檔案的時候,彈出確認  
  160. set confirm  
  161. " 自動縮排  
  162. set autoindent  
  163. set cindent  
  164. " Tab鍵的寬度  
  165. set tabstop=4
  166. " 統一縮排為4
  167. set softtabstop=4
  168. set shiftwidth=4
  169. " 不要用空格代替製表符  
  170. set noexpandtab  
  171. " 在行和段開始處使用製表符  
  172. set smarttab  
  173. " 顯示行號  
  174. set number  
  175. " 歷史記錄數  
  176. set history=1000
  177. "禁止生成臨時檔案  
  178. set nobackup  
  179. set noswapfile  
  180. "搜尋忽略大小寫  
  181. set ignorecase  
  182. "搜尋逐字元高亮  
  183. set hlsearch  
  184. set incsearch  
  185. "行內替換  
  186. set gdefault  
  187. "編碼設定  
  188. set enc=utf-8
  189. set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936  
  190. "語言設定  
  191. set langmenu=zh_CN.UTF-8
  192. set helplang=cn  
  193. " 我的狀態行顯示的內容(包括檔案型別和解碼)  
  194. "set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}  
  195. "set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]  
  196. " 總是顯示狀態行  
  197. set laststatus=2
  198. " 命令列(在狀態行下)的高度,預設為1,這裡是2
  199. set cmdheight=2
  200. " 偵測檔案型別  
  201. filetype on  
  202. " 載入檔案型別外掛  
  203. filetype plugin on  
  204. " 為特定檔案型別載入相關縮排檔案  
  205. filetype indent on  
  206. " 儲存全域性變數  
  207. set viminfo+=!  
  208. " 帶有如下符號的單詞不要被換行分割  
  209. set iskeyword+=_,$,@,%,#,-
  210. " 字元間插入的畫素行數目  
  211. set linespace=0
  212. " 增強模式中的命令列自動完成操作  
  213. set wildmenu  
  214. " 使回格鍵(backspace)正常處理indent, eol, start等  
  215. set backspace=2
  216. " 允許backspace和游標鍵跨越行邊界  
  217. set whichwrap+=<,>,h,l  
  218. " 可以在buffer的任何地方使用滑鼠(類似office中在工作區雙擊滑鼠定位)  
  219. set mouse=a  
  220. set selection=exclusive  
  221. set selectmode=mouse,key  
  222. " 通過使用: commands命令,告訴我們檔案的哪一行被改變過  
  223. set report=0
  224. " 在被分割的視窗間顯示空白,便於閱讀  
  225. set fillchars=vert:\ ,stl:\ ,stlnc:\  
  226. " 高亮顯示匹配的括號  
  227. set showmatch  
  228. " 匹配括號高亮的時間(單位是十分之一秒)  
  229. set matchtime=1
  230. " 游標移動到buffer的頂部和底部時保持3行距離  
  231. set scrolloff=3
  232. " 為C程式提供自動縮排  
  233. set smartindent  
  234. " 高亮顯示普通txt檔案(需要txt.vim指令碼)  
  235. au BufRead,BufNewFile *  setfiletype txt  
  236. "自動補全  
  237. :inoremap ( ()<ESC>i  
  238. :inoremap ) <c-r>=ClosePair(')')<CR>  
  239. :inoremap { {<CR>}<ESC>O  
  240. :inoremap } <c-r>=ClosePair('}')<CR>  
  241. :inoremap [ []<ESC>i  
  242. :inoremap ] <c-r>=ClosePair(']')<CR>  
  243. :inoremap " ""<ESC>i  
  244. :inoremap ' ''<ESC>i  
  245. function! ClosePair(char)  
  246.     if getline('.')[col('.') - 1] == a:char  
  247.         return"\<Right>"
  248.     else
  249.         return a:char  
  250.     endif  
  251. endfunction  
  252. filetype plugin indent on   
  253. "開啟檔案型別檢測, 加了這句才可以用智慧補全  
  254. set completeopt=longest,menu  
  255. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  256. " CTags的設定    
  257. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  258. let Tlist_Sort_Type = "name"    " 按照名稱排序    
  259. let Tlist_Use_Right_Window = 1  " 在右側顯示視窗    
  260. let Tlist_Compart_Format = 1    " 壓縮方式    
  261. let Tlist_Exist_OnlyWindow = 1  " 如果只有一個buffer,kill視窗也kill掉buffer    
  262. let Tlist_File_Fold_Auto_Close = 0  " 不要關閉其他檔案的tags    
  263. let Tlist_Enable_Fold_Column = 0    " 不要顯示摺疊樹    
  264. autocmd FileType java set tags+=D:\tools\java\tags    
  265. "autocmd FileType h,cpp,cc,c set tags+=D:\tools\cpp\tags    
  266. "let Tlist_Show_One_File=1            "不同時顯示多個檔案的tag,只顯示當前檔案的  
  267. "設定tags    
  268. set tags=tags    
  269. "set autochdir   
  270. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  271. "其他東東  
  272. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  273. "預設開啟Taglist  
  274. let Tlist_Auto_Open=1  
  275. """"""""""""""""""""""""""""""  
  276. " Tag list (ctags)  
  277. """"""""""""""""""""""""""""""""   
  278. let Tlist_Ctags_Cmd = '/usr/bin/ctags'
  279. let Tlist_Show_One_File = 1 "不同時顯示多個檔案的tag,只顯示當前檔案的   
  280. let Tlist_Exit_OnlyWindow = 1 "如果taglist視窗是最後一個視窗,則退出vim   
  281. let Tlist_Use_Right_Window = 1 "在右側視窗中顯示taglist視窗  
  282. " minibufexpl外掛的一般設定  
  283. let g:miniBufExplMapWindowNavVim = 1
  284. let g:miniBufExplMapWindowNavArrows = 1
  285. let g:miniBufExplMapCTabSwitchBufs = 1
  286. let g:miniBufExplModSelTarget = 1


相關推薦

強大vim配置程式設計隨意

轉自:http://blog.csdn.net/chary8088/article/details/7715383 花了很長時間整理的,感覺用起來很方便,共享一下。 我的vim配置主要有以下優點: 1.按F5可以直接編譯並執行C、C++、java程式碼以及執行shell

c 強大vim配置檔案程式設計隨意

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 顯示相關   """"""""""""""""""""""""""""""""""""""""""""""""""""""

Android Studio常用功能配置開發高效(一)

1、程式碼提示不區分大小寫 File | Settings 開啟設定,選擇Editor | General | Code Completion Case sensitive completion

Learun FrameWork 強大工作流引擎OA智能

工作流引擎 力軟開發框架 Learun FrameWork 強大工作流引擎,讓OA更智能 互聯網的發展促使企業在信息化的道路上不斷探索,而隨著企業信息化進程的不斷深入,OA協同辦公的概念也逐步進入大眾的視野。 OA的選型關乎企業的生存發展,除了需要重視“OA技術、OA品牌、OA產品

Linux修改vimrc配置檔案vi貼心

配置 vim 的方法是在使用者主目錄下建立個.vimrc檔案,我一般使用root帳戶,所以就在/root/下建立一個.vimrc檔案:vi /root/.vimrc,以下是我的配置,直接複製貼上進去即可,在使用者目錄下可以建立使用  vim ~/.vimrc  使用者可以根

Unity程式設計技巧:使用巨集定義程式碼整潔實現程式碼和渠道SDK解耦等

筆者從一年前開始做VR開發,移動端PC端的應用都有,因為當前VR市場還很混亂,並且硬體標準太多單我使用過作開發的VR裝置就有5、6種之多,更別說只是用過聽過的裝置,並且每一家的API都不一樣,這也增加了發不同的渠道包的工作量。這裡我將就我使用的只用解決方案

IDEA自定義代碼模板開發快樂

ideaIDEA自定義代碼模板,讓開發更快更快樂IDEA中有個Live Template選項,就是用來自定義代碼模板,來提高編碼效率。1、創建模板,並做基本的變量配置,例如:@Service() $INTER$Impl $INTER${ Logger log = Logger.getLogger($I

智能公交電子站牌為你報告實時交通信息出行方便

智能交通 智慧城市 智能公交站牌 電子公交站牌 近幾年,城市公交大力推進信息化、電子化建設,如構建無人售票系統,實行IC卡收費。隨著經濟的發展,人民生活水平的提高,人民對公共交通出行的要求也越來越高,乘客關註的不僅僅是能否順利出行,而是更多地關心公交車對於到站時間、車輛運行狀況等信息的實時發布

項目管理自己從容

adb adc bdd 技術分享 ef7 分享 media cfb mage 項目管理,讓自己更從容

簡化你的Java代碼工作高效|語言

案例 生物信息 否則 規模 平臺 使用 values apt map 計算機專家在問題求解時非常重視表達式簡潔性的價值。Unix的先驅者Ken Thompson曾經說過非常著名的一句話:“丟棄1000行代碼的那一天是我最有成效的一天之一。”這對於任何一個需要持續支持和維護的

平臺化OA系統組織多需求得以靈活實現

平臺化OA 上千個組織就有上千種OA需求,隨著企業需求的不斷演變,平臺化產品的需求越來越突出: 應用分散,如何統一? 許多組織已經部署了客戶管理、合同管理、費用管理、ERP系統等多套管理軟體,但是這些應用大多是按照業務部門需求,獨立開發,相互之間比較分散; 資料分散,如

強壯好吃的基因編輯術到底是什麼?

矽谷Live / 實地探訪 / 熱點探祕 / 深度探討 如果能夠把你基因中最不滿意的一部分剪除,替換成你更滿意的基因,你希望是什麼?通過重新編輯基因來防止未來得癌症,甚至治癒癌症,是不是很令人振奮? 想必大部分男生都不會拒絕改造“地中海”基因

mp-redux:解耦小程式中的業務與檢視測試容易

專案地址:點我,歡迎star和issue mp-redux 一個用於小程式和輕量級H5應用的狀態管理工具, 使用方法是一個簡化版本的Redux。之所以是適用於輕量級應用,主要是因為沒有實現元件間的資料共享。因此不適合於複雜,龐大的前端應用。 是否你需要使用它? 如果你也和我有同樣的困惑,那麼你就該嘗試

大資料解決方案:挖掘大資料價值選擇有依據

隨著科技的高速發展,資料在人們生活和決策中所佔的比重越來越大,大資料的熱浪已然覆蓋了整個時代。資料顯示,到2020年,中國大資料產業規模或達13626億元。大資料一直在積極賦能眾多產業,包括金融、醫療、農業、教育等,如何在各個行業中深度挖掘大資料價值,讓決策者的選擇有據可依,這就需要專業的大資料解決

自定義gradle程式碼簡潔簽名安全

文章目錄 rootproject下自定義gradle檔案(config.gradle) gradle.properties中設定簽名信息 app下的module中的build.gradle引入依賴 AndroidStudio3.0以

理解五個基本概念像機器學習專家

大多數人可能對機器學習有點恐懼或困惑。 腦子中會有它到底是什麼,它有什麼發展方向,我現在可以通過它掙錢嗎等等這樣的問題。 這些問題的提出都是有依據的。事實上,你可能沒有意識到自己其實多年來一直在訓練機器學習模型。你看過蘋果手機或者是Facebook上的照片吧? 你知道它如何向你展示一組面孔並要求你識別它

學習C語言前知道這些事情快入門

C語言基本常識 計算機語言:把人與計算機之間交流的語言叫做計算機語言 計算機語言分為高階語言和低階語言 高階語言:遠離硬體 低階語言:貼近硬體 指令:是指計算機執行某種操作的命令。它由一串二進位制數碼組成。 一條指令通常由兩個部分組成:操作碼 地址碼。 操作碼:指

Eclipse整合Skept外掛JSON容易編寫JS報錯可快速找出

平時寫JSON格式是使用profile檔案編寫的,JSON太長的話上個一個花括號都不懂哪裡到哪裡,Skept外掛是可以解決這種問題的其中一種。Eclipse沒有自帶對JS程式碼的編譯,所以沒有解析JS程式碼的報錯,skept同時也是一個良好的JS編輯器,可以看出JS程式碼哪裡

Nginx常用遮蔽規則網站安全

Nginx (engine x) 是一個高效能的HTTP和反向代理服務,目前很大一部分網站均使用了Nginx作為WEB伺服器,Nginx雖然非常強大,但預設情況下並不能阻擋惡意訪問,xiaoz整理了一份常用的Nginx遮蔽規則,希望對你有所幫助。 在開始之前,

26個英文字母的另一種讀法容易聽懂

近期看了不少關於戰爭的電影和電視劇,不過都是英文為主的,就當學英語了。裡面經常會說一些軍用的詞彙,簡潔明瞭,感覺碉堡了,就像國內的黑話和切口一樣。例如那款FPS單機遊戲《三角洲部隊》,英文名是《Delta force》,其實Delta是D的另一種讀法。所以查了查這些次的意思,原來是一些縮寫或者特定用詞防止混淆