?用户?vimrc?文件配置:
touch $HOME/.vimrc
"或者
touch ~/.vimrc
""显示行号
set nu
""开启高亮
syntax on
""突出显示当前行
set cursorline
""启用鼠标
set mouse=a
set selection=exclusive
set selectmode=mouse,key
""显示状态栏
set laststatus=2
""智能补全
set completeopt=longest,menu
""显示光标当前位置
set ruler
set rtp+=~/.vim/bundle/Vundle.vim
""Vim 在与屏幕/键盘交互时使用的编码(取决于实际的终端的设定)
set encoding=utf-8
set langmenu=zh_CN.UTF-8
""设置打开文件的编码格式
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
set fileencoding=utf-8
""解决菜单乱码
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
""设置中文提示
language messages zh_CN.utf-8
""设置中文帮助
set helplang=cn
""设置为双字宽显示,否则无法完整显示如:☆
set ambiwidth=double
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""新文件标题
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"新建.c,.h,.sh,.java文件,自动插入文件头
autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()"
""定义函数SetTitle,自动插入文件头
func SetTitle()
"如果文件类型为.sh文件
if &filetype == 'sh'
call setline(1, "##########################################################################")
call append(line("."), "# File Name: ".expand("%"))
call append(line(".")+1, "# Author: amoscykl")
call append(line(".")+2, "# mail: amoscykl980629@163.com")
call append(line(".")+3, "# Created Time: ".strftime("%c"))
call append(line(".")+4, "#########################################################################")
call append(line(".")+5, "#!/bin/zsh")
call append(line(".")+6, "PATH=/home/edison/bin:/home/edison/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/work/tools/gcc-3.4.5-glibc-2.3.6/bin")
call append(line(".")+7, "export PATH")
call append(line(".")+8, "")
else
call setline(1, "/*************************************************************************")
call append(line("."), " > File Name: ".expand("%"))
call append(line(".")+1, " > Author: amoscykl")
call append(line(".")+2, " > Mail: amoscykl@163.com ")
call append(line(".")+3, " > Created Time: ".strftime("%c"))
call append(line(".")+4, " ************************************************************************/")
call append(line(".")+5, "")
endif
if &filetype == 'cpp'
call append(line(".")+6, "#include<iostream>")
call append(line(".")+7, "using namespace std;")
call append(line(".")+8, "")
endif
if &filetype == 'c'
call append(line(".")+6, "#include<stdio.h>")
call append(line(".")+7, "")
endif
" if &filetype == 'java'
" call append(line(".")+6,"public class ".expand("%"))
" call append(line(".")+7,"")
" endif
"新建文件后,自动定位到文件末尾
autocmd BufNewFile * normal G
endfunc
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"键盘命令
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
nmap <leader>w :w!<cr>
nmap <leader>f :find<cr>
" 映射全选+复制 ctrl+a
map <C-A> ggVGY
map! <C-A> <Esc>ggVGY
map <F12> gg=G
" 选中状态下 Ctrl+c 复制
vmap <C-c> "+y
call vundle#begin()
""所有要安装的插件,写在下面""
""Vundle.vim插件管理器
Plugin 'gmarik/Vundle.vim'
""目录树
Plugin 'scrooloose/nerdtree'
""主题
Plugin 'altercation/vim-colors-solarized'
""标签导航
Plugin 'majutsushi/tagbar'
""标签列表
Plugin 'vim-scripts/taglist.vim'
""代码动态检查
Plugin 'w0rp/ale'
""快速添加/删除注释
Plugin 'scrooloose/nerdcommenter'
call vundle#end()
"""""""""""""""""""""""""""""""""NERDTree目录树插件配置"""""""""""""""""""""""""""""""""""""""""""""""""
let NERDTreeHighlightCursorline = 1 " 高亮当前行
let NERDTreeShowLineNumbers = 1 " 显示行号
""忽略列表中的文件
let NERDTreeIgnore = [ '\.pyc$', '\.pyo$', '\.obj$', '\.o$', '\.egg$', '^\.git$', '^\.repo$', '^\.svn$', '^\.hg$' ]
""启动 vim 时打开 NERDTree
autocmd vimenter * NERDTree
""当打开 VIM,没有指定文件时和打开一个目录时,打开 NERDTree
autocmd StdinReadPre * let s:std_in = 1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | exe 'cd '.argv()[0] | endif
" 关闭 NERDTree,当没有文件打开的时候
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | end
""<leader>nt 打开 nerdtree 窗口,在左侧栏显示
map <leader>nt :NERDTreeToggle<CR>
""将F2设置为开关NERDTree的快捷键
map <f2> :NERDTreeToggle<cr>
""修改树的显示图标
"let g:NERDTreeDirArrowExpandable = '+'
"let g:NERDTreeDirArrowCollapsible = '-'
""窗口位置
"let g:NERDTreeWinPos='left'
""窗口尺寸
"let g:NERDTreeSize=30
""窗口是否显示行号
let g:NERDTreeShowLineNumbers=1
""不显示隐藏文件
"let g:NERDTreeHidden=0
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""""""""""""""""""""""""主题"""""""""""""""""""""""""""""""""""""""""""""""""
let g:solarized_termtrans = 1 " 使用 termnal 背景
let g:solarized_visibility = "high" " 使用 :set list 显示特殊字符时的高亮级别
" GUI 模式浅色背景,终端模式深色背景
if has('gui_running')
set background=light
else
set background=dark
endif
" 主题设置为 solarized
colorscheme solarized
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""""""""""""""标签导航tagbar配置"""""""""""""""""""""""""""""""""""""""""""""""
let g:tagbar_ctags_bin = 'ctags' " tagbar 依赖 ctags 插件
let g:tagbar_width = 30 " 设置 tagbar 的宽度为 30 列,默认 40 列
let g:tagbar_autofocus = 1 " 打开 tagbar 时光标在 tagbar 页面内,默认在 vim 打开的文件内
let g:tagbar_left = 1 " 让 tagbar 在页面左侧显示,默认右边
"let g:tagbar_sort = 0 " 标签不排序,默认排序
" <leader>tb 打开 tagbar 窗口,在左侧栏显示
map <leader>tb :TagbarToggle<CR>
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""""""""""""""""""ale代码动态检查""""""""""""""""""""""""""""""""""""""""""""""
""常用快捷键""
""<F9> 触发/关闭代码动态检查
""ak 前往上一个错误或警告
""aj 前往下一个错误或警告
""ad 查看错误或警告的详细信息
let g:ale_lint_on_text_changed = 'normal' " 代码更改后启动检查
let g:ale_lint_on_insert_leave = 1 " 退出插入模式即检查
let g:ale_sign_column_always = 1 " 总是显示动态检查结果
let g:ale_sign_error = '>>' " error 告警符号
let g:ale_sign_warning = '--' " warning 告警符号
let g:ale_echo_msg_error_str = 'E' " 错误显示字符
let g:ale_echo_msg_warning_str = 'W' " 警告显示字符
let g:ale_echo_msg_format = '[%linter%] %s [%severity%]' " 告警显示格式
" C 语言配置检查参数
let g:ale_c_gcc_options = '-Wall -Werror -O2 -std=c11'
let g:ale_c_clang_options = '-Wall -Werror -O2 -std=c11'
let g:ale_c_cppcheck_options = ''
" C++ 配置检查参数
let g:ale_cpp_gcc_options = '-Wall -Werror -O2 -std=c++14'
let g:ale_cpp_clang_options = '-Wall -Werror -O2 -std=c++14'
let g:ale_cpp_cppcheck_options = ''
"使用clang对c和c++进行语法检查,对python使用pylint进行语法检查
let g:ale_linters = {
\'c++': ['clang', 'gcc'],
\'c': ['clang', 'gcc'],
\'python': ['pylint'],
\}
" <F9> 触发/关闭代码动态检查
map <F9> :ALEToggle<CR>
"普通模式下,ak 前往上一个错误或警告,aj 前往下一个错误或警告
nmap ak <Plug>(ale_previous_wrap)
nmap aj <Plug>(ale_next_wrap)
" ad 查看错误或警告的详细信息
nmap ad :ALEDetail<CR>
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""""快速添加/删除注nerdcommenter""""""""""""""""""""""""""""""""""""""""""
""常用快捷键
""[count]<leader>cc 注释当前行起始的 [count]行 或者 注释 visual mode 选中的文本
""[count]<leader>cn 注释方式同 <leader>cc,但是强制嵌套
""[count]<leader>c<space> 切换所选行的注释状态。 如果注释了最上面的选定行,则取消注释所有选定行,反之亦然。
""[count]<leader>cm 使用一组多行注释符注释选定行
""[count]<leader>ci 单独切换所选行的各行注释状态
""[count]<leader>cs 使用块格式布局注释掉选定的行。
""<leader>c$ 注释从光标到行尾的当前行。
""<leader>cA 在行尾添加注释,并切换至插入模式,光标停留在注释符中间
""[count]<leader>cl 注释方式同 <leader>cc,注释符左对齐(<leader>cl)或者两边对齐(<leader>cb)
""[count]<leader>cb 注释方式同 <leader>cc,注释符左对齐(<leader>cl)或者两边对齐(<leader>cb)
""[count]<leader>cu 取消选定行的注释
let g:NERDSpaceDelims = 1 " 在注释符号后加一个空格
let g:NERDCompactSexyComs = 1 " 紧凑排布多行注释
let g:NERDDefaultAlign = 'left' " 逐行注释左对齐
let g:NERDAltDelims_java = 1 " JAVA 语言使用默认的注释符号
let g:NERDCustomDelimiters = {'c': {'left': '/*', 'right': '*/'}} " C 语言注释符号
let g:NERDCommentEmptyLines = 1 " 允许空行注释
let g:NERDTrimTrailingWhitespace = 1 " 取消注释时删除行尾空格
let g:NERDToggleCheckAllLines = 1 " 检查选中的行操作是否成功
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
安装的插件:
vim-plug
|