# nvim **Repository Path**: muaimingjun/nvim ## Basic Information - **Project Name**: nvim - **Description**: 编译安装neovim,并且提供完整的配置文件。欢迎使用。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 6 - **Forks**: 1 - **Created**: 2020-05-13 - **Last Updated**: 2022-05-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # nvim配置文件 (Ubuntu 18.04 测试成功) nvim是vim的**超级**升级版**完美支持vimscript语言** # vim学习推荐列表 * vim编程推荐网站:https://www.w3cschool.cn/vim/cjtr1pu3.html * vim视频推荐课程(玩转Vim 从放弃到爱不释手):https://www.imooc.com/learn/1129 * vim github推荐网站:https://github.com/wsdjeg/vim-galore-zh_cn > vim学习教程都给大家了。 > > 写到最后真心祝愿大家能用**vim**配出属于自己的IDE。 ## 编译安装neovim ### ubuntu18.04 依赖 ```shell script sudo apt install -y npm libncurses5-dev tree libgnome2-dev libgnomeui-dev libgtk2.0-dev libatk1.0-dev libbonoboui2-dev libcairo2-dev libx11-dev libxpm-dev libxt-dev python-dev python3-dev ruby-dev lua5.1 liblua5.1-dev libperl-dev git build-essential cmake clang python3-pip ycmd python3-hamcrest gperf luajit luarocks libuv1-dev libluajit-5.1-dev libunibilium-dev libmsgpack-dev libtermkey-dev libvterm-dev libutf8proc-dev ``` 如果你是`centos`请参考下面依赖 ```shell script yum -y install npm git ncurses-devel ruby ruby-devel lua perl perl-devel python3 python3-devel python2-devel perl-ExtUtils-Embed lrzsz cmake wget gcc gcc-c++ unzip ``` ## 依赖 **node.js安装脚本** ```shell script bash "#!/usr/bin/bash curl -sL install-node.now.sh/lts | bash set -o nounset # error when referencing undefined variable set -o errexit # exit when command fails # Install latest nodejs if [ ! -x "$(command -v node)" ]; then curl --fail -LSs https://install-node.now.sh/latest | sh export PATH="/usr/local/bin/:$PATH" # Or use apt-get # sudo apt-get install nodejs fi # Use package feature to install coc.nvim # for vim8 mkdir -p ~/.vim/pack/coc/start cd ~/.vim/pack/coc/start curl --fail -L https://github.com/neoclide/coc.nvim/archive/release.tar.gz | tar xzfv - # for neovim # mkdir -p ~/.local/share/nvim/site/pack/coc/start # cd ~/.local/share/nvim/site/pack/coc/start # curl --fail -L https://github.com/neoclide/coc.nvim/archive/release.tar.gz | tar xzfv - # Install extensions mkdir -p ~/.config/coc/extensions cd ~/.config/coc/extensions if [ ! -f package.json ] then echo '{"dependencies":{}}'> package.json fi # Change extension names to the extensions you need npm install coc-snippets --global-style --ignore-scripts --no-bin-links --no-package-lock --only=prod" ``` ```shell script pip3 install pylint pynvim jedi ``` ## 安装neovim 1. 拷贝二进制文件(app目录下)并且添加软连接**centos7已经测试成功** ```shell cd ~/.config/nvim/app/ chmod 777 nvim.appimage && mkdir -p /full/path/ && mv nvim.appimage /full/path/ && ln -s /full/path/bin/nvim.appimage /usr/bin/nvim ``` 2. 编译安装**Ubuntu18.04测试成功** ```shell script git clone https://github.com/neovim/neovim/ cd neovim/ make CMAKE_INSTALL_PREFIX=/full/path/ make install cd /usr/bin/ ln -s /full/path/bin/nvim nvim ``` ### 克隆配置文件仓库 ```shell script cd ~/.config/ git clone https://gitee.com/muaimingjun/nvim ``` ## 使用 直接打开nvim会自动安装插件 注意: * 如果打开(python)报错误 Error detected while processing function 95_filetype_changed: line 4: E492: Not an editor command: Semshi enable * 在下面输入`:UpdateRemotePlugins` ## 插件介绍及使用 | 名称 | 作用 | 使用方式 | | :-----------------------------------: | :--------: | :------: | | Plug 'vim-airline/vim-airline' | 状态栏插件 | - | | Plug 'vim-airline/vim-airline-themes' | 状态栏插件 | - | | Plug 'Yggdroot/indentLine' | 缩进线 | - | | Plug 'preservim/nerdtree' | 文件树 | - | | Plug 'mhinz/vim-startify' | 历史文件 | - | | Plug 'RRethy/vim-illuminate' | 显示光标下当前单词的其他用法 | - | | Plug 'AndrewRadev/splitjoin.vim' | 在单行和多行代码形式之间切换 | - | | Plug 'junegunn/gv.vim' | 查看提交记录 | - | | ... | ... | ... | ## 插件列表 ```txt lug '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 '} ``` *插件配置* ```txt " === " === vim-snazzy " === let g:SnazzyTransparent = 1 " 背景不透明设置 colorscheme snazzy " === " === nerdtree " === autocmd vimenter * NERDTree nnoremap v :NERDTreeFind nnoremap g :NERDTreeToggle 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 = '' " === " === vim-easymotion " === nmap ss (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 gf :GitGutterFold nnoremap H :GitGutterPreviewHunk nnoremap g- :GitGutterPrevHunk nnoremap g= :GitGutterNextHunk " === " === 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'] "set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} "nmap (coc-range-select) "xmap (coc-range-select) " use 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 \ pumvisible() ? "\" : \ check_back_space() ? "\" : \ coc#refresh() inoremap pumvisible() ? "\" : "\" inoremap complete_info()["selected"] != "-1" ? "\" : "\u\" function! s:check_back_space() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~# '\s' endfunction inoremap coc#refresh() inoremap coc#refresh() " Open up coc-commands nnoremap :CocCommand " Text Objects xmap kf (coc-funcobj-i) xmap af (coc-funcobj-a) omap kf (coc-funcobj-i) omap af (coc-funcobj-a) " Useful commands nnoremap y :CocList -A --normal yank nmap gd (coc-definition) nmap gy (coc-type-definition) nmap gi (coc-implementation) nmap gr (coc-references) nmap rn (coc-rename) nmap tt :CocCommand explorer " coc-translator nmap ts (coc-translator-p) " Remap for do codeAction of selected region function! s:cocActionsOpenFromSelected(type) abort execute 'CocCommand actions.open ' . a:type endfunction xmap a :execute 'CocCommand actions.open ' . visualmode() nmap a :set operatorfunc=cocActionsOpenFromSelectedg@ " coctodolist nnoremap tn :CocCommand todolist.create nnoremap tl :CocList todolist nnoremap tu :CocCommand todolist.download:CocCommand todolist.upload " coc-tasks noremap T :CocList tasks " === " === 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 ./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('read_template_into_buffer') \ }) noremap vs :tabe .vimspector.json:LoadVimSpectorJsonTemplate 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 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 u UndotreeNextState nmap e UndotreePreviousState nmap U 5UndotreeNextState nmap E 5UndotreePreviousState endfunc " === " === vim-fugitive " === nnoremap gb :Gblame ``` * 有问题反馈这里: * QQ群: 260305404 * QQ: 2667004988 * vx: hyh2667004988 ## 贡献 此插件**正在开发**中,因此,如果您发现错误或有建议,请不要犹豫来提交问题,提交请求请求或给我发送电子邮件!