" ==================================================================== " Vim 配置 - 合并优化版 " ==================================================================== set nocompatible let skip_defaults_vim = 1 filetype plugin indent on syntax enable " -------------------------------------------------------------------- " 编码(中文环境必备) " -------------------------------------------------------------------- set encoding=utf-8 set fileencodings=ucs-bom,utf-8,gbk,gb18030,big5,latin1 " -------------------------------------------------------------------- " 界面显示 " -------------------------------------------------------------------- set laststatus=2 " 状态栏始终显示 set cursorline " 高亮当前行 set scrolloff=5 " 滚动时光标距边缘保留 5 行 set showcmd " 右下角显示输入中的命令 set showmatch " 输入括号时跳到匹配的括号闪一下 set matchtime=1 " 括号匹配闪烁时间 0.1 秒 set wrap " 长行自动折行显示 set wildmenu " 命令行补全显示候选菜单 set wildmode=list:longest,full " 补全先列出所有候选,再依次循环 set splitright " 垂直分割时新窗口在右边 set splitbelow " 水平分割时新窗口在下边 set statusline=%f\ %m%r%h%w\ %y\ %=%-14.(%l,%c%V%)\ %P " -------------------------------------------------------------------- " 编辑行为 " -------------------------------------------------------------------- set backspace=indent,eol,start " 退格键不受限 set expandtab " Tab 键插入空格 set tabstop=4 " Tab 显示宽度 4 格 set shiftwidth=4 " 自动缩进每级 4 格 set softtabstop=-1 " 退格按缩进层级删,跟着 shiftwidth 走 set autoindent " 新行继承上一行缩进 set smartindent " { 之后自动多缩进一级 " -------------------------------------------------------------------- " 搜索 " -------------------------------------------------------------------- set hlsearch " 搜索结果高亮 set incsearch " 边输入边跳转 set ignorecase " 搜索忽略大小写 set smartcase " 搜索词含大写时自动区分大小写 " -------------------------------------------------------------------- " 系统集成 " -------------------------------------------------------------------- set clipboard=unnamedplus " 与系统剪贴板互通 set mouse= " 禁用鼠标,方便终端直接框选复制 set backupcopy=yes " 原地修改文件,防止热更新 inode 问题 " -------------------------------------------------------------------- " 持久撤销 " -------------------------------------------------------------------- set undofile " 关闭文件后再打开仍可撤销 set undodir=~/.vim/undo " 撤销历史存放目录 if !isdirectory(expand("~/.vim/undo")) silent !mkdir -p ~/.vim/undo endif " -------------------------------------------------------------------- " 性能 " -------------------------------------------------------------------- set updatetime=300 " 后台任务触发间隔,影响插件响应速度 " -------------------------------------------------------------------- " 格式化 " -------------------------------------------------------------------- " 阻止注释行回车后自动续加注释符号 autocmd FileType * setlocal formatoptions-=o formatoptions-=r " diff 时忽略空格差异 set diffopt+=iwhite " 打开文件自动跳到上次关闭时的位置 autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif " -------------------------------------------------------------------- " 快捷键 " -------------------------------------------------------------------- let mapleader = "," nnoremap x :confirm x " ,x 保存并退出(有提示) nnoremap q :confirm q " ,q 退出(有提示) nnoremap :set number! nnoremap / :nohlsearch " ,/ 取消搜索高亮