家门不幸啊 😭:
把随身Linux系统格式化重装之后,发现用作Linux数据全盘备份的固态硬盘坏了。
只好找到另一块数据备份的机械硬盘,以恢复随身Linux系统的数据。但是三大件(zsh, tmux, neovim)的配置文件还是几年前的状态。
zsh
,tmux
还好,但是neovim
的插件都太旧了。趁着这次机会,把neovim相关功能替换成更新潮的插件。但在此之前,我需要把先前的neovim
的配置清理一下,提炼出我欣赏的基本功能,并把这些配置做成neovim、vim通用的状态。
1. 安装neovim插件工具 在Windows
系统的wsl
终端中,为neovim
安装插件管理工具vim-plug ,指令如下:
1 2 sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
2. 清理后的init.vim配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 set number set linebreakset cursorlineset cursorcolumnset tabstop=4 set expandtabset shiftwidth =4 set textwidth=120 set nowrap set guifont=Ubuntu\ Mono\ 13 set foldmethod=marker let g:python3_host_prog = '/usr/bin/python3' let g:python_host_prog = '/usr/bin/python' " Vim-Plug (no Plug) " {{{call plug#begin('~/.vim/plugged' )Plug 'flazz/vim-colorschemes' Plug 'jlanzarotta/colorSchemeExplorer' Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' Plug 'jpalardy/vim-slime' Plug 'edkolev/tmuxline.vim' Plug 'luochen1990/rainbow' Plug 'troydm/zoomwintab.vim' Plug 'zhaocai/GoldenView.Vim' Plug 'kien/ctrlp.vim' Plug '907th/vim-auto-save' Plug 'kshenoy/vim-signature' Plug 'dimasg/vim-mark' Plug 'terryma/vim-expand-region' Plug 'Lokaltog/vim-easymotion' Plug 'junegunn/vim-easy-align' Plug 'vim-scripts/VisIncr' Plug 'cohama/lexima.vim' Plug 'scrooloose/nerdcommenter' Plug 'majutsushi/tagbar' call plug#end()"------ ColorScheme个性化配置命令------" {{{set background=darkcolors monokai-chris hi Pmenu ctermbg=127 hi PmenuSel ctermbg=105 "------ vim-airline ------ " {{{let g:airline_powerline_fonts = 1 let g:airline #extensions#tabline#enabled = 1 let g:airline #extensions#tabline#buffer_idx_mode = 1 nmap <leader> 1 <Plug> AirlineSelectTab1nmap <leader> 2 <Plug> AirlineSelectTab2nmap <leader> 3 <Plug> AirlineSelectTab3nmap <leader> 4 <Plug> AirlineSelectTab4nmap <leader> 5 <Plug> AirlineSelectTab5nmap <leader> 6 <Plug> AirlineSelectTab6nmap <leader> 7 <Plug> AirlineSelectTab7nmap <leader> 8 <Plug> AirlineSelectTab8nmap <leader> 9 <Plug> AirlineSelectTab9let g:airline #extensions#tmuxline#enabled = 1 let g:airline_theme ="tomorrow" let airline#extensions#tmuxline#color_template = 'visual' "------ tagbar ------ " {{{nnoremap tb :TagbarToggle<CR> let g:tagbar_sort = 0 let g:tagbar_width = 50 let g:tagbar_autofocus = 1 let g:tagbar_show_linenumbers = 2 let g:tagbar_autoclose = 1 let g:tagbar_autoshowtag = 1 "------ GoldenView ------" {{{let g:goldenview__enable_at_startup = 0 let g:goldenview__enable_default_mapping =0 nmap <silent> sv <Plug> GoldenViewSplitnmap <silent> tm <Plug> GoldenViewSwitchMainnmap <silent> ts <Plug> GoldenViewSwitchTogglenmap <silent> tf <Plug> ToggleGoldenViewAutoResizenmap <silent> sn <Plug> GoldenViewNextnmap <silent> sp <Plug> GoldenViewPreviousnmap <silent> tn :tabn <CR> nmap <silent> tp :tabp <CR> "------ luochen1990/rainbow 彩色括号 ------" {{{let g:rainbow_active = 1 let g:rainbow_conf = { \ 'guifgs' : ['royalblue3' , 'darkorange3' , 'seagreen3' , 'firebrick' ], \ 'ctermfgs' : ['lightblue' , 'lightyellow' , 'lightcyan' , 'lightmagenta' ], \ 'operators' : '_,_' , \ 'parentheses' : ['start=/(/ end=/)/ fold' , 'start=/\[/ end=/\]/ fold' , 'start=/{/ end=/}/ fold' ], \ 'separately' : { \ '*' : {}, \ 'tex' : { \ 'parentheses' : ['start=/(/ end=/)/' , 'start=/\[/ end=/\]/' ], \ }, \ 'lisp' : { \ 'guifgs' : ['royalblue3' , 'darkorange3' , 'seagreen3' , 'firebrick' , 'darkorchid3' ], \ }, \ 'vim' : { \ 'parentheses' : ['start=/(/ end=/)/' , 'start=/\[/ end=/\]/' , 'start=/{/ end=/}/ fold' , 'start=/(/ end=/)/ containedin=vimFuncBody' , 'start=/\[/ end=/\]/ containedin=vimFuncBody' , 'start=/{/ end=/}/ fold containedin=vimFuncBody' ], \ }, \ 'html' : { \ 'parentheses' : ['start=/\v\<((area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)[ >])@!\z([-_:a-zA-Z0-9]+)(\s+[-_:a-zA-Z0-9]+(\=("[^"]*"|' ."'" .'[^' ."'" .']*' ."'" .'|[^ ' ."'" .'"><=`]*))?)*\>/ end=#</\z1># fold' ], \ }, \ 'css' : 0 , \ } \} "------ vim-auto-save -------" {{{let g:auto_save = 1 let g:auto_save_no_updatetime = 1 let g:auto_save_in_insert_mode = 0 "let g:auto_save_postsave_hook = 'TagsGenerate' " this will run :TagsGenerate after each sav "let g:auto_save_events = [" InsertLeave", " TextChangedlet g:auto_save_keep_marks = 0 let g:slime_target = "tmux" xmap ga <Plug> (EasyAlign)nmap ga <Plug> (EasyAlign)let g:mwDefaultHighlightingPalette = 'extended' let g:mwDefaultHighlightingNum = 9 map , <Plug> (easymotion-prefix)let g:ctrlp_max_depth = 3
3. 建立公用的插件文件夹 在上述init.vim
配置文件中,如下指令配置了neovim
插件的安装位置:
1 2 call plug#begin('~/.vim/plugged' )
之所以放在用户主目录的.vim
文件夹之下,是为了与vim
编辑器共享插件目录更方便一些。我们不用手动的建立~/.vim/plugged
,在利用vim-plug
更新插件时,会自动创建该文件夹。终端下执行:
进入neovim
后,在命令模式下:
4. 收尾与未来的工作计划 至此,对我认为的核心编辑功能,为neovim
完成了配置。对于vim
也是类似的道理,我们有如下操作:
1 2 3 4 5 6 # 直接用neovim的配置文件,符号链接为vim的配置文件.vimrc ln -s ~/.config/nvim/init.vim .vimrc # 为vim安装vim-plug的插件管理工具 curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
启动vim
,可以看到如下成功启动的画面;而且vim
与neovim
公用同一套配置和插件文件。
有人或许会认为这是多此一举,但事实上,这么做主要时为了冗余和兼容。因为有时候我们远程登录主机,而大多数主机是自带vim
终端编辑器的。此时我们可以直接把本地的配置文件同步到远端(并在用户主目录下保存为.vimrc
),这样我们直接就有了一个最小化的高效编辑器。
为了简洁,我们只保留了最基本的外观配置、窗口管理、文本编辑(标记/移动/跳转)等。对于代码补全等IDE 功能,我们并没有涉及。
下一步,打算基于lin.nvim 重构基于neovim
的IDE
,并把本文中的最小化功能合并到我的IDE 中。