init.vim " __ ____ __ _ ___ _____ __ __ ____ ____"| \/ \ \ / / | \ | \ \ / /_ _| \/ | _ \ / ___|"| |\/| |\ V / | \| |\ \ / / | || |\/| | |_) | |"| | | | | | | |\ | \ V / | || | | | _ <| |___"|_| |_| |_| |_| \_| \_/ |___|_| |_|_| \_\\____|" Author: theRunCom" ===" === Basic" ===set number " 显示行号" 使用:set number?可以显示当前值set ruler " 显示光标位置set showcmd " 右下角显示命令set nocompatible " 去掉有关vi一致性模式,避免操作习惯上的局限.set scrolloff=5set backspace=indent,eol,start " Backspace键用不了,或者时灵时不灵.所以主动配置set laststatus=2 " 1=启动显示状态行, 2=总是显示状态行set wildmenu " 使用Tab键补全时,在状态栏显示匹配的列表set showmatch " 高亮显示匹配的括号set hlsearch " 高亮匹配结果set ignorecase " 搜索时默认忽略大小写set smartcase " 搜索时智能匹配大小写syntax enable " 开启语法高亮filetype plugin indent on " 检测文件类型,并载入文件类型插件,为特定文件类型载入相关缩进文件set shift 自动缩进时,缩进长度为4 set encoding=utf-8 set cursorline " 突出显示当前行set mouse=a set tabstop=4 " 设置 Tab 键宽度为 4 个空格" 禁用交换文件set noswapfile" 禁用undo文件set noundofile"Vim自动探测fileencodings的顺序列表"启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式"并且将fileencoding设置为最终探测到的字符编码方式set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936set termencoding=utf-8 " Vim所工作的终端的字符编码方式set autoindent " 自动缩进set autoread " 文件变化之后自动重读" 打开文件时光标返回上次离开的位置autocmd BufReadPost * execute "normal g&#39;\""" ===" === Basic Mappings" ===let mapleader=" "noremap Q :qnoremap S :w" Open the vimrc file anytimenoremap rc :e C:/Users/17724/AppData/Local/nvim/init.vim" pastennoremap P "+p" make Y to copy till the end of the linennoremap Y y$" Copy to system clipboardvnoremap Y "+y" Searchnoremap :nohlsearch" 9 key: go to the end of the linenoremap 9 $" K/J keys for 5 times k/j (faster navigation)noremap K 5knoremap J 5jmap ggVG"Searchingnoremap - Nnoremap = n" Use + arrow keys for moving the cursor around windowsnoremap knoremap jnoremap hnoremap lnoremap qf o" Disable the default s keynoremap s map sl :set splitright:vsplitmap sh :set nosplitright:vsplitmap sj :set splitbelow:splitmap sk :set nosplitbelow:split" Resize splits with arrow keysnoremap :res +5noremap :res -5noremap :vertical resize-5noremap :vertical resize+5" make new tanlinemap tu :tabemap tn :+tabnextmap tp :-tabnext" ===" === Plug" ===call plug#begin(&#39;G:\Neovim\share\nvim\plugged&#39;)Plug &#39;mhinz/vim-startify&#39;Plug &#39;arzg/vim-colors-xcode&#39;Plug &#39;voldikss/vim-translator&#39;Plug &#39;vim-airline/vim-airline&#39;Plug &#39;vim-airline/vim-airline-themes&#39;Plug &#39;neoclide/coc.nvim&#39;, {&#39;branch&#39;: &#39;release&#39;}Plug &#39;preservim/nerdtree&#39;Plug &#39;SirVer/ultisnips&#39;Plug &#39;jiangmiao/auto-pairs&#39;call plug#end()" === vim-startify ===let g:startify_custom_header = [\&#39;&#39;,\&#39;&#39;,\&#39; VVVVVVVV VVVVVVVV iiii &#39;,\&#39; V::::::V V::::::Vi::::i &#39;,\&#39; V::::::V V::::::V iiii &#39;,\&#39; V::::::V V::::::V &#39;,\&#39; V:::::V V:::::Viiiiiii mmmmmmm mmmmmmm &#39;,\&#39; V:::::V V:::::V i:::::i mm:::::::m m:::::::mm &#39;,\&#39; V:::::V V:::::V i::::i m::::::::::mm::::::::::m &#39;,\&#39; V:::::V V:::::V i::::i m::::::::::::::::::::::m &#39;,\&#39; V:::::V V:::::V i::::i m:::::mmm::::::mmm:::::m &#39;,\&#39; V:::::V V:::::V i::::i m::::m m::::m m::::m &#39;,\&#39; V:::::V:::::V i::::i m::::m m::::m m::::m &#39;,\&#39; V:::::::::V i::::i m::::m m::::m m::::m &#39;,\&#39; V:::::::V i::::::im::::m m::::m m::::m &#39;,\&#39; V:::::V i::::::im::::m m::::m m::::m &#39;,\&#39; V:::V i::::::im::::m m::::m m::::m &#39;,\&#39; VVV iiiiiiiimmmmmm mmmmmm mmmmmm &#39;,\]let g:startify_session_persistence = 1let g:startify_session_delete_buffers = 1let g:startify_change_to_dir = 0let g:startify_change_to_vcs_root = 1let g:startify_fortune_use_unicode = 1let g:startify_padding_left = 3let g:startify_enable_special = 0let g:startify_session_number = 10nmap :Startifynmap :SLoadnmap :SSavenmap :SDeletenmap :SClose" === vim-colors-xcode ==let g:signify_sign_add = &#39;┃&#39;let g:signify_sign_change = &#39;┃&#39;let g:signify_sign_delete = &#39;•&#39;let g:signify_sign_show_count = 0 " Don’t show the number of deleted lines." Update Git signs every time the text is changedautocmd User SignifySetup\ execute &#39;autocmd! signify&#39; |\ autocmd signify TextChanged,TextChangedI * call sy#start()colorscheme xcodedark" === vim-translator ===" Echo translation in the cmdlinenmap t Translatevmap t TranslateV" Display translation in a windownmap w TranslateWvmap w TranslateWV" Replace the text with translationnmap r TranslateRvmap r TranslateRV" Translate the text in clipboardnmap x TranslateX" only work in neovimnnoremap translator#window#float#has_scroll() ?\ translator#window#float#scroll(1) : "\"nnoremap translator#window#float#has_scroll() ?\ translator#window#float#scroll(0) : "\"" === vim-airline ===let g:airline#extensions#tabline#enabled = 1let g:airline_theme=&#39;
murmur&#39;let g:airline#extensions#tabline#formatter = &#39;unique_tail&#39;" 10% ☰ 10/100 ln : 20 介绍" 10% - 10 percent down the top of the file" ☰ 10 - current line 10" /100 ln - of 100 lines" : 20 - current column 20" === coc.nvim ===" coc_extensionslet g:coc_global_extensiOns= [\&#39;coc-json&#39;,\&#39;coc-marketplace&#39;,\&#39;coc-vimlsp&#39;,\&#39;coc-clangd&#39;,\&#39;coc-powershell&#39;]"----------------------------------------------------------------------" 基本配置"----------------------------------------------------------------------" Coc约束 -- 没设置可能导致文本编辑失败set hidden" 刷新时间set updatetime=100" Coc约束set shortmess+=c" coc的tab补全inoremap \ pumvisible() ? "\<C-n>" :\ check_back_space() ? "\<TAB>" :\ coc#refresh()inoremap pumvisible() ? "\<C-p>" : "\<C-h>"function! s:check_back_space() abortlet col = col(&#39;.&#39;) - 1return !col || getline(&#39;.&#39;)[col - 1] =~# &#39;\s&#39;endfunction"----------------------------------------------------------------------" 补全配置"----------------------------------------------------------------------" 使用CR 确认补全inoremap pumvisible() ? "\<C-y>" : "\<C-g>u<CR>"" 对 log 文件禁用补全autocmd FileType log let b:coc_suggest_disable = 1"----------------------------------------------------------------------" 功能配置"----------------------------------------------------------------------let g:coc_enable_locatiOnlist= 0" 下一个占位符let g:coc_snippet_next = &#39;&#39;" 上一个占位符let g:coc_snippet_prev = &#39;&#39;" 格式化代码xmap <Leader>F <Plug>(coc-format-selected)nmap <Leader>F <Plug>(coc-format-selected)" 支持json注释autocmd FileType json syntax match Comment +\/\/.\+$+" 显示当前buffer下的错误信息nmap <silent> <Leader>el :CocList diagnostics<CR>" 下一个错误nmap en (coc-diagnostic-next)"
上一个错误nmap <silent> <Leader>em <Plug>(coc-diagnostic-prev)" 转到定义nmap td (coc-definition)"
转到类型定义nmap <silent> <Leader>ty <Plug>(coc-type-definition)" 转到实现nmap ti (coc-implementation)"
转到声明nmap <silent> <Leader>tc <Plug>(coc-declaration)" 转到引用nmap tr (coc-references)"
show documentation in preview window.nnoremap <silent> <LEADER>h :call <SID>show_documentation()<CR>function! s:show_documentation()if (index([&#39;vim&#39;,&#39;help&#39;], &filetype) >= 0)execute &#39;h &#39;.expand(&#39;&#39;)elseif (coccall CocActionAsync(&#39;doHover&#39;)elseexecute &#39;!&#39; . &keywordprg . " " . expand(&#39;&#39;)endifendfunction" Highlight the symbol and its references when holding the cursor.autocmd CursorHold * silent call CocActionAsync(&#39;highlight&#39;)" Symbol renaming.nmap <leader>rn <Plug>(coc-rename)"----------------------------------------------------------------------" 多光标配置"----------------------------------------------------------------------" 在当前位置放下光标nmap <silent> <C-i> <Plug>(coc-cursors-position)" 在选中位置放下光标xmap (coc-cursors-range)"
选中相同的单词nmap <expr> <silent> <C-;> <SID>select_current_word()function! s:select_current_word()if !get(g:, &#39;coc_cursors_activated&#39;, 0)return "\(coc-cursors-word)"
endifreturn "*\(coc-cursors-word):nohlsearch\"
endfunc" Remap for do codeAction of selected regionfunction! s:cocActionsOpenFromSelected(type) abortexecute &#39;CocCommand actions.open &#39; . a:typeendfunctionxmap a (coc-codeaction-selected)nmap aw (coc-codeaction-selected)w"
=== NERDTree ===let g:NERDTreeDirArrowExpandable = &#39;▸&#39;let g:NERDTreeDirArrowCollapsible = &#39;▾&#39;nnoremap tt :NERDTreeToggle<CR>nnoremap ff :NERDTreeFind<CR>" NerdCommenter" Create default mappingslet g:NERDCreateDefaultMappings = 1" Add spaces after comment delimiters by defaultlet g:NERDSpaceDelims = 1" Use compact syntax for prettified multi-line commentslet g:NERDCompactSexyComs = 1" Align line-wise comment delimiters flush left instead of following code indentationlet g:NERDDefaultAlign = &#39;left&#39;" Set a language to use its alternate delimiters by defaultlet g:NERDAltDelims_java = 1" Add your own custom formats or override the defaultslet g:NERDCustomDelimiters = { &#39;c&#39;: { &#39;left&#39;: &#39;/**&#39;,&#39;right&#39;: &#39;*/&#39; } }" Allow commenting and inverting empty lines (useful when commenting a region)let g:NERDCommentEmptyLines = 1" Enable trimming of trailing whitespace when uncommentinglet g:NERDTrimTrailingWhitespace = 1" Enable NERDCommenterToggle to check all selected lines is commented or not let g:NERDToggleCheckAllLines = 1" === UltiSnips ===let g:UltiSnipsExpandTrigger="<c-e>"let g:UltiSnipsJumpForwardTrigger="<c-k>"let g:UltiSnipsJumpBackwardTrigger="<c-j>"let g:UltiSnipsSnippetDirectories = [&#39;~/AppData/Local/nvim/ultisnips&#39;]noremap r :call CompileRunGcc()func! CompileRunGcc()exec "w"if &filetype == &#39;c&#39;exec "!gcc % -o %< & %<" elseif &filetype == &#39;cpp&#39;set splitbelowexec "!g++ -Wall % -o %<""exec "! %<":sp:res -5:term %< endif endfunc