"colorscheme 主题插件名设置主题
"blue.vim desert.vim koehler.vim peachpuff.vim slate.vim
"darkblue.vim elflord.vim morning.vim README.txt torte.vim
"default.vim evening.vim murphy.vim ron.vim zellner.vim
"delek.vim industry.vim pablo.vim shine.vim
"下载主题插件文件,文件可放在~/.vim/color目录下,便于管理
set nu "在左侧行号
set nobackup "覆盖文件时不备份
set ruler "在右下角显示光标位置的状态行
set tabstop=4 " 设置软制表符宽度为4
set softtabstop=4 " 设置软制表符宽度为4
set shiftwidth=4 " 设置缩进的空格数为4
set autoindent " 设置自动缩进:即每行的缩进值与上一行相等
set cindent " 使用 C/C++ 语言的自动缩进方式
set cursorline " 突出显示当前行
set expandtab " 空格代替制表符
set showmatch " 光标遇到圆括号、方括号、大括号时,自动高亮对应的另一个圆括号、方括号和大括号
set ruler " 在状态栏显示光标的当前位置(位于哪一行哪一列)
set guifont=Consolas:h15 " 设置字体和字体大小
set nobackup " 取消备份文件
" 默认情况下,文件保存时,会额外创建一个备份文件,它的文件名是在原文件名的末尾,再添加一个波浪号~
setlocal noswapfile " 不创建交换文件。交换文件主要用于系统崩溃时恢复文件,文件名的开头是.、结尾是.swp
set noundofile " 取消生成un文件
set hlsearch " 设置高亮显示搜索字符串
set showmode " 在底部显示,当前处于命令模式还是插入模式
set showcmd " 命令模式下,在底部显示,当前键入的指令。比如输入快捷键将在底部显示具体命令
set t_Co=256 " 启用256色
set noerrorbells " 出错时不要发出响声
" 高亮显示
syntax on
syntax enable
" 编码配置
set enc=utf-8
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
colorscheme desert
"把当前秒数转换成小时数,自动变换主题
let hour=(localtime()/60/60%24)
if hour == 1
colorscheme blue
elseif hour == 2
colorscheme desert
elseif hour == 3
colorscheme koehler
elseif hour == 4
colorscheme peachpuff
elseif hour == 5
colorscheme slate
elseif hour == 6
colorscheme darkblue
elseif hour == 7
colorscheme elford
elseif hour == 8
colorscheme morning
elseif hour == 9
colorscheme torte
elseif hour == 10
colorscheme default
elseif hour == 11
colorscheme evening
elseif hour == 12
colorscheme murphy
elseif hour == 13
colorscheme ron
elseif hour == 14
colorscheme zellner
elseif hour == 15
colorscheme delek
elseif hour == 16
colorscheme industry
elseif hour == 17
colorscheme pablo
elseif hour == 18
colorscheme shine
elseif hour == 19
colorscheme desert
elseif hour == 20
colorscheme desert
elseif hour == 21
colorscheme desert
elseif hour == 22
colorscheme desert
elseif hour == 23
colorscheme desert
elseif hour == 24
colorscheme desert
endif
call plug#begin('~/.vim/plugged')
Plug 'junegunn/vim-plug'
"此处可以添加其他插件
"Plug 'github网站上的其他vimscript插件'
Plug 'scrooloose/nerdtree'
Plug 'jiangmiao/auto-pairs'
Plug 'vim-scripts/taglist.vim'
Plug 'preservim/nerdcommenter'
Plug 'frazrepo/vim-rainbow'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'Valloric/YouCompleteMe'
Plug 'dense-analysis/ale'
Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'
call plug#end()
"->NERDTree目录树插件---配置选项=====================================================
let g:NERDTreeDirArrowExpandable = '▸' "目录图标
let g:NERDTreeDirArrowCollapsible = '▾'
"autocmd vimenter * NERDTree "自动打开目录树
"vim【无文件】也显示目录树
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
"vim打开目录文件也显示目录树?
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | endif
"CRTL+N开关目录树
map <C-n> :NERDTreeToggle<CR>
"关闭最后一个文件,同时关闭目录树
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
"<-NERDTree目录树插件---配置选项===============================================================
"->taglist浏览插件配置=========================================
"taglist窗口显示在右侧,缺省为左侧
let Tlist_Use_Right_Window=1
"设置ctags路径"将taglist与ctags关联
let Tlist_Ctags_Cmd = '/usr/bin/ctags'
"启动vim后自动打开taglist窗口
let Tlist_Auto_Open = 1
"不同时显示多个文件的tag,只显示当前文件的
"不同时显示多个文件的tag,仅显示一个
let Tlist_Show_One_File = 1
"taglist为最后一个窗口时,退出vim
let Tlist_Exit_OnlyWindow = 1
"let Tlist_Use_Right_Window =1
"设置taglist窗口大小
"let Tlist_WinHeight = 90
"let Tlist_WinWidth = 40
"设置taglist打开关闭的快捷键F8
noremap <F8> :TlistToggle<CR>
"更新ctags标签文件快捷键设置
noremap <F6> :!ctags -R<CR>
"<-taglist=========================================
"Rainbow
au FileType c,cpp,objc,objcpp call rainbow#load()
"vim-airline-themes配置(县不启用)
"set laststatus=2 "永远显示状态栏
"let g:airline_powerline_fonts = 1 " 支持 powerline 字体
"let g:airline#extensions#tabline#enabled = 1 " 显示窗口tab和buffer
"let g:airline_theme='moloai' " murmur配色不错
"if !exists('g:airline_symbols')
"let g:airline_symbols = {}
"endif
"let g:airline_left_sep = '▶'
"let g:airline_left_alt_sep = '❯'
"let g:airline_right_sep = '◀'
"let g:airline_right_alt_sep = '❮'
"let g:airline_symbols.linenr = '¶'
"let g:airline_symbols.branch = '⎇'
"YCM 自动补全设置
"let g:ycm_key_invoke_completion = '<c-z>'
"set completeopt-=preview "关闭preview窗口
"启用基于语义的自动补全
let g:ycm_collect_identifiers_from_tags_files=1 " 开启 YCM 基于标签引擎
let g:ycm_error_symbol = '✗'
let g:ycm_warning_symbol = '⚠'
let g:ycm_semantic_triggers = {
\ 'c,cpp,python,java,go,erlang,perl': ['re!\w{2}'],
\ 'cs,lua,javascript': ['re!\w{2}']
\ }
"设置白名单文件
let g:ycm_filetype_whitelist = {
\ "c":1,
\ "cpp":1,
\ "sh":1,
\ "py":1
\ }
"修改提示框颜色
highlight Pmenu ctermfg=4 ctermbg=8 guifg=#ffffff guibg=#000000 "提示不再是粉红色(pink)
highlight PMenu ctermfg=yellow ctermbg=darkgrey guifg=#ffffff guibg=#000000
highlight PMenuSel ctermfg=white ctermbg=black guifg=#000000 guibg=#ffffff
"声明、定义跳转
nnoremap <C-u> :YcmCompleter GoToDefinitionElseDeclaration<CR>
nnoremap <F5> :YcmForceCompileAndDiagnostics<CR>
"YCM-Generator配置
nnoremap <C-y> :YcmGenerateConfig ./<CR> "更新.ycm_extra_conf.py文件
let g:ycm_global_ycm_extra_conf = '/home/aluu/.vim/plugged/YouCompleteMe/.ycm_extra_conf.py'
let g:ycm_min_num_of_chars_for_completion = 1 " 输入第 1 个字符开始补全
let g:ycm_seed_identifiers_with_syntax = 1 " 语法关键字补全
let g:ycm_complete_in_comments = 1 " 在注释中也可以补全
let g:ycm_complete_in_strings = 1 " 在字符串输入中也能补全
let g:ycm_collect_identifiers_from_tag_files = 1 " 使用 ctags 生成的 tags 文件
let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注释和字符串中的文字也会被收入补全
let g:ycm_cache_omnifunc = 0 " 每次重新生成匹配项,禁止缓存匹配项
let g:ycm_use_ultisnips_completer = 0 " 不查询 ultisnips 提供的代码模板补全,如果需要,设置成 1 即可
let g:ycm_show_diagnostics_ui = 0 " 禁用语法检查
let g:ycm_key_list_select_completion = ['<Down>'] " 选择下一条补全,Default: ['<TAB>', '<Down>']
let g:ycm_key_list_previous_completion = ['<Up>'] " 选择上一条补全,Default: ['<S-TAB>', '<Up>']
let g:ycm_key_list_stop_completion = ['<Enter>'] " 中止此次补全,Default: ['<C-y>']
"ultisnips配置
let g:UltiSnipsExpandTrigger = "<c-tab>" " 代码片段补全触发
let g:UltiSnipsListSnippets = "<c-\>" " 列出补全可选列表
let g:UltiSnipsJumpForwardTrigger = "<c-j>" " 下一条补全
let g:UltiSnipsJumpBackwardTrigger = "<c-k>" " 选择上一条补全kk
" 启用ale插件
let g:ale_enabled = 1
" 设置异步运行
let g:ale_async = 1
" 设置编程检查语言为C或c++语言
let g:ale_linters = { 'c': ['clang_check', 'gcc'], 'cpp': ['clang_check', 'g++']}
" 显示状态栏+不需要高亮行
"let g:ale_sign_column_always = 1
"let g:ale_set_highlights = 0
"Vim自动运行ale插件
autocmd BufReadPost *.c,*.cpp,*.cc,*.h,*.hpp ale "linter#Check('%')
"保存文件时自动运行ale插件
"autocmd BufWritePre *.c,*.cpp,*.cc,*.h,*.hpp ale #linter#Check('%')
" 设置错误提示级别为高
let g:ale_set_global_error_level = 'high'
" 设置错误提示级别为低
let g:ale_set_global_warning_level = 'low'
"使用以下选项指定应用于标志的文本:
let g:ale_sign_error = '✘'
let g:ale_sign_warning = '❗'
let g:ale_sign_column_always = 1
let g:ale_echo_msg_error_str = '✘'
let g:ale_echo_msg_warning_str = '❗'
let g:ale_echo_msg_format = '[%linter%] %s [%severity%]' "字符串格式化
nmap <silent> <C-k> <Plug>(ale_previous_wrap)
nmap <silent> <C-j> <Plug>(ale_next_wrap)
" Set this. Airline will handle the rest.
let g:airline#extensions#ale#enabled = 1
let g:ale_floating_window_border = ['│', '─', '╭', '╮', '╯', '╰', '│', '─']
let g:ale_floating_window_border = []
let g:ale_floating_window_border = repeat([''], 8)
"自动保存文件时禁用ale检查
"autocmd BufWritePre * silent! ale#linter#check({buf}) | let b:ale_echo_msgs = [] | if !empty(b:ale_echo_msgs) | echo '' | for msg in b:ale_echo_msgs | echo msg | endfor | unlet b:ale_echo_msgs | endif
" 文件保存时,显示警告
"let g:ale_lint_on_text_changed = 'never'
"let g:ale_lint_on_enter = 0
我的vim
于 2023-12-05 10:48:14 首次发布