为了能够复制粘贴到外面,需要下载gvim,可以自行下载。
我的插件管理是用vim-plug来管理的
下载命令
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
然后在vimrc中添加如下代码段
call plug#begin() """""中间放插件"""" call plug#end()
在中间放置需要的插件就可以了.
vim-plug管理插件时,只需要加入上面在代码段中加入需要的插件命(如下),然后打开终端输入vim,在按:输入,PlugInstall,就可以完成插件安装。
我自己在使用的一些插件。
neadtree 管理目录用,我把快捷键设置成F3,可以让它开启或关闭
Plug 'scrooloose/nerdtree'
nerdcommenter 代码多行注释用的,还是挺不错的,按住 +c+space 就可以注释与反注释了
Plug 'ddollar/nerdcommenter'
airline、airline themes 美化 vim 底部状态栏
Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes'
airline使用前需要安装powerline字体
安装方法如下
# clone git clone https://github.com/powerline/fonts.git --depth=1 # install cd fonts ./install.sh # clean-up a bit cd .. rm -rf fonts
airline的主题目录如下,可以选择自己想要的主题
~/.vim/plugged/vim-airline-themes/autoload/airline/themes
以下是我的觉得比较好看的主题。
aurora.vim base16_eighties.vim dracula.vim onedark.vim silver.vim
badcat.vim base16_isotope.vim hybridline.vim papercolor.vim term.vim
badwolf.vim base16_pop.vim minimalist.vim peaksea.vim understated.vim
base16_colors.vim bubblegum.vim molokai.vim ravenpower.vim vice.vim
base16color.vim deus.vim night_owl.vim raven.vim wombat.vim
其他的主题就被我删了。
现在我再用的vice和tomorrow主题,我认为还是蛮好看的。
只要在.vimrc中添加
let g:airline_theme="vice"
就可以了。
最后是完整的.vimrc
" === " 设置快捷键 " === " inoremap ' ''<ESC>i " inoremap " ""<ESC>i " inoremap ( ()<ESC>i " inoremap [ []<ESC>i " inoremap { {<CR>}<ESC>O map Z ZZ map - $ map 0 ^ map S :w<CR> map ; : map tt :tabnew map tj :tabNext<CR> map tk :tabnext<CR> map gt <nop> map gT <nop> function! HideNumber() " <F2>开启/关闭行号显示 if(&relativenumber == &number) set relativenumber! number! elseif(&number) set number! else set relativenumber! endif set number? endfunc nnoremap <F2> :call HideNumber()<CR> let g:syntastic_cpp_compiler_options = ' -std=c++11 -stdlib=libc++' "F9编译 map <F9> :call CR()<CR> func! CR() exec "w" if &filetype == 'cpp' exec "!g++ % -o %<" exec "!time ./%<" elseif &filetype == 'python' exec "!python %" endif endfunc " === " 设置编码 " === set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936 set termencoding=utf-8 set encoding=utf-8 set fileencodings=ucs-bom,utf-8,cp936 set fileencoding=utf-8 " === " === 基本设置 " === hi Normal cterm=NONE ctermfg=White gui=bold guifg=#ffffff hi Constant cterm=NONE ctermfg=LightCyan gui=NONE guifg=#00ffff set nocompatible " 不要使用vi的键盘模式,而是vim自己的 set clipboard =unnamed,unnamedplus " 共享剪贴板 syntax on " 语法高亮 set cursorline set whichwrap=<,>,[,],h,l " 允许backspace和光标键跨越行边界 set nu " 显示行号 set selection=exclusive set selectmode=mouse,key set listchars=tab:>-,trail:- set magic " 设置魔术 set guioptions-=T " 隐藏工具栏 set guioptions-=m " 隐藏菜单栏 set laststatus=2 " 总是显示状态栏 set showmatch " 高亮显示匹配的括号 "匹配括号高亮的时间(单位是十分之一秒) hi MatchParen ctermbg=blue guibg=lightblue set matchtime=5 set ruler " 显示光标当前位置 "我的状态行显示的内容(包括文件类型和解码) set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%] set cmdheight=2 set autoindent " 自动缩进 set cindent " 以C语言的方式缩进 set shiftwidth=4 " 设置自动缩进的空格数量 set softtabstop=4 " tab键的实际占有空格数,统一缩进 set tabstop=4 " 设置tab键的空格数 set smarttab " 在行和段开始处使用制表符 set mouse=a " 使用鼠标 set completeopt=preview,menu " 代码补全 set nobackup " 从不备份 filetype plugin indent on " 允许插件 filetype on " 侦测文件类型 filetype plugin on " 载入文件类型插件 set viminfo+=! " 保存全局变量 set iskeyword+=_,$,@,%,#,- " 带有如下符号的单词不要被换行分割 set linespace=0 " 字符间插入的像素行数目 set wildmenu " 增强模式中的命令行自动完成操作 set backspace=2 " 使回格键(backspace)正常处理indent, eol, start等 set report=0 " 通过使用: commands命令,告诉我们文件的哪一行被改变过 set fillchars=vert: ,stl: ,stlnc: " 在被分割的窗口间显示空白,便于阅读 set scrolloff=5 " 光标移动到buffer的顶部和底部时保持3行距离 set nobackup " 禁止生成临时文件 set noswapfile " 禁止生成交换文件 set autoread " 设置当文件被改动时自动载入 set autowrite " 自动保存 set history=1000 " 历史记录数 set confirm " 在处理未保存或只读文件的时候,弹出确认 set ignorecase " 搜索忽略大小写 set hlsearch " 搜索逐字符高亮 set incsearch set gdefault " 行内替换 set relativenumber number " 相对行号: 行号变成相对 " === " === 插入模式下用绝对行号, 普通模式下用相对 " === au FocusLost * :set norelativenumber number au FocusGained * :set relativenumber autocmd InsertEnter * :set norelativenumber number autocmd InsertLeave * :set relativenumber "复制选中区到系统剪切板中 vnoremap <leader>y "+y if has("autocmd") " 打开自动定位到最后编辑的位置, 需要确认 .viminfo 当前用户可写 au BufReadPost * if line("'"") > 1 && line("'"") <= line("$") | exe "normal! g'"" | endif endif " === " === vimplug " === call plug#begin() " 中间放插件 Plug 'scrooloose/nerdtree' Plug 'ddollar/nerdcommenter' Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' Plug 'jiangmiao/auto-pairs' call plug#end() " === " === NERDTree " === let NERDChristmasTree=1 " 显示增强 let NERDTreeAutoCenter=1 " 自动调整焦点 let NERDTreeMouseMode=2 " 鼠标模式:目录单击,文件双击 let NERDTreeShowFiles=1 " 显示文件 " let NERDTreeShowHidden=1 " 显示隐藏文件 let NERDTreeHightCursorline=1 " 高亮显示当前文件或目录 let NERDTreeShowLineNumbers=1 " 显示行号 let NERDTreeWinPos='left' " 窗口位置 let NERDTreeWinSize=31 " 窗口宽度 let g:NERDTreeCaseSensitiveSort = 1 let g:nerdtree_tabs_open_on_console_startup=1 let NERDTreeIgnore=['.pyc','~$','.swp'] let g:NERDTreeIndicatorMapCustom = { "Modified" : "✹", "Staged" : "✚", "Untracked" : "✭", "Renamed" : "➜", "Unmerged" : "═", "Deleted" : "✖", "Dirty" : "✗", "Clean" : "✔︎", 'Ignored' : '☒', "Unknown" : "?" } " 快捷键 nnoremap <silent> <F3> :NERDTreeToggle<CR> set t_Co=256 set laststatus=2 set lazyredraw " === " === airline " === " let g:airline#extensions#tabline#enabled = 1 " let g:airline#extensions#tabline#buffer_nr_show = 1 let g:airline_theme="vice" let g:airline_powerline_fonts = 1 " === " === 新文件标题 " === " 新建.c,.h,.sh,.java文件,自动插入文件头 autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()" " 定义函数SetTitle,自动插入文件头 func SetTitle() let l = 0 if &filetype == 'sh' let l = l+1 | call setline(l, "###############################################################") let l = l+1 | call setline(l, "# File Name : ".expand("%")) let l = l+1 | call setline(l, "# Author : Jiaaaaaaaqi") let l = l+1 | call setline(l, "# Created Time : ".strftime("%c")) let l = l+1 | call setline(l, "###############################################################") let l = l+1 | call setline(l, "#!/bin/bash") let l = l+1 | call setline(l, "") else let l = l+1 | call setline(l, "/*************************************************************** ") let l = l+1 | call setline(l, " > File Name : ".expand("%")) let l = l+1 | call setline(l, " > Author : Jiaaaaaaaqi") let l = l+1 | call setline(l, " > Created Time : ".strftime("%c")) let l = l+1 | call setline(l, " ***************************************************************/") let l = l+1 | call setline(l, "") endif if &filetype == 'cpp' let l = l+1 | call setline(l, "#include <bits/stdc++.h>") let l = l+1 | call setline(l, "#define fi first") let l = l+1 | call setline(l, "#define se second") let l = l+1 | call setline(l, "#define pb push_back") let l = l+1 | call setline(l, "#define pii pair<int, int>") let l = l+1 | call setline(l, '#define dbg(x) cout << #x << " = " << (x) << endl') let l = l+1 | call setline(l, "#define mes(a, b) memset(a, b, sizeof a)") let l = l+1 | call setline(l, "") let l = l+1 | call setline(l, "using namespace std;") let l = l+1 | call setline(l, "typedef long long int ll;") let l = l+1 | call setline(l, "typedef unsigned long long int ull;") let l = l+1 | call setline(l, "const int maxn = 1e5 + 10;") let l = l+1 | call setline(l, "const ll mod = 1e9 + 7;") let l = l+1 | call setline(l, "const ll INF = 1e18 + 100;") let l = l+1 | call setline(l, "const int inf = 0x3f3f3f3f;") let l = l+1 | call setline(l, "") let l = l+1 | call setline(l, "int n, m;") let l = l+1 | call setline(l, "int T, cas, tol = 0;") let l = l+1 | call setline(l, "") let l = l+1 | call setline(l, "int main() {") let l = l+1 | call setline(l, ' // freopen("in", "r", stdin);') let l = l+1 | call setline(l, "") let l = l+1 | call setline(l, " return 0;") let l = l+1 | call setline(l, "}") let l = l+1 | call setline(l, "") endif endfunc " 新建文件后,自动定位到文件末尾 autocmd BufNewFile * normal G