" ===============================
" 基础体验
" ===============================
set nocompatible " 关闭兼容模式(必须)
syntax on " 语法高亮
filetype plugin indent on " 文件类型检测 + 缩进
set encoding=utf-8
set fileencodings=utf-8,gbk,gb2312,latin1
" ===============================
" 显示 & 界面
" ===============================
set number " 显示行号
set cursorline " 高亮当前行
set showcmd " 显示未完成命令
set showmode " 显示当前模式
set ruler " 右下角显示行列
set laststatus=2 " 永远显示状态栏
set nowrap " 不自动换行(写代码更舒服)
" ===============================
" 缩进 & 格式
" ===============================
set tabstop=2 " 一个 tab 显示为 2 个空格
set shiftwidth=2 " 自动缩进 2 个空格
set expandtab " tab 转为空格
set autoindent " 自动缩进
set smartindent " 智能缩进(C / JS / TS 都适用)
" ===============================
" 搜索体验
" ===============================
set incsearch " 输入时实时搜索
set hlsearch " 高亮搜索结果
set ignorecase " 忽略大小写
set smartcase " 有大写时才区分大小写
" 清除高亮(用得多,但不算骚操作)
nnoremap <leader><space> :nohlsearch<CR>
" ===============================
" 编辑体验
" ===============================
set backspace=indent,eol,start " backspace 像现代编辑器
set clipboard=unnamedplus " 使用系统剪贴板(macOS / Linux)
set undofile " 持久 undo
set undodir=~/.vim/undo
set hidden " 允许切换 buffer 不保存
set updatetime=300 " 更快触发 CursorHold
" ===============================
" 文件 & 安全
" ===============================
set nobackup
set nowritebackup
set noswapfile
" ===============================
" 编码友好
" ===============================
set list
set listchars=tab:▸\ ,trail:·