长期使用VSCode中的Vim插件,发现在linux下避免不了在终端中使用VIM,目的是将现在VSCode Vim中的使用习惯切换到原生VIM中
//从github中获取Vimgit clone https://github.com/vim/vim.git//配置安装./configure --with-features=huge \ --enable-multibyte \ --enable-rubyinterp=yes \ --enable-python3interp=yes \ --with-python-config-dir=/usr/lib/python3.13/config-3.13-x86_64-linux-gnu \ --enable-perlinterp=yes \ --enable-luainterp=yes \ --enable-cscope \ --enable-gui=auto \ --prefix=/usr/localmakesudo make install//安装vundleVimgit clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
//配置~/.vimrcUbuntu VIM不支持“+y及“+p可以使用vim-gtk
" =======================" vimrc配置" =======================" -----------------------" => 基本" -----------------------
" 显示行号set nu" 高亮关键字syntax on" 解决乱码问题set t_RV=
" 设置leaderlet mapleader = "\<space>"" 使用鼠标set mouse=a" 搜索结果高亮显示set hlsearch
" 一个tab等于4个空格set tabstop=4set shiftwidth=4" 表示Tab自动转换成空格set expandtab
" 智能对齐set autoindentset smartindent" 解决删除键不生效set backspace=indent,eol,start
" 行尾结束符, 设置为unixset fileformat=unix" 文件编码" fenc=utf-8" 配置粘贴不自动换行的快捷键set pastetoggle=<F9>
" 允许折叠set foldenable" 手动折叠set foldmethod=manual
" 自动保存set autowrite" 记录历史的行数set history=10000
" 设置搜索时忽略大小写set ignorecase" 高亮显示光标所在的行和列" 显示颜色set t_Co=256set bg=darkset cursorline" set cursorcolumn" 自定义光标样式highlight CursorLine cterm=NONE ctermbg=black ctermfg=brown guibg=NONE guifg=NONEhighlight CursorColumn cterm=NONE ctermbg=black ctermfg=brown guibg=NONE guifg=NONE
" 显示tab和空格set list" 设置tab和空格样式set lcs=tab:\|\ ,nbsp:%,trail:·
" 设定行首tab为灰色highlight LeaderTab guifg=#666666" 匹配行首tabmatch LeaderTab /^\t/
" 输入的命令显示出来set showcmd" 启动显示状态行(1),总是显示状态行(2)set laststatus=2
" -----------------------" => 安装插件" -----------------------" 关闭vi兼容模式set nocompatible
" 关闭文件类型检测filetype off" 运行时路径, 插件set rtp+=~/.vim/bundle/Vundle.vimcall vundle#begin()
" 插件管理器Plugin 'VundleVim/Vundle.vim'" -----------------------" => github 仓库中的插件" -----------------------" 自动补全Plugin 'Valloric/YouCompleteMe'" 底栏和顶栏Plugin 'vim-airline/vim-airline'" 侧边栏显示git修改Plugin 'airblade/vim-gitgutter'" 目录树显示文件的git修改Plugin 'Xuyuanp/nerdtree-git-plugin'
Plugin 'altercation/vim-colors-solarized'Plugin 'preservim/nerdtree'
" -----------------------" => vim-scripts 中的插件" -----------------------" 显示文件中所有的函数和变量Plugin 'Tagbar'" 目录树"Plugin 'The-NERD-tree'" 显示tab对齐线Plugin 'indentLine.vim'" 符号自动补全Plugin 'delimitMate.vim'" 标签提取Plugin 'ctags.vim'" 颜色主题Plugin 'desert.vim'" 显示Python的虚拟环境Plugin 'virtualenv.vim'
call vundle#end()filetype plugin indent on
" -----------------------" => 插件安装完成后的配置" -----------------------colorscheme solarized" -----------------------" ==> airline 标签栏配置" -----------------------
" 启用powerline字体let g:airline_powerline_fonts = 1" 开启标签栏let g:airline#extensions#tabline#enabled = 1" 标签栏路径显示" let g:airline#extensions#tabline#formatter = "default"" let g:airline#extensions#tabline#formatter = "jsformatter"" let g:airline#extensions#tabline#formatter = "unique_tail_improved"let g:airline#extensions#tabline#formatter = "unique_tail"
" -----------------------" ==> YouCompleteMe配置" -----------------------" YouCompleteMe 默认tab, s-tab和自动补全冲突let g:ycm_key_list_select_completion=['<c-n>']let g:ycm_key_list_select_completion = ['<Down>']let g:ycm_key_list_previous_completion=['<c-p>']let g:ycm_key_list_previous_completion = ['<Up>']
set completeopt=longest,menu
" 关闭加载.ycm_extra_conf.py提示let g:ycm_confirm_extra_conf=0" 在注释输入中也能补全let g:ycm_complete_in_comments = 1" 在字符串输入中也能补全let g:ycm_complete_in_strings = 1" 直接触发自动补全let g:ycm_key_invoke_completion = '<C-Space>'
" 显示所有匹配map <leader>gd :YcmDiags<CR>" 跳转到申明处nnoremap <leader>gl :YcmCompleter GoToDeclaration<CR>" 跳转到定义处nnoremap <leader>gf :YcmCompleter GoToDefinition<CR>" 函数定义跳转, 将光标定位到函数, 输入gd 回车nnoremap <leader>gg :YcmCompleter GoToDefinitionElseDeclaration<CR>
" -----------------------" ==> Tagbar配置" -----------------------" 函数变量窗口, F3开启和关闭map <leader>v :TagbarToggle<CR>let tagbar_ctags_bin = 'ctags'let tagbar_right = 1let g:tagbar_width = 30" tagbar一打开, 光标就在tagbar页面内let g:tagbar_autofocus = 1" 设置标签不排序,默认排序let g:tagbar_sort = 0
" -----------------------" ==> The-NERD-tree配置" -----------------------" 目录树, 使用F2开启或关闭map <leader>d :NERDTreeToggle<CR>let NERDTreeWinSize=30" 自动开启" autocmd vimenter * NERDTree" 是否显示隐藏文件let NERDTreeShowHidden=1" 忽略一下文件的显示let NERDTreeIgnore=['\.pyc','\~$','\.swp']
" -----------------------" ==> Xuyuanp/nerdtree-git-plugin配置" -----------------------let g:NERDTreeGitStatusIndicatorMapCustom = { \ "Modified" : "✹", \ "Staged" : "✚", \ "Untracked" : "✭", \ "Renamed" : "➜", \ "Unmerged" : "═", \ "Deleted" : "✖", \ "Dirty" : "✗", \ "Clean" : "✔︎", \ 'Ignored' : '☒', \ "Unknown" : "?" \ }" -----------------------" ==> vim-gitgutter配置" -----------------------
" -----------------------" ==> virtualenv.vim" -----------------------" 退出虚拟环境" :VirtualEnvDeactivate" 显示所有虚拟环境" :VirtualEnvList" **虚拟环境" :VirtualEnvActivate venv" 可以使用tab选择要**的虚拟环境" :VirtualEnvActivate <tab>" 显示帮助" :help virtualenv进入VIM安装插件
:PluginInstallYCM编译安装需要另外的处理
一些定制化的需求后续可以修改