vim简介 Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
所有的 Unix Like 系统都会内建 vi 文本编辑器,其他的文本编辑器则不一定会存在。
但是目前我们使用比较多的是 vim 编辑器。
vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
vim主要有以下几个优点.
可以不使用鼠标,完全用键盘操作。 系统资源占用小,打开大文件毫无压力。 键盘命令变成肌肉记忆以后,操作速度极快。 同时现今很多开源软件(ranger,lazygit)采用的快捷键都与vim类似.学习vim变得很有必要.
但我这里采用的是neovim
NeoVim 旨在成为Vim的升级版,有不少对它的介绍,我就不赘述了。NeoVim官网强调了它的四大特点:
Powerful plugins(强大的插件) Better out-of-the-box(更好的开箱即用) First-class embedding(高度支持嵌入模式) Drop-in replacement for Vim(直接替换Vim)。 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 "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" set number set termguicolors colorscheme NeoSolarized set background=darkset encoding=utf-8 set linebreakset nowrapset scrolloff=5 set expandtabset tabstop=4 set softtabstop=4 set shiftwidth =4 filetype on filetype plugin on filetype indent on set list listchars=extends:❯,precedes:❮,tab :▸\ ,trail:˽,space:·set cursorcolumnset cursorlineset ignorecaseset smartcaseset spell spelllang=en_usset autochdir"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ca w!! w !sudo tee "%" tnoremap <ESC> <C-\><C-n>
vim插件管理器 参考 https://www.jianshu.com/p/0c83e6aed270
每安装一个插件最好都要去github官网看下,顺便看看文档, 会让你安装的插件用起来更顺手.
安装 现在流行的有这几种插件管理器,VBunle
,NeoBunle
,vim-plug
, 我这里采用的是vim-plug
.
neovim下安装命令
1 2 curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
vim下安装命令
1 2 curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
用法 安装插件 要安装插件,你必须如下所示首先在 Vim 配置文件中声明它们。一般 Vim 的配置文件是 ~/.vimrc
,Neovim 的配置文件是 ~/.config/nvim/init.vim
。请记住,当你在配置文件中声明插件时,列表应该以 call plug#begin(PLUGIN_DIRECTORY)
开始,并以 plug#end()
结束。
例如,我们安装 “lightline.vim” 插件。为此,请在 ~/.vimrc
的顶部添加以下行。
1 2 3 call plug#begin ('~/.vim/plugged' ) Plug 'itchyny/lightline.vim' call plug#end ()
在 vim 配置文件中添加上面的行后,通过输入以下命令重新加载::source ~/.vimrc
或者,只需重新加载 Vim 编辑器。
现在,打开 vim 编辑器:$ vim
使用以下命令检查状态::PlugStatus
然后输入下面的命令,然后按回车键安装之前在配置文件中声明的插件。:PlugInstall
更新插件 要更新插件,请运行:
更新插件后,按下 d
查看更改。或者,你可以之后输入 :PlugDiff
。
审查插件 有时,更新的插件可能有新的 bug 或无法正常工作。要解决这个问题,你可以简单地回滚有问题的插件。输入 :PlugDiff
命令,然后按回车键查看上次 :PlugUpdate
的更改,并在每个段落上按 X
将每个插件回滚到更新前的前一个状态。
删除插件 删除一个插件删除或注释掉你以前在你的 vim 配置文件中添加的 plug
命令。然后,运行 :source ~/.vimrc
或重启 Vim 编辑器。最后,运行以下命令卸载插件::PlugClean
该命令将删除 vim 配置文件中所有未声明的插件。
升级 Vim-plug 要升级vim-plug本身,请输入::PlugUpgrade
如你所见,使用 Vim-plug 管理插件并不难。它简化了插件管理。现在去找出你最喜欢的插件并使用 Vim-plug 来安装它们。
安装插件 插件这个东西,少即是多,运行速度会更快
工具篇 yianwillis/vimcdoc
Plug 'yianwillis/vimcdoc'
编码优化插件 代码补全 vim要有python支持,如果没有需要输入pip install neovim
命令安装neovim的python支持模块.
Plug 'Valloric/YouCompleteMe'
上面的插件对C++的支持是很强大的但是在麻烦.后来改用deoplete
了
1 2 3 4 5 6 7 Plug 'shougo/unite.vim' " deoplete依赖 Plug 'Shougo/deoplete.nvim' " 代码补全Plug 'jiangmiao/auto-pairs' " 括号自动补全 Plug 'tpope/vim-surround' Plug 'scrooloose/syntastic' " 静态代码分析Plug 'neomake/neomake' " 语法检查 Plug 'mg979/vim-visual-multi' " 多光标
GitHelp 1 2 Plug 'tpope/vim-fugitive' " git plugin Plug 'airblade/vim-gitgutter' "
文件树 1 Plug 'shougo/vimfiler.vim' " file explorer 这个项目已经不维护了
现在采用shougo/defx.nvim
这个插件
1 2 3 4 5 6 7 8 9 10 if has ('nvim' ) Plug 'Shougo/defx.nvim' , { 'do' : ':UpdateRemotePlugins' } else Plug 'Shougo/defx.nvim' Plug 'roxma/nvim-yarp' Plug 'roxma/vim-hug-neovim-rpc' endif " 这是defx的两个支持插件 Plug 'kristijanhusak/defx-git' Plug 'kristijanhusak/defx-icons'
defx 没有提供默认的键盘映射,所以需要自己进行设置
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 " 这是我的配置. 参考文档种的配置做的修改. 还需完善 autocmd FileType defx call s:defx_my_settings() function! s:defx_my_settings() abort setl nonumber setl norelativenumber setl listchars= " Define mappings nnoremap <silent><buffer><expr> <CR > \ defx#do_action ('open' ) nnoremap <silent><buffer><expr> c \ defx#do_action ('copy' ) nnoremap <silent><buffer><expr> m \ defx#do_action ('move' ) nnoremap <silent><buffer><expr> p \ defx#do_action ('paste' ) nnoremap <silent><buffer><expr> l \ defx#do_action ('open' ) nnoremap <silent><buffer><expr> E \ defx#do_action ('open' , 'vsplit' ) nnoremap <silent><buffer><expr> P \ defx#do_action ('open' , 'pedit' ) " nnoremap <silent><buffer><expr> l \ defx#do_action('open_or_close_tree') nnoremap <silent><buffer><expr> K \ defx#do_action('new_directory') nnoremap <silent><buffer><expr> N \ defx#do_action('new_file') nnoremap <silent><buffer><expr> M \ defx#do_action('new_multiple_files') nnoremap <silent><buffer><expr> C \ defx#do_action('toggle_columns', \ 'mark:filename:type:size:time') nnoremap <silent><buffer><expr> S \ defx#do_action('toggle_sort', 'time') nnoremap <silent><buffer><expr> d \ defx#do_action('remove') nnoremap <silent><buffer><expr> r \ defx#do_action('rename') nnoremap <silent><buffer><expr> ! \ defx#do_action('execute_command') nnoremap <silent><buffer><expr> x \ defx#do_action('execute_system') nnoremap <silent><buffer><expr> yy \ defx#do_action('yank_path') nnoremap <silent><buffer><expr> . \ defx#do_action('toggle_ignored_files') nnoremap <silent><buffer><expr> ; \ defx#do_action('repeat') nnoremap <silent><buffer><expr> h \ defx#is_opened_tree() ? defx#do_action('close_tree') :defx#do_action('cd', ['..']) nnoremap <silent><buffer><expr> ~ \ defx#do_action('cd') nnoremap <silent><buffer><expr> q \ defx#do_action('quit') nnoremap <silent><buffer><expr> <Space> \ defx#do_action('toggle_select') . 'j' nnoremap <silent><buffer><expr> * \ defx#do_action('toggle_select_all') nnoremap <silent><buffer><expr> j \ line('.') == line('$') ? 'gg' : 'j' nnoremap <silent><buffer><expr> k \ line('.') == 1 ? 'G' : 'k' nnoremap <silent><buffer><expr> <C-l> \ defx#do_action('redraw') nnoremap <silent><buffer><expr> <C-g> \ defx#do_action('print') nnoremap <silent><buffer><expr> cd \ defx#do_action('change_vim_cwd') endfunction
语法树 1 Plug 'majutsushi/tagbar' "浏览tag
美化篇 安装开始界面插件 1 Plug 'mhinz/vim-startify' "start page
安装主题 Plug 'icymind/NeoSolarized' "主题
安装状态栏插件 状态栏能显示当前的状态,还是有不少用处的,好看的状态栏就是为了美观,毕竟谁也不喜欢对着个难看的东西吧。 这里使用的是 airline :
1 2 Plug 'vim-airline/vim-airline' "状态栏工具 Plug 'vim-airline/vim-airline-themes' " 状态栏主题
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 "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " Airline config " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " let g:airline_powerline_fonts = 0 let g:airline_theme = 'bubblegum' let g:airline#extensions#whitespace#enabled = 0 " to use fancy symbols for airline, uncomment the following lines and use a" patched font (more info on the README.rst) if !exists('g:airline_symbols') let g:airline_symbols = {} endif let g:airline_left_sep = '⮀' let g:airline_left_alt_sep = '⮁' let g:airline_right_sep = '⮂' let g:airline_right_alt_sep = '⮃' let g:airline_symbols.branch = '⭠' let g:airline_symbols.readonly = '⭤' let g:airline_symbols.linenr = '⭡' let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tabline#show_tabs = 1 let g:airline#extensions#tabline#left_sep = '⮀' let g:airline#extensions#tabline#left_alt_sep = '⮁' let g:airline#extensions#tabline#right_sep = '⮂' let g:airline#extensions#tabline#right_alt_sep = '⮃'
这是我自己的neovim配置
https://github.com/tabris233/config/blob/master/neovim/init.vim