vim配置(不定时更新)

"判定当前操作系统类型
if has("win32")||has("win95")||has("win64")||has("win16")
let g:iswindows=1
else
let g:iswindows=0
endif

set t_Co=256
set rtp+=~/.vim/bundle/vundle/,~/.vim/bundle/vim-golang/

"=========================================
"vim配置设置
"=========================================

"取消vi兼容
set nocompatible

"将底色设置为淡绿色
"highlight Normal guibg=#CCE8CF

"设置字体
set guifont=Monaco

"允许退格键使用
set backspace=indent,eol,start whichwrap+=<,>,[,]

"禁止备份
set nobackup

"显示行号
set number

"实时匹配搜索文本
set incsearch

"搜索时高亮现实被找到的文本
set hlsearch

"magic模式:除了$.*^之外其他元字符都要加反斜杠
set magic

"开启新行时使用智能自动缩进
set smartindent

"编辑过程中,右下角显示光标位置
set ruler

"自动检测文件类型并加载相应插件以及缩进
filetype plugin indent on

"关于缩进的相关说明
"shiftwidth(缩进的空格数)
"tabstop(制表符的宽度,只是把制表符的缩进量给改了,还是一个tab,所以跨平台时依旧会出现不一致)
"expandtab(是否在缩进和遇到Tab键时使用空格替代,主要是保证跨平台时缩进的一致性;使用noexpandtab取消设置)
"softtabstop(软制表符宽度,设置为非零数值后使用Tab键和Backspace时光标移动的格数等于该数值,但实际插入的字符仍受tabstop和expandtab控制)
"autoindent(自动缩进,即每行的缩进值与上一行相等;使用noautoindent取消设置)
set tabstop=8
set softtabstop=4
set shiftwidth=4
set expandtab

"设置显示编码
set enc=utf-8

"设置打开文件编码
set fencs=utf-8,GB18030

"设置开启语法高亮
syntax on

"设置leader键
let mapleader = ","

"智能补全
autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
autocmd FileType c set omnifunc=ccomplete#Complete
autocmd FileType java set omnifunc=javacomplete#Complete

"F2显示或隐藏菜单栏
set guioptions-=m
set guioptions-=T
map <silent> <F2> :if &guioptions =~# 'T' <Bar>
\set guioptions-=T <Bar>
\set guioptions-=m <bar>
\else <Bar>
\set guioptions+=T <Bar>
\set guioptions+=m <Bar>
\endif<CR>

"=================================
"vim按键映射
"=================================

"映射按键:剪切版、全选,系统有效
vmap <C-c> "+y
vmap <C-x> "+x
nmap <C-v> "+gP
vmap <C-v> "+gP
nmap <C-a> ggVG

"某些terminal下的vim alt key映射需要转成^[的形式
"ctrl+v ESC即可输入^[
if has("gui_running")
"智能补全
imap <M-/> <C-X><C-N>
"insert模式下将光标移动到行尾
imap <M-;> <Esc><S-a>
"insert模式下的光标的左右移动
imap <M-h> <Left>
imap <M-l> <Right>
imap <M-k> <up>
imap <M-j> <down>
else
"智能补全
imap ^[/ <C-X><C-N>
"insert模式下将光标移动到行尾
imap ^[; <Esc><S-a>
"insert模式下的光标的左右移动
imap ^[h <Left>
imap ^[l <Right>
imap ^[k <up>
imap ^[j <down>
endif

"运行Python脚本的按键映射
map <F12> :!"python" %<CR>

"运行gcc编译
"在windows下配置,则需要在%<后面加上.exe
func Compile()
exec "w"
"C程序
if &filetype == 'c'
exec "!gcc -Wall -std=c99 % -g -lm -o %<"
"c++程序
elseif &filetype == 'cpp'
exec "!g++ -Wall -enable-auto-import % -g -lm -o %<"
"Java程序
elseif &filetype == 'java'
exec "!javac %"
endif
endfunc
"结束定义Compile

"定义Run函数
"./是当前目录,在windows下会报错
func Run()
if &filetype == 'c' || &filetype == 'cpp'
exec "!./%<"
elseif &filetype == 'java'
exec "!java %<"
elseif &filetype == 'go'
exec "!go run %"
endif
endfunc
"结束定义Run

"运行gcc编译并执行
"在windows下配置,则需要在%<后面加上.exe
func CompileRun()
exec "w"
"C程序
if &filetype == 'c'
exec "!gcc -Wall -std=c99 % -g -lm -o %<"
exec "!./%<"
"c++程序
elseif &filetype == 'cpp'
exec "!g++ -Wall -enable-auto-import % -g -lm -o %<"
exec "!./%<"
"Java程序
elseif &filetype == 'java'
exec "!javac %"
exec "!java %<"
"Go程序
elseif &filetype == 'go'
exec "!go run %"
endif
endfunc
"结束定义CompileRun

"定义Debug函数,用来调试程序
func Debug()
exec "w"
"C程序
if &filetype == 'c'
exec "!gcc -std=c99 % -g -lm -o %<"
exec "!gdb %<"
elseif &filetype == 'cpp'
exec "!g++ % -g -lm -o %<"
exec "!gdb %<"
"Java程序
elseif &filetype == 'java'
exec "!javac %"
exec "!jdb %<"
endif
endfunc
"结束定义Debug
"设置程序的运行和调试的快捷键
map <F9> :call Compile()<CR>
map <F10> :call Run()<CR>
map <F11> :call Debug()<CR>
map <F12> :call CompileRun()<CR>

"==================================
"ctags配置
"==================================
"当前目录找不到tag元文件,则向上查找
set tags=tags;
"设置当前目录为当前打开文件所在目录
set autochdir

"==================================
"taglist配置
"==================================

"不同时显示多个文件的tag,只显示当前文件的
let Tlist_Show_One_File=1
"如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Exit_OnlyWindow=1

"==================================
"WinManager配置
"==================================

let g:NERDTree_title='NERD Tree'
let g:winManagerWindowLayout='NERDTree|TagList'
function! NERDTree_Start()
exec 'NERDTree'
endfunction

function! NERDTree_IsValid()
return 1
endfunction

"映射WinManager快捷键,在normal模式下按mt,控制开启和关闭
"nmap <silent> mt :WMToggle<CR>
nmap <silent> mt :if IsWinManagerVisible() <BAR> WMToggle<CR> <BAR> else <BAR> WMToggle<CR>:q<CR> endif <CR>
"设置WinManager宽度
let g:winManagerWidth = 40

"在进入vim时自动打开winmanager,打开=1,关闭=0
let g:AutoOpenWinManager = 0

"==================================
"Grep配置
"==================================

"直接按下<F3>键来查找光标所在的字符串:Grep插件
nnoremap <silent> <F3> :Rgrep<CR>

"=================================
"MiniBufExplorer配置
"=================================

"使用<C-Tab>向前循环切换到每个buffer上,并在当前窗口打开。<C-S-Tab>向后循环
"let g:miniBufExplMapCTabSwitchBufs = 1
"If you use other explorers like TagList you can
"let g:miniBufExplModSelTarget = 1

"关闭标签页
map <leader>c :CMiniBufExplorer<cr>

"=================================
"autocomplpop
"=================================

"acp是否自动开启,1=yes,0=no
let g:acp_enableAtStartup = 0

"mappigDriven防止单纯的鼠标移动造成搜索
let g:acp_mappingDriven = 1

"=================================
"neocomplcache配置
"=================================

"source neocomplcache.conf

"=================================
"vundle配置
"=================================

call vundle#rc()

Bundle 'gmarik/vundle'

"Bundle 'vim-plugin-foo'
"Bundle 'vim-plugin-bar'

Bundle 'Auto-Pairs'
Bundle 'bufexplorer.zip'
Bundle 'ctags.vim'
Bundle 'taglist.vim'
Bundle 'winmanager--Fox'
Bundle 'The-NERD-tree'
Bundle 'neocomplcache'
Bundle 'minibufexpl.vim'
Bundle 'https://github.com/abra/obsidian2.git'
Bundle 'https://github.com/bradfitz/goimports.git'
Bundle 'cespare/vim-golang'

colorscheme obsidian2
autocmd BufWritePre *.go :Fmt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值