安装配置vim-plug
安装vim-plug
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
配置vim-plug
在家目录下创建.vimrc配置文件
在.vimrc下填写配置
vim ~/.vimrc
call plug#begin() Plug 'neoclide/coc.nvim' Plug 'asins/vimcdoc' Plug 'preservim/nerdtree' Plug 'mhinz/vim-startify' Plug 'luochen1990/rainbow' call plug#end()
安装coc.nvim插件
更新vim
sudo add-apt-repository ppa:jonathonf/vim sudo apt-get update sudo apt-get install vim
安装node
sudo apt update sudo apt install nodejs npm sudo curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - sudo apt install nodejs
添加coc.nvim到.vimrc文件
call plug#bing() Plug 'neoclide/coc.nvim', {'branch': 'release'} call plug#end()
:PlugInstall 安装自动补全插件
:CocInfo 检查插件安装情况
:CocInstall coc-json coc-tsserver支持JSON和Typescript相关子插件
配置服务器
:CocConfig添加Python配置数据
:CocInstall coc-pyright
// be careful not to condense the hierarchy as it breaks pyls "languageserver": { "python": { "command": "python", "args": [ "-mpyls", "-vv", "--log-file", "/tmp/lsp_python.log" ], "trace.server": "verbose", "filetypes": [ "python" ], "settings": { "pyls": { "enable": true, "trace": { "server": "verbose" }, "commandPath": "", "configurationSources": [ "pycodestyle" ], "plugins": { "jedi_completion": { "enabled": true }, "jedi_hover": { "enabled": true }, "jedi_references": { "enabled": true }, "jedi_signature_help": { "enabled": true }, "jedi_symbols": { "enabled": true, "all_scopes": true }, "mccabe": { "enabled": true, "threshold": 15 }, "preload": { "enabled": true }, "pycodestyle": { "enabled": true }, "pydocstyle": { "enabled": false, "match": "(?!test_).*\\.py", "matchDir": "[^\\.].*" }, "pyflakes": { "enabled": true }, "rope_completion": { "enabled": true }, "yapf": { "enabled": true } } } } } }
设置TAB 代码补全
在.vimrc文件中添加以下代码
set nobackup set nowritebackup set updatetime=300 set signcolumn=yes inoremap\ coc#pum#visible() ? coc#pum#next(1): \ CheckBackspace() ? "\ " : \ coc#refresh() inoremap coc#pum#visible() ? coc#pum#prev(1) : "\ " inoremap coc#pum#visible() ? coc#pum#confirm() \: "\ u\ \ =coc#on_enter()\ " function! CheckBackspace() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~# '\s' endfunction " Use to trigger completion. if has('nvim') inoremap coc#refresh() else inoremap coc#refresh() endif " Use `[g` and `]g` to navigate diagnostics " Use `:CocDiagnostics` to get all diagnostics of current buffer in location list. nmap [g (coc-diagnostic-prev) nmap ]g (coc-diagnostic-next) " GoTo code navigation. nmap gd (coc-definition) nmap gy (coc-type-definition) nmap gi (coc-implementation) nmap gr (coc-references) " Use K to show documentation in preview window. nnoremap K :call ShowDocumentation() function! ShowDocumentation() if CocAction('hasProvider', 'hover') call CocActionAsync('doHover') else call feedkeys('K', 'in') endif endfunction " Highlight the symbol and its references when holding the cursor. autocmd CursorHold * silent call CocActionAsync('highlight') " Symbol renaming. nmap rn (coc-rename) " Formatting selected code. xmap f (coc-format-selected) nmap f (coc-format-selected) augroup mygroup autocmd! " Setup formatexpr specified filetype(s). autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') " Update signature help on jump placeholder. autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') augroup end " Applying codeAction to the selected region. " Example: ` aap` for current paragraph xmap a (coc-codeaction-selected) nmap a (coc-codeaction-selected) " Remap keys for applying codeAction to the current buffer. nmap ac (coc-codeaction) " Apply AutoFix to problem on the current line. nmap qf (coc-fix-current) " Run the Code Lens action on the current line. nmap cl (coc-codelens-action) " Map function and class text objects " NOTE: Requires 'textDocument.documentSymbol' support from the language server. xmap if (coc-funcobj-i) omap if (coc-funcobj-i) xmap af (coc-funcobj-a) omap af (coc-funcobj-a) xmap ic (coc-classobj-i) omap ic (coc-classobj-i) xmap ac (coc-classobj-a) omap ac (coc-classobj-a) " Remap and for scroll float windows/popups. if has('nvim-0.4.0') || has('patch-8.2.0750') nnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\ " nnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\ " inoremap coc#float#has_scroll() ? "\ =coc#float#scroll(1)\ " : "\ " inoremap coc#float#has_scroll() ? "\ =coc#float#scroll(0)\ " : "\ " vnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\ " vnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\ " endif " Use CTRL-S for selections ranges. " Requires 'textDocument/selectionRange' support of language server. nmap (coc-range-select) xmap (coc-range-select) " Add `:Format` command to format current buffer. command! -nargs=0 Format :call CocActionAsync('format') " Add `:Fold` command to fold current buffer. command! -nargs=? Fold :call CocAction('fold', ) " Add `:OR` command for organize imports of the current buffer. command! -nargs=0 OR :call CocActionAsync('runCommand', 'editor.action.organizeImport') " Add (Neo)Vim's native statusline support. " NOTE: Please see `:h coc-status` for integrations with external plugins that " provide custom statusline: lightline.vim, vim-airline. set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} " Mappings for CoCList " Show all diagnostics. nnoremap a : CocList diagnostics " Manage extensions. nnoremap e : CocList extensions " Show commands. nnoremap c : CocList commands " Find symbol of current document. nnoremap o : CocList outline " Search workspace symbols. nnoremap s : CocList -I symbols " Do default action for next item. nnoremap j : CocNext " Do default action for previous item. nnoremap k : CocPrev " Resume latest coc list. nnoremap p : CocListResume
设置F5一键执行代码
"一键运行代码 map:call CompileRunGcc() func! CompileRunGcc() exec "w" if &filetype == 'c' exec "!g++ % -o %<" exec "!time ./%<" elseif &filetype == 'cpp' exec "!g++ % -o %<" exec "!time ./%<" elseif &filetype == 'java' exec "!javac %" exec "!time java %<" elseif &filetype == 'sh' :!time bash % elseif &filetype == 'python' exec "!time python3 %" elseif &filetype == 'html' exec "!firefox % &" elseif &filetype == 'go' " exec "!go build %<" exec "!time go run %" elseif &filetype == 'mkd' exec "!~/.vim/markdown.pl % > %.html &" exec "!firefox %.html &" endif endfunc
到此这篇关于Ubuntu Server 20.04 LTS 环境下搭建vim 编辑器Python IDE的文章就介绍到这了,更多相关vim 编辑器Python IDE内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!