1 Star 0 Fork 0

feipeng8848/vim

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
.vimrc 8.17 KB
一键复制 编辑 原始数据 按行查看 历史
feipeng8848 提交于 2025-01-18 22:12 +08:00 . update
" 逗号作为leader键
let mapleader=","
" 显示行号
set nu
" 打开语法高亮
syntax on
"高亮显示当前行
set cursorline
highlight CursorLine cterm=none ctermbg=darkgray ctermfg=white guibg=darkgray guifg=white
" 高亮显示当前列
"set cursorcolumn
" 高亮显示搜索结果
set hlsearch
" 右侧高亮一条竖线,标注一行字符数到达限制
set colorcolumn=100
highlight ColorColumn ctermbg=darkgray
" 渐进式搜索
set incsearch
"markdown 或者 json显示所有字符
set conceallevel=0
set updatetime=300
" 不换行
set nowrap
set guifont=consolas\ 13
" 鼠标点选
set mouse=a
"取消回车自动换行注释
"set paste
" splits向右和向下
set splitbelow
set splitright
" 自适应不同语言的智能缩进
filetype indent on
" 将制表符扩展为空格
set expandtab
" 设置编辑时制表符占用空格数
set tabstop=4
" 设置格式化时制表符占用空格数
set shiftwidth=4
" 让 vim 把连续数量的空格视为一个制表符
set softtabstop=4
"关闭vi兼容,否则退格键无法删除文本
set nocompatible
set backspace=indent,eol,start
"txt、md文本用c语言的语法高亮
autocmd BufRead,BufNewFile *.txt set syn=c
autocmd BufRead,BufNewFile *.md setfiletype cpp
"禁止产生临时文件
set noundofile
set nobackup
set noswapfile
"设置utf8兼容
set fileencodings=utf-8,gbk,gb2312,big5,ucs-bom,gb18030,cp936
"手动折叠
set foldmethod=manual
"缩进折叠
"set foldmethod=indent
"语法折叠
"set foldmethod=syntax
"创建折叠
nnoremap <leader>zf vi{zf
set viewdir=~/.vim/viewdir
" 自动保存和加载视图状态
" 下次打开的时候会保留之前创建的折叠
augroup auto_save_folds
autocmd!
autocmd BufWinLeave *.* mkview
autocmd BufWinEnter *.* silent! loadview
augroup END
" 设置终端窗口的默认大小
" set termwinsize=20x0
" ,0 表示粘贴寄存器0的内容(y复制的内容,避免p的时候粘贴的是刚刚d的内容)
nnoremap <leader>0 "0p
" 设置编译
" :B会调用Build函数,此函数会调用相关shell脚本执行编译操作(这部分需要自己写编译脚本)
command B : call Build()
command Build : call Build()
command Rebuild : call Rebuild()
function! Build()
let current_dir = fnamemodify(getcwd(), ':t')
" 项目文件夹名字是signtool
" 这是一个cmake项目
if current_dir == 'signtool'
" 进入vim内置的终端
execute 'terminal'
" 在终端里执行cmake和make命令
call feedkeys("cmake -Bbuild" . "\r", 'n')
call feedkeys("make -C build" . "\r", 'n')
return
endif
if current_dir == 'xyz'
execute 'terminal'
" bxyz是一个shell函数,该函数会编译xyz项目
" 具体执行什么操作写到bxyz函数中即可
call feedkeys("./bxyz" . "\r", 'n')
return
endif
echo "nothing to do"
endfunction
" Rebuild操作,同样也是依赖于shell函数
function! Rebuild()
let current_dir = fnamemodify(getcwd(), ':t')
if current_dir == 'signtool'
execute 'terminal'
call feedkeys("rm -rf build" . "\r", 'n')
call feedkeys("cmake -Bbuild" . "\r", 'n')
call feedkeys("make -C build" . "\r", 'n')
return
endif
if current_dir == 'xyz'
execute 'terminal'
" rbxyz是一个shell函数,执行xyz项目的rebuild操作
call feedkeys("rbxyz" . "\r", 'n')
return
endif
echo "nothing to do"
endfunction
" 降低误触
command W : w
command Q : q
command Wq : wq
command Terminal : terminal
command Term : terminal
call plug#begin('~/.vim/plugged')
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
Plug 'gcmt/wildfire.vim'
Plug 'tpope/vim-surround'
"缩进线
Plug 'Yggdroot/indentLine'
"括号高亮
Plug 'luochen1990/rainbow'
Plug 'Yggdroot/LeaderF', { 'do': ':LeaderfInstallCExtension' }
" 下划线高亮当前单词
Plug 'itchyny/vim-cursorword'
Plug 'rhysd/vim-clang-format'
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'vim-scripts/taglist.vim'
" 行尾空白字符
" 默认行尾空白被标红
" 输入:FixWhitespace会删除这些空白字符
Plug 'bronson/vim-trailing-whitespace'
" 切换头文件和源文件
" :A 切换
Plug 'vim-scripts/a.vim'
Plug 'ludovicchabant/vim-gutentags'
" Git支持
Plug 'tpope/vim-fugitive'
Plug 'airblade/vim-gitgutter'
Plug 'szw/vim-maximizer'
Plug 'cdelledonne/vim-cmake'
call plug#end()
" rainbow括号高亮
let g:rainbow_active = 1
let g:rainbow_conf = {
\'ctermfgs:': ['darkgreen', 'darkblue', 'brown', 'darkcyan', 'darkmagenta'],
\}
" coc-clangd 代码补全
" 更换代码补全弹窗颜色,ctermbg用于终端,guibg用于gvim
" 终端,背景色灰色,前景色白色
highlight Pmenu ctermbg=black ctermfg=white
" 选中项,背景色浅灰。关于vim数字支持的颜色可以参考
" https://www.cnblogs.com/guochaoxxl/p/7399886.html
hi CocMenuSel ctermbg=blue ctermfg=black
"Tab键补全
function! CheckBackspace() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction
inoremap <silent><expr> <TAB>
\ coc#pum#visible() ?( CheckBackspace() ? "\<Tab>" : coc#pum#confirm() ):
\ "\<Tab>"
inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"
"Enter键补全
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm() : "\<CR>"
" nerdtree文件树
"打开vim后自动打开nerdtree
autocmd vimenter * NERDTree
wincmd w
autocmd VimEnter * wincmd w
" 是否显示隐藏文件
let NERDTreeShowHidden=1
"当NERDTree为剩下的唯一窗口时自动关闭
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
"F2 打开和关闭
map <F2> :NERDTreeToggle<CR>
let g:NERDTreeWinSize=60
"airline
"let g:airline_theme="behelit"
"头顶显示文件名
let g:airline#extensions#tabline#enabled = 1
" indentLine
" 使插件生效
let g:indentLine_enabled = 1
" 设置缩进线字符,也可以为 '¦', '┆', '┊' 等
let g:indentLine_char = '┆'
" 使插件正常运行
let g:indentLine_conceallevel = 2
" leaderF
nnoremap <leader>lf :Leaderf
" ctrl p 打开文件,默认的快捷键是<leader>f,这里改为ctrl p
let g:Lf_ShortcutF = '<C-P>'
" 显示tag列表
"noremap <F8> :LeaderfBufTag<CR>
noremap <leader>o :LeaderfBufTag<CR>
nnoremap <leader>tag :LeaderfBufTag<CR>
" 显示函数列表
" 加叹号进入normal模式,不加进入搜索模式
nnoremap <leader>func :LeaderfFunction!<CR>
" 行搜索
nnoremap <leader>line :LeaderfLine<CR>
" 使用ripgrep全局搜索,需要安装ripgrep
" 全局搜索0寄存器中的内容,搜索之前可以选中并y复制
nnoremap <leader>rg :Leaderf! rg <C-r>"<CR>
" 需要手动输入要搜索的内容
nnoremap <leader>Rg :Leaderf! rg
" 关闭第一列容易乱码的字符
let g:Lf_ShowDevIcons = 0
"gutentags 自动生成tags文件
"F12跳转到函数定义
nnoremap <F12> <C-]>
" gutentags搜索工程目录的标志,碰到这些文件/目录名就停止向上一级目录递归 "
let g:gutentags_project_root = ['.root', '.svn', '.git', '.project']
" 所生成的数据文件的名称 "
let g:gutentags_ctags_tagfile = '.tags'
" 将自动生成的 tags 文件全部放入 ~/.cache/tags 目录中,避免污染工程目录 "
let s:vim_tags = expand('~/.cache/tags')
let g:gutentags_cache_dir = s:vim_tags
" 检测 ~/.cache/tags 不存在就新建 "
if !isdirectory(s:vim_tags)
silent! call mkdir(s:vim_tags, 'p')
endif
" 配置 ctags 的参数 "
let g:gutentags_ctags_extra_args = ['--fields=+niazS', '--extra=+q']
let g:gutentags_ctags_extra_args += ['--c++-kinds=+pxI']
let g:gutentags_ctags_extra_args += ['--c-kinds=+px']
let g:gutentags_ctags_exclude = [
\ 'lib',
\ 'build',
\ 'out',
\ '*.o',
\ '*.a',
\ '*.so*',
\]
"gitgutter
highlight GitGutterAdd ctermfg=green
highlight GitGutterChange ctermfg=yellow
highlight GitGutterDelete ctermfg=red
highlight GitGutterAdd ctermbg=black
highlight GitGutterChange ctermbg=black
highlight GitGutterDelete ctermbg=black
let g:gitgutter_sign_added = '++'
let g:gitgutter_sign_modified = 'xx'
let g:gitgutter_sign_removed = '--'
"taglist
let Tlist_Exit_OnlyWindow = 1
let Tlist_Show_One_File = 1
let Tlist_Use_Right_Window = 1
let Tlist_WinWidth = 50
noremap <F8> :TlistToggle<CR>
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Shell
1
https://gitee.com/feipeng8848/vim.git
git@gitee.com:feipeng8848/vim.git
feipeng8848
vim
vim
3e64205a1fe863c8fe428b7bb030c0e399907bc8

搜索帮助