" ==============================================
" 基础设置
" ==============================================

" 关闭兼容模式,使用 Vim 高级功能
set nocompatible

" 启用语法高亮
syntax on

" 显示行号
set number

" 显示相对行号(可选)
" set relativenumber

" 高亮当前行
set cursorline

" 显示状态栏(底部信息)
set laststatus=2

" 显示当前编辑的文件名
set statusline=%F\ %m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]

" 记住上次编辑位置
if has("autocmd")
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif

" ==============================================
" 缩进与 Tab 设置
" ==============================================

" 自动缩进
set autoindent
set smartindent

" Tab 转换为 4 个空格
set tabstop=4
set shiftwidth=4
set expandtab
set softtabstop=4

" 回退时像 IDE 一样删除 4 个空格
set smarttab

" ==============================================
" 搜索与匹配
" ==============================================

" 搜索时高亮匹配
set hlsearch

" 搜索时实时匹配(输入即搜索)
set incsearch

" 忽略大小写(除非输入大写字母)
set ignorecase
set smartcase

" ==============================================
" 文件与编码
" ==============================================

" 使用 UTF-8 编码
set encoding=utf-8
set fileencodings=utf-8,gbk

" 自动检测文件类型
filetype plugin indent on

" ==============================================
" 其他优化
" ==============================================

" 鼠标支持(可选)
set mouse=

" 禁用备份文件和交换文件
set nobackup
set noswapfile

" 保留撤销历史
set undofile
set undodir=~/.vim/undodir

" 启用剪贴板(与系统共享)
set clipboard=unnamed

" ==============================================
" 快捷键映射
" ==============================================

" 禁用方向键(强制使用 hjkl)
"noremap <Up> <Nop>
"noremap <Down> <Nop>
"noremap <Left> <Nop>
"noremap <Right> <Nop>

" 保持块选择模式下的光标形状(可选,需终端支持)
set virtualedit=block

" 快速保存
nnoremap <Leader>w :w<CR>

" 快速退出
nnoremap <Leader>q :q<CR>

" 清除高亮
nnoremap <Leader><Space> :nohlsearch<CR>

" ==============================================
" CTags 配置(代码跳转)
" ==============================================

" 设置 CTags 文件路径(默认在项目根目录找 tags 文件)
set tags=./tags;,tags;

" 快捷键:Ctrl + ] 跳转到定义,Ctrl + t 返回
nnoremap <C-]> g<C-]>
nnoremap <C-t> <C-t>

" ==============================================
" 插件管理(vim-plug)
" ==============================================

call plug#begin('~/.vim/plugged')

" 1. 文件浏览(NERDTree)
Plug 'preservim/nerdtree'
nnoremap <Leader>n :NERDTreeToggle<CR>

" 2. 代码补全(coc.nvim,需安装 Node.js)
Plug 'neoclide/coc.nvim', {'branch': 'release'}

" 3. 状态栏美化(lightline.vim)
Plug 'itchyny/lightline.vim'

" 4. 模糊查找(fzf.vim)
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
nnoremap <Leader>f :Files<CR>

" 5. 代码注释(vim-commentary)
Plug 'tpope/vim-commentary'

" 6. Git 集成(vim-fugitive)
Plug 'tpope/vim-fugitive'

" 7. 自动括号匹配(auto-pairs)
Plug 'jiangmiao/auto-pairs'

" 8. 多光标编辑(vim-multiple-cursors)
Plug 'terryma/vim-multiple-cursors'

"块操作
Plug 'mg979/vim-visual-multi', {'branch': 'master'}

" 9. 语法检查(ALE,需安装对应 linter)
Plug 'dense-analysis/ale'

" 10. 主题(gruvbox)
Plug 'morhetz/gruvbox'

call plug#end()

colorscheme gruvbox
set background=dark

 

posted on 2025-07-05 22:05  北京开发  阅读(15)  评论(0)    收藏  举报