Ubuntu Server 20.04 LTS 环境下搭建vim 编辑器Python IDE的详细步骤
时间:2022-08-11 10:00:52
这篇文章主要介绍了Ubuntu Server 20.04 LTS 环境下搭建vim 编辑器Python IDE,首先是安装配置vim-plug及安装coc.nvim插件,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下!
安装配置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 <silent><expr> <TAB> \ coc#pum#visible() ? coc#pum#next(1): \ CheckBackspace() ? "\<Tab>" : \ coc#refresh() inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>" inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm() \: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>" function! CheckBackspace() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~# '\s' endfunction " Use <c-space> to trigger completion. if has('nvim') inoremap <silent><expr> <c-space> coc#refresh() else inoremap <silent><expr> <c-@> coc#refresh() endif " Use `[g` and `]g` to navigate diagnostics " Use `:CocDiagnostics` to get all diagnostics of current buffer in location list. nmap <silent> [g <Plug>(coc-diagnostic-prev) nmap <silent> ]g <Plug>(coc-diagnostic-next) " GoTo code navigation. 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) " Use K to show documentation in preview window. nnoremap <silent> K :call ShowDocumentation()<CR> 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 <leader>rn <Plug>(coc-rename) " Formatting selected code. xmap <leader>f <Plug>(coc-format-selected) nmap <leader>f <Plug>(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: `<leader>aap` for current paragraph xmap <leader>a <Plug>(coc-codeaction-selected) nmap <leader>a <Plug>(coc-codeaction-selected) " Remap keys for applying codeAction to the current buffer. nmap <leader>ac <Plug>(coc-codeaction) " Apply AutoFix to problem on the current line. nmap <leader>qf <Plug>(coc-fix-current) " Run the Code Lens action on the current line. nmap <leader>cl <Plug>(coc-codelens-action) " Map function and class text objects " NOTE: Requires 'textDocument.documentSymbol' support from the language server. xmap if <Plug>(coc-funcobj-i) omap if <Plug>(coc-funcobj-i) xmap af <Plug>(coc-funcobj-a) omap af <Plug>(coc-funcobj-a) xmap ic <Plug>(coc-classobj-i) omap ic <Plug>(coc-classobj-i) xmap ac <Plug>(coc-classobj-a) omap ac <Plug>(coc-classobj-a) " Remap <C-f> and <C-b> for scroll float windows/popups. if has('nvim-0.4.0') || has('patch-8.2.0750') nnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>" nnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>" inoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>" inoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>" vnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>" vnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>" endif " Use CTRL-S for selections ranges. " Requires 'textDocument/selectionRange' support of language server. nmap <silent> <C-s> <Plug>(coc-range-select) xmap <silent> <C-s> <Plug>(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', <f-args>) " 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 <silent><nowait> <space>a :<C-u>CocList diagnostics<cr> " Manage extensions. nnoremap <silent><nowait> <space>e :<C-u>CocList extensions<cr> " Show commands. nnoremap <silent><nowait> <space>c :<C-u>CocList commands<cr> " Find symbol of current document. nnoremap <silent><nowait> <space>o :<C-u>CocList outline<cr> " Search workspace symbols. nnoremap <silent><nowait> <space>s :<C-u>CocList -I symbols<cr> " Do default action for next item. nnoremap <silent><nowait> <space>j :<C-u>CocNext<CR> " Do default action for previous item. nnoremap <silent><nowait> <space>k :<C-u>CocPrev<CR> " Resume latest coc list. nnoremap <silent><nowait> <space>p :<C-u>CocListResume<CR>
设置F5一键执行代码
"一键运行代码 map <F5> :call CompileRunGcc()<CR> 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