1 Star 6 Fork 1

一个小白/nvim

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
init.vim 14.76 KB
一键复制 编辑 原始数据 按行查看 历史
root 提交于 2020-05-15 11:49 . add js
" 自己的vimrc
" 安装插件管理器: curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
" https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
let mapleader=','
set nocompatible " 去除VI一致性,必须要添加 关闭兼容模式
filetype off " 必须要添加
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"如果vim插件管理器没有安装则自动安装
if empty(glob('~/.config/nvim/autoload/plug.vim'))
silent !curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif
" ===
" === Create a _machine_specific.vim file to adjust machine specific stuff, like python interpreter location
" ===
" 设置vim可以保存文件修改历史
silent !mkdir -p ~/.config/nvim/tmp/backup
silent !mkdir -p ~/.config/nvim/tmp/undo
"silent !mkdir -p ~/.config/nvim/tmp/sessions
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
""""""""""""""""""""""""""""设置自己的leader""""""""""""""""""""""""""""""""""""
" 打开文件类型侦测
filetype on
" 根据不同的文件类型加载不同的插件
filetype plugin on
filetype indent on
set number " 打开行号
syntax on " 打开高亮
" colorscheme hybrid " 设置主题
set pastetoggle=<F2> " 按F2 进入粘贴模式
"set cursorline " 显示横线
""set cursorcolumn
set hlsearch " 高亮搜索
set foldmethod=indent " 设置折叠方式
"光标遇到折叠,折叠就打开
set foldopen=all
" 不生成swp文件
set noswapfile
" 开启实时搜索并且对大小写不敏感
set incsearch
set ignorecase
" 设置忽略大小写
set ignorecase
" 开启vim自身命令行模式智能补全
set wildmenu
" 设置颜色配色
" colorscheme one
"set background=dark
"set modifiable
" 自动识别文件格式
set fileformats=unix,dos
set fileformat=unix
" 统一缩紧
set tabstop=4 "设置 tab 的宽度
set softtabstop=4 "设置 删除 tab 的宽度
set shiftwidth=4 "设置 智能缩进的宽度
set expandtab "设置 将 tab 转换为 4 个空格
%retab!
" 不能自动换行
"set nowrap
" 格式化
set formatoptions=tcrqn " 根据要求格式化
set autoindent " 继承缩紧
set smartindent " 为C语言提供自动缩紧
set cindent " 使用C样式缩紧
set smarttab " 在行和段开始处使用制表符
" 设置文件编码
set fileencoding=utf-8
" 搜索设置
set showmatch " 匹配成队符号
set matchtime=5 " 匹配括号高亮的时间
" 行数控制
set scrolloff=20 " 光标始终保持在距离上下顶点20行的位置
" 设置最大行字符数
"set foldlevel=99
set wrap
set tw=0
set indentexpr=
set foldmethod=indent
set foldlevel=99
set foldenable
set formatoptions-=tc
set splitright
set splitbelow
"set ai "或者 set autoindent vim使用自动对齐,也就是把当前行的对齐格式应用到下一行
set si "或者 set smartindent 依据上面的对齐格式,智能的选择对齐方式
set ci "set cindent 按照 C 语言的语法,自动地调整缩进的长度
"set mouse=a "鼠标支持
" 键位映射
" 将- 号设置成x 表示按 - 号 删除一个字符
map - x
map <space> viw
map <c-d> dd
" 关闭方向键, 强迫自己用 hjkl vim禁用方向键
map <Left> <Nop>
map <Right> <Nop>
map <Up> <Nop>
map <Down> <Nop>
" 空格t 加载配置文件
map <leader>t :source $MYVIMRC<CR>
" 定义快捷键到行尾部和首部
nmap H ^
nmap L $
" 快速跳转
nmap J 5j
nmap K 5k
nmap L 5l
nmap H 5h
" 关于保存退出文件相关
"nmap <Leader>w :w<CR>
"nmap <Leader>e :wq<CR>
nmap <Leader>p "+p
inoremap <leader>w <Esc>:wi<cr> " 保存文件用,w
inoremap <leader>x <Esc>:x<cr> " 保存文件并退出,x
" jj 进入normal模式
inoremap jj <Esc>
" 尖括号自动补全
inoremap < <><LEFT>
inoremap ' ''<LEFT>
inoremap " ""<LEFT>
inoremap [ []<LEFT>
inoremap ( ()<LEFT>
inoremap { {}<LEFT>
" 设置上下左右分屏跳转
noremap <C-h> <C-w>h
noremap <C-j> <C-w>j
noremap <C-k> <C-w>k
noremap <C-l> <C-w>l
" 跳转Window
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
" Resize splits with arrow keys(设置窗口上下左右大小)
noremap <up> :res +5<CR>
noremap <down> :res -5<CR>
noremap <left> :vertical resize-5<CR>
noremap <right> :vertical resize+5<CR>
" 消除颜色
noremap <Leader><space> :nohlsearch<CR>
" 解决终端下配色方案异常
let &t_ut=''
" 处理复制粘贴
vnoremap <Leader>y "+y
" 让vim配置保存后立马生效
"autocmd BufWritePost $MYVIMRC source $MYVIMRC
" 光标返回上一级
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif""'""")>""'")""'")
" Compile function
noremap r :call CompileRunGcc()<CR>
func! CompileRunGcc()
exec "w"
if &filetype == 'c'
exec "!g++ % -o %<"
exec "!time ./%<"
elseif &filetype == 'cpp'
set splitbelow
exec "!g++ -std=c++11 % -Wall -o %<"
:sp
:res -15
:term ./%<
elseif &filetype == 'java'
exec "!javac %"
exec "!time java %<"
elseif &filetype == 'sh'
:!time bash %
elseif &filetype == 'python'
set splitbelow
:sp
:term python3 %
elseif &filetype == 'javascript'
set splitbelow
:sp
:term node %
elseif &filetype == 'html'
silent! exec "!".g:mkdp_browser." % &"
elseif &filetype == 'markdown'
exec "MarkdownPreview"
elseif &filetype == 'tex'
silent! exec "VimtexStop"
silent! exec "VimtexCompile"
elseif &filetype == 'dart'
CocCommand flutter.run -d iPhone\ 11\ Pro
CocCommand flutter.dev.openDevLog
elseif &filetype == 'go'
set splitbelow
:sp
:term go run .
endif
endfunc
" json格式化 用法 :FormatJSON
com! FormatJSON %!python3 -m json.tool
" 使用sudo强制写入
cnoremap w!! w !sudo tee % >/dev/null
" ===
" === Install Plugs with Vim-Plug
" ===
call plug#begin('~/.config/nvim/plugged')
Plug 'RRethy/vim-illuminate' " 显示光标下当前单词的其他用法
Plug 'AndrewRadev/splitjoin.vim' " 在单行和多行代码形式之间切换
Plug 'vim-airline/vim-airline' "状态栏插件
Plug 'vim-airline/vim-airline-themes' "状态栏插件
Plug 'Yggdroot/indentLine' "缩进线
Plug 'preservim/nerdtree' "文件树
Plug 'connorholyday/vim-snazzy' " 配色方案
Plug 'mhinz/vim-startify' " 可以显示历史文件
Plug 'kien/ctrlp.vim' " 文件模糊搜索器
Plug 'easymotion/vim-easymotion' " 使用ss 查找两个字母并跳转 查找单词并跳转 快速定位,文件位置任我行
" Git
Plug 'junegunn/gv.vim' " 查看提交记录
Plug 'tpope/vim-fugitive' " git插件
Plug 'theniceboy/vim-gitignore', { 'for': ['gitignore', 'vim-plug'] }
Plug 'fszymanski/fzf-gitignore', { 'do': ':UpdateRemotePlugins' }
"Plug 'mhinz/vim-signify'
Plug 'airblade/vim-gitgutter' " vim显示文件变动
" Tex(一个现代的vim插件,用于编辑LaTeX文件。)
Plug 'lervag/vimtex'
" Auto Complete(自动补全)
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'wellle/tmux-complete.vim'
" Undo Tree (文件树)
Plug 'mbbill/undotree'
" Markdown
Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install_sync() }, 'for' :['markdown', 'vim-plug'] }
Plug 'dhruvasagar/vim-table-mode', { 'on': 'TableModeToggle' }
Plug 'mzlogin/vim-markdown-toc', { 'for': ['gitignore', 'markdown'] }
Plug 'theniceboy/bullets.vim'
" HTML, CSS, JavaScript, PHP, JSON, etc.
Plug 'elzr/vim-json'
Plug 'hail2u/vim-css3-syntax', { 'for': ['vim-plug', 'php', 'html', 'javascript', 'css', 'less'] }
Plug 'spf13/PIV', { 'for' :['php', 'vim-plug'] }
Plug 'pangloss/vim-javascript', { 'for': ['vim-plug', 'php', 'html', 'javascript', 'css', 'less'] }
Plug 'yuezk/vim-js', { 'for': ['vim-plug', 'php', 'html', 'javascript', 'css', 'less'] }
Plug 'MaxMEllon/vim-jsx-pretty', { 'for': ['vim-plug', 'php', 'html', 'javascript', 'css', 'less'] }
Plug 'jelera/vim-javascript-syntax', { 'for': ['vim-plug', 'php', 'html', 'javascript', 'css', 'less'] }
"Plug 'jaxbot/browserlink.vim'
" Python
Plug 'tmhedberg/SimpylFold', { 'for' :['python', 'vim-plug'] }
Plug 'Vimjas/vim-python-pep8-indent', { 'for' :['python', 'vim-plug'] }
Plug 'numirias/semshi', { 'do': ':UpdateRemotePlugins', 'for' :['python', 'vim-plug'] }
"Plug 'vim-scripts/indentpython.vim', { 'for' :['python', 'vim-plug'] }
"Plug 'plytophogy/vim-virtualenv', { 'for' :['python', 'vim-plug'] }
Plug 'tweekmonster/braceless.vim'
Plug 'vim-scripts/indentpython.vim' " python缩进脚本
" Debugger
Plug 'puremourning/vimspector', {'do': './install_gadget.py --enable-c --enable-python '}
call plug#end()
" ===
" === vim-snazzy
" ===
let g:SnazzyTransparent = 1 " 背景不透明设置
colorscheme snazzy
" ===
" === nerdtree
" ===
"autocmd vimenter * NERDTree " 设置nerdtree自动启动
nnoremap <leader>v :NERDTreeFind<cr>
nnoremap <leader>g :NERDTreeToggle<cr>
let NERDTreeShowHidden=1
let NERDTreeIgonre=[
\'\.git$', '\.hg$', '\.svn$', '\.stversions$', '\.pyc$', '\.pyo$', '\.swp$',
\'.DS_Store$', '\.sass-cache$', '__pycache__$', '\.egg-info$','\.ropeproject$',
\]
" ===
" === ctrlp
" ===
let g:ctrlp_map = '<c-p>'
" ===
" === vim-easymotion
" ===
nmap ss <Plug>(easymotion-s2)
" ==
" == GitGutter (显示文件变动)
" ==
let g:gitgutter_signs = 0
let g:gitgutter_map_keys = 0
let g:gitgutter_override_sign_column_highlight = 0
let g:gitgutter_preview_win_floating = 1
autocmd BufWritePost * GitGutter
nnoremap <LEADER>gf :GitGutterFold<CR>
nnoremap H :GitGutterPreviewHunk<CR>
nnoremap <LEADER>g- :GitGutterPrevHunk<CR>
nnoremap <LEADER>g= :GitGutterNextHunk<CR>
" ===
" === vim-illuminate
" ===
let g:Illuminate_delay = 250
hi illuminatedWord cterm=undercurl gui=undercurl
" ===
" === coc
" ===
" fix the most annoying bug that coc has
"silent! au BufEnter,BufRead,BufNewFile * silent! unmap if
let g:coc_global_extensions = ['coc-python', 'coc-vimlsp', 'coc-html', 'coc-json', 'coc-css', 'coc-tsserver', 'coc-yank', 'coc-gitignore', 'coc-vimlsp', 'coc-tailwindcss', 'coc-stylelint', 'coc-tslint', 'coc-lists', 'coc-git', 'coc-explorer', 'coc-pyright', 'coc-sourcekit', 'coc-translator', 'coc-flutter', 'coc-todolist', 'coc-yaml', 'coc-tasks', 'coc-actions', 'coc-diagnostic', 'coc-java']
"set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')}
"nmap <silent> <TAB> <Plug>(coc-range-select)
"xmap <silent> <TAB> <Plug>(coc-range-select)
" use <tab> for trigger completion and navigate to the next complete item
function! s:check_back_space() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~ '\s'
endfunction
inoremap <silent><expr> <TAB>
\ pumvisible() ? "\<C-n>" :
\ <SID>check_back_space() ? "\<TAB>" :
\ coc#refresh()
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
inoremap <expr> <cr> complete_info()["selected"] != "-1" ? "\<C-y>" : "\<C-g>u\<CR>"
function! s:check_back_space() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction
inoremap <silent><expr> <c-space> coc#refresh()
inoremap <silent><expr> <c-o> coc#refresh()
" Open up coc-commands
nnoremap <c-c> :CocCommand<CR>
" Text Objects
xmap kf <Plug>(coc-funcobj-i)
xmap af <Plug>(coc-funcobj-a)
omap kf <Plug>(coc-funcobj-i)
omap af <Plug>(coc-funcobj-a)
" Useful commands
nnoremap <silent> <space>y :<C-u>CocList -A --normal yank<cr>
nmap <silent> gd <Plug>(coc-definition)
nmap <silent> gy <Plug>(coc-type-definition)
nmap <silent> gi <Plug>(coc-implementation)
nmap <silent> gr <Plug>(coc-references)
nmap <leader>rn <Plug>(coc-rename)
nmap tt :CocCommand explorer<CR>
" coc-translator
nmap ts <Plug>(coc-translator-p)
" Remap for do codeAction of selected region
function! s:cocActionsOpenFromSelected(type) abort
execute 'CocCommand actions.open ' . a:type
endfunction
xmap <silent> <leader>a :<C-u>execute 'CocCommand actions.open ' . visualmode()<CR>
nmap <silent> <leader>a :<C-u>set operatorfunc=<SID>cocActionsOpenFromSelected<CR>g@
" coctodolist
nnoremap <leader>tn :CocCommand todolist.create<CR>
nnoremap <leader>tl :CocList todolist<CR>
nnoremap <leader>tu :CocCommand todolist.download<CR>:CocCommand todolist.upload<CR>
" coc-tasks
noremap <silent> T :CocList tasks<CR>
" ===
" === vim-markdown-toc
" ===
"let g:vmt_auto_update_on_save = 0
"let g:vmt_dont_insert_fence = 1
let g:vmt_cycle_list_item_markers = 1
let g:vmt_fence_text = 'TOC'
let g:vmt_fence_closing_text = '/TOC'
" ===
" === MarkdownPreview
" ===
let g:mkdp_auto_start = 0
let g:mkdp_auto_close = 1
let g:mkdp_refresh_slow = 0
let g:mkdp_command_for_global = 0
let g:mkdp_open_to_the_world = 0
let g:mkdp_open_ip = ''
let g:mkdp_echo_preview_url = 0
let g:mkdp_browserfunc = ''
let g:mkdp_preview_options = {
\ 'mkit': {},
\ 'katex': {},
\ 'uml': {},
\ 'maid': {},
\ 'disable_sync_scroll': 0,
\ 'sync_scroll_type': 'middle',
\ 'hide_yaml_meta': 1
\ }
let g:mkdp_markdown_css = ''
let g:mkdp_highlight_css = ''
let g:mkdp_port = ''
let g:mkdp_page_title = '「${name}」'
" ===
" === Markdown Settings
" ===
" Snippets
""source $XDG_CONFIG_HOME/nvim/md-snippets.vim
source ~/.config/nvim/md-snippets.vim
" auto spell
autocmd BufRead,BufNewFile *.md setlocal spell
" ===
" === vimspector
" ===
let g:vimspector_enable_mappings = 'HUMAN'
function! s:read_template_into_buffer(template)
" has to be a function to avoid the extra space fzf#run insers otherwise
execute '0r ~/.config/nvim/sample_vimspector_json/'.a:template
endfunction
command! -bang -nargs=* LoadVimSpectorJsonTemplate call fzf#run({
\ 'source': 'ls -1 ~/.config/nvim/sample_vimspector_json',
\ 'down': 20,
\ 'sink': function('<sid>read_template_into_buffer')
\ })
noremap <leader>vs :tabe .vimspector.json<CR>:LoadVimSpectorJsonTemplate<CR>
sign define vimspectorBP text=☛ texthl=Normal
sign define vimspectorBPDisabled text=☞ texthl=Normal
""sign define vimspectorPC text=🔶 texthl=SpellBad
" ===
" === vimtex
" ===
"let g:vimtex_view_method = ''
let g:vimtex_view_general_viewer = 'llpp'
let g:vimtex_mappings_enabled = 0
let g:vimtex_text_obj_enabled = 0
let g:vimtex_motion_enabled = 0
let maplocalleader=' '
" ===
" === Undotree
" ===
noremap L :UndotreeToggle<CR>
let g:undotree_DiffAutoOpen = 1
let g:undotree_SetFocusWhenToggle = 1
let g:undotree_ShortIndicators = 1
let g:undotree_WindowLayout = 2
let g:undotree_DiffpanelHeight = 8
let g:undotree_SplitWidth = 24
function g:Undotree_CustomMap()
nmap <buffer> u <plug>UndotreeNextState
nmap <buffer> e <plug>UndotreePreviousState
nmap <buffer> U 5<plug>UndotreeNextState
nmap <buffer> E 5<plug>UndotreePreviousState
endfunc
" ===
" === vim-fugitive
" ===
nnoremap gb :Gblame<CR>
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/muaimingjun/nvim.git
git@gitee.com:muaimingjun/nvim.git
muaimingjun
nvim
nvim
master

搜索帮助

D67c1975 1850385 1daf7b77 1850385