強大的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即可看到效果。
- """"""""""""""""""""""""""""""""""""""""""""""""
- " 顯示相關
- """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- "set shortmess=atI " 啟動的時候不顯示那個援助烏干達兒童的提示
- "winpos 5 5 " 設定視窗位置
- "set lines=40 columns=155 " 設定視窗大小
- "set nu " 顯示行號
- set go= " 不要圖形按鈕
- "color asmanian2 " 設定背景主題
- set guifont=Courier_New:h10:cANSI " 設定字型
- "syntax on " 語法高亮
- autocmd InsertLeave * se nocul " 用淺色高亮當前行
- autocmd InsertEnter * se cul " 用淺色高亮當前行
- "set ruler " 顯示標尺
- set showcmd " 輸入的命令顯示出來,看的清楚些
- "set cmdheight=1 " 命令列(在狀態行下)的高度,設定為1
- "set whichwrap+=<,>,h,l " 允許backspace和游標鍵跨越行邊界(不建議)
- "set scrolloff=3 " 游標移動到buffer的頂部和底部時保持3行距離
- set novisualbell " 不要閃爍(不明白)
- set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} "狀態行顯示的內容
- set laststatus=1 " 啟動顯示狀態行(1),總是顯示狀態行(2)
- set foldenable " 允許摺疊
- set foldmethod=manual " 手動摺疊
- "set background=dark "背景使用黑色
- set nocompatible "去掉討厭的有關vi一致性模式,避免以前版本的一些bug和侷限
- " 顯示中文幫助
- if version >= 603
- set helplang=cn
- set encoding=utf-8
- endif
- " 設定配色方案
- "colorscheme murphy
- "字型
- "if (has("gui_running"))
- " set guifont=Bitstream\ Vera\ Sans\ Mono\ 10
- "endif
- set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
- set termencoding=utf-8
- set encoding=utf-8
- set fileencodings=ucs-bom,utf-8,cp936
- set fileencoding=utf-8"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- """""新檔案標題""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- "新建.c,.h,.sh,.java檔案,自動插入檔案頭
- autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()"
- ""定義函式SetTitle,自動插入檔案頭
- func SetTitle()
- "如果檔案型別為.sh檔案
- if &filetype == 'sh'
- call setline(1,"\#########################################################################")
- call append(line("."), "\# File Name: ".expand("%"))
- call append(line(".")+1, "\# Author: ma6174")
- call append(line(".")+2, "\# mail: [email protected]")
- call append(line(".")+3, "\# Created Time: ".strftime("%c"))
- call append(line(".")+4, "\#########################################################################")
- call append(line(".")+5, "\#!/bin/bash")
- call append(line(".")+6, "")
- else
- call setline(1, "/*************************************************************************")
- call append(line("."), " > File Name: ".expand("%"))
- call append(line(".")+1, " > Author: ma6174")
- call append(line(".")+2, " > Mail: [email protected] ")
- call append(line(".")+3, " > Created Time: ".strftime("%c"))
- call append(line(".")+4, " ************************************************************************/")
- call append(line(".")+5, "")
- endif
- if &filetype == 'cpp'
- call append(line(".")+6, "#include<iostream>")
- call append(line(".")+7, "using namespace std;")
- call append(line(".")+8, "")
- endif
- if &filetype == 'c'
- call append(line(".")+6, "#include<stdio.h>")
- call append(line(".")+7, "")
- endif
- "新建檔案後,自動定位到檔案末尾
- autocmd BufNewFile * normal G
- endfunc
- """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- "鍵盤命令
- """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- nmap <leader>w :w!<cr>
- nmap <leader>f :find<cr>
- " 對映全選+複製 ctrl+a
- map <C-A> ggVGY
- map! <C-A> <Esc>ggVGY
- map <F12> gg=G
- " 選中狀態下 Ctrl+c 複製
- vmap <C-c> "+y
- "去空行
- nnoremap <F2> :g/^\s*$/d<CR>
- "比較檔案
- nnoremap <C-F2> :vert diffsplit
- "新建標籤
- map <M-F2> :tabnew<CR>
- "列出當前目錄檔案
- map <F3> :tabnew .<CR>
- "開啟樹狀檔案目錄
- map <C-F3> \be
- "C,C++ 按F5編譯執行
- map <F5> :call CompileRunGcc()<CR>
- func! CompileRunGcc()
- exec "w"
- if &filetype == 'c'
- exec "!g++ % -o %<"
- exec "! ./%<"
- elseif &filetype == 'cpp'
- exec "!g++ % -o %<"
- exec "! ./%<"
- elseif &filetype == 'java'
- exec "!javac %"
- exec "!java %<"
- elseif &filetype == 'sh'
- :!./%
- endif
- endfunc
- "C,C++的除錯
- map <F8> :call Rungdb()<CR>
- func! Rungdb()
- exec "w"
- exec "!g++ % -g -o %<"
- exec "!gdb ./%<"
- endfunc
- """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- ""實用設定
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " 設定當檔案被改動時自動載入
- set autoread
- " quickfix模式
- autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr>
- "程式碼補全
- set completeopt=preview,menu
- "允許外掛
- filetype plugin on
- "共享剪貼簿
- set clipboard+=unnamed
- "從不備份
- set nobackup
- "make 執行
- :set makeprg=g++\ -Wall\ \ %
- "自動儲存
- set autowrite
- set ruler " 開啟狀態列標尺
- set cursorline " 突出顯示當前行
- set magic " 設定魔術
- set guioptions-=T " 隱藏工具欄
- set guioptions-=m " 隱藏選單欄
- "set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
- " 設定在狀態行顯示的資訊
- set foldcolumn=0
- set foldmethod=indent
- set foldlevel=3
- set foldenable " 開始摺疊
- " 不要使用vi的鍵盤模式,而是vim自己的
- set nocompatible
- " 語法高亮
- set syntax=on
- " 去掉輸入錯誤的提示聲音
- set noeb
- " 在處理未儲存或只讀檔案的時候,彈出確認
- set confirm
- " 自動縮排
- set autoindent
- set cindent
- " Tab鍵的寬度
- set tabstop=4
- " 統一縮排為4
- set softtabstop=4
- set shiftwidth=4
- " 不要用空格代替製表符
- set noexpandtab
- " 在行和段開始處使用製表符
- set smarttab
- " 顯示行號
- set number
- " 歷史記錄數
- set history=1000
- "禁止生成臨時檔案
- set nobackup
- set noswapfile
- "搜尋忽略大小寫
- set ignorecase
- "搜尋逐字元高亮
- set hlsearch
- set incsearch
- "行內替換
- set gdefault
- "編碼設定
- set enc=utf-8
- set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
- "語言設定
- set langmenu=zh_CN.UTF-8
- set helplang=cn
- " 我的狀態行顯示的內容(包括檔案型別和解碼)
- "set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
- "set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
- " 總是顯示狀態行
- set laststatus=2
- " 命令列(在狀態行下)的高度,預設為1,這裡是2
- set cmdheight=2
- " 偵測檔案型別
- filetype on
- " 載入檔案型別外掛
- filetype plugin on
- " 為特定檔案型別載入相關縮排檔案
- filetype indent on
- " 儲存全域性變數
- set viminfo+=!
- " 帶有如下符號的單詞不要被換行分割
- set iskeyword+=_,$,@,%,#,-
- " 字元間插入的畫素行數目
- set linespace=0
- " 增強模式中的命令列自動完成操作
- set wildmenu
- " 使回格鍵(backspace)正常處理indent, eol, start等
- set backspace=2
- " 允許backspace和游標鍵跨越行邊界
- set whichwrap+=<,>,h,l
- " 可以在buffer的任何地方使用滑鼠(類似office中在工作區雙擊滑鼠定位)
- set mouse=a
- set selection=exclusive
- set selectmode=mouse,key
- " 通過使用: commands命令,告訴我們檔案的哪一行被改變過
- set report=0
- " 在被分割的視窗間顯示空白,便於閱讀
- set fillchars=vert:\ ,stl:\ ,stlnc:\
- " 高亮顯示匹配的括號
- set showmatch
- " 匹配括號高亮的時間(單位是十分之一秒)
- set matchtime=1
- " 游標移動到buffer的頂部和底部時保持3行距離
- set scrolloff=3
- " 為C程式提供自動縮排
- set smartindent
- " 高亮顯示普通txt檔案(需要txt.vim指令碼)
- au BufRead,BufNewFile * setfiletype txt
- "自動補全
- :inoremap ( ()<ESC>i
- :inoremap ) <c-r>=ClosePair(')')<CR>
- :inoremap { {<CR>}<ESC>O
- :inoremap } <c-r>=ClosePair('}')<CR>
- :inoremap [ []<ESC>i
- :inoremap ] <c-r>=ClosePair(']')<CR>
- :inoremap " ""<ESC>i
- :inoremap ' ''<ESC>i
- function! ClosePair(char)
- if getline('.')[col('.') - 1] == a:char
- return"\<Right>"
- else
- return a:char
- endif
- endfunction
- filetype plugin indent on
- "開啟檔案型別檢測, 加了這句才可以用智慧補全
- set completeopt=longest,menu
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " CTags的設定
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- let Tlist_Sort_Type = "name" " 按照名稱排序
- let Tlist_Use_Right_Window = 1 " 在右側顯示視窗
- let Tlist_Compart_Format = 1 " 壓縮方式
- let Tlist_Exist_OnlyWindow = 1 " 如果只有一個buffer,kill視窗也kill掉buffer
- let Tlist_File_Fold_Auto_Close = 0 " 不要關閉其他檔案的tags
- let Tlist_Enable_Fold_Column = 0 " 不要顯示摺疊樹
- autocmd FileType java set tags+=D:\tools\java\tags
- "autocmd FileType h,cpp,cc,c set tags+=D:\tools\cpp\tags
- "let Tlist_Show_One_File=1 "不同時顯示多個檔案的tag,只顯示當前檔案的
- "設定tags
- set tags=tags
- "set autochdir
- """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- "其他東東
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- "預設開啟Taglist
- let Tlist_Auto_Open=1
- """"""""""""""""""""""""""""""
- " Tag list (ctags)
- """"""""""""""""""""""""""""""""
- let Tlist_Ctags_Cmd = '/usr/bin/ctags'
- let Tlist_Show_One_File = 1 "不同時顯示多個檔案的tag,只顯示當前檔案的
- let Tlist_Exit_OnlyWindow = 1 "如果taglist視窗是最後一個視窗,則退出vim
- let Tlist_Use_Right_Window = 1 "在右側視窗中顯示taglist視窗
- " minibufexpl外掛的一般設定
- let g:miniBufExplMapWindowNavVim = 1
- let g:miniBufExplMapWindowNavArrows = 1
- let g:miniBufExplMapCTabSwitchBufs = 1
- 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的另一種讀法。所以查了查這些次的意思,原來是一些縮寫或者特定用詞防止混淆