这是一个基础配置,主要调整一下 Neovim 本身的设置,安装一些通用插件。
配置文件
Neovim 的配置文件在~/.config/nvim/init.vim
,没有的话,自己新建一个。
" 基本配置
set nocompatible "关闭与vi的兼容模式
set encoding=utf-8 "通用的 utf8 编码,避免乱码
set fenc=utf-8 "编码
set mouse=a "支持使用鼠标
" 缩进
set tabstop=4 " Tab = 4 空格
set expandtab " Tab 键在不同的编辑器缩进不一致,自动将 Tab 转为空格
" 外观
set cursorline " 光标所在的当前行高亮
let mapleader = "\" " leader 键改为 空格键
set number "显示绝对行号
set rnu "显示相对行号
set nowrap "不自动折行
set showmatch " 光标遇到圆括号、方括号、大括号时,自动高亮对应的另一半
set cc=80 "标尺线
set scrolloff=5 "垂直滚动时,光标距离顶部/底部的行数
" 搜索
set hlsearch " 搜索时,高亮显示匹配结果
set foldmethod=indent " 代码折叠
set foldcolumn=0 " 设置折叠区域的宽度
setlocal foldlevel=1 " 设置折叠层数为
set foldlevelstart=99 " 打开文件是默认不折叠代码
" 编辑
" 保留记录,退出后再次打开依然可以 undo
silent !mkdir -p ~/.config/nvim/tmp/backup
silent !mkdir -p ~/.config/nvim/tmp/undo
set backupdir=~/.config/nvim/tmp/backup,.
set directory=~/.config/nvim/tmp/backup,.
if has('persistent_undo')
set undofile
set undodir=~/.config/nvim/tmp/undo,.
endif
noremap zz za " 设置快捷键为空格
" 空格键 + 对应数字快速切换 buffer
nnoremap 1 :1b
nnoremap 2 :2b
nnoremap 3 :3b
nnoremap 4 :4b
nnoremap 5 :5b
nnoremap 6 :6b
nnoremap 7 :7b
nnoremap 8 :8b
nnoremap 9 :9b
syntax on "语法高亮
" 开启自动识别文件类型,并根据文件类型加载不同的插件和缩进规则
filetype plugin indent on
set clipboard=unnamed " yy直接复制到系统剪切板(For macvim)
cmap w!! w !sudo tee >/dev/null % " w!!写入只读文件
nnoremap 5j " ctr + j 每次移动5行
nnoremap 5k
" 标签页操作
" 打开新的标签页 tabe new
map tn :tabe
" 在标签页跳转 h/l 和 vim 控制键一样
map th :-tabnext
map tl :+tabnext
" 关闭标签页 tabe close
map tq :tabclose
" 移动标签页 tabe move h/j
map tmh :-tabmove
map tml :+tabmove
" 根据不同模式,改变光标样式
" Neovim 自带功能
" let &t_SI = "\]50;CursorShape=1\x7"
" let &t_SR = "\]50;CursorShape=2\x7"
" let &t_EI = "\]50;CursorShape=0\x7"
" 插件管理器
call plug#begin('~/.config/nvim/plugged')
" Plug 'morhetz/gruvbox'
Plug 'iCyMind/NeoSolarized'
Plug 'luochen1990/rainbow'
Plug 'Yggdroot/indentLine'
Plug 'vim-airline/vim-airline'
Plug 'preservim/nerdtree'
call plug#end()
" 主题设置
" Plug 'iCyMind/NeoSolarized'
set termguicolors
colorscheme NeoSolarized
" Plug 'morhetz/gruvbox'
" colorscheme gruvbox
" 彩虹括号
" Plug 'luochen1990/rainbow'
let g:rainbow_active = 1
" 缩进指示线颜色
" Plug 'Yggdroot/indentLine'
let g:indentLine_color_term = 238
" 状态栏增强
" Plug 'vim-airline/vim-airline'
" 打开后可以美化显示窗口 tab 和 buffer,比 NeoVim 自带好看
let g:airline#extensions#tabline#enabled = 1
" tabline 中 buffer 显示编号
let g:airline#extensions#tabline#buffer_nr_show = 1
" 树形文件浏览
" Plug 'preservim/nerdtree'
" 设定 NERDTree 视窗大小
let g:NERDTreeWinSize = 25
" 过滤所有指定的文件不显示
let NERDTreeIgnore = ['\.pyc$', '\.swp', '\.swo', '\.vscode', '__pycache__']
" 打开或关闭 nerdtree
map nt :NERDTreeToggle
" 当 NERDTree 为剩下的唯一窗口时自动关闭
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
"打开vim时如果没有文件自动打开NERDTree
autocmd vimenter * if !argc()|NERDTree|endif
" 正常下 Nerdtree 是不会自动刷新的,按 r 刷新
安装插件管理器
sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
安装插件
重启 Neovim,命令模式输入
PlugInstall
基础配置已经完成,以后可以按照需求定制自己的配置文件,比如 python 或者 go 开发,写 markdown 等等。