Mac vim环境配置

  • vim环境安装
  • vimrc配置文件
  • vim插件安装

vim环境安装

# mac下安装brew
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
# 安装vim
$ brew install vim
# 下载plug.vim, 如果下载超时,浏览器打开https://*/plug.vim复制内容,在~/.vim/autoload目录下创建plug.vim文件,并粘贴复制的内容
$ curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
# 创建.vimrc文件
$ touch /Users/${USER}/.vimrc

vimrc配置文件

# .vimrc配置文件内容
" filetype off
call plug#begin('~/.vim/plugged')" 主题
" Plug 'tomasr/molokai'
Plug 'morhetz/gruvbox'
"======================================================================" 定义插件,默认用法,和 Vundle 的语法差不多
" Plug 'junegunn/vim-easy-align'
" Plug 'junegunn/seoul256.vim'
" Plug 'junegunn/goyo.vim'
Plug 'skywind3000/quickmenu.vim'
"======================================================================" 延迟按需加载,使用到命令的时候再加载或者打开对应文件类型才加载
Plug 'scrooloose/nerdtree', { 'on':  'NERDTreeToggle' }
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }
"======================================================================" 确定插件仓库中的分支或者 tag
" Plug 'rdnetto/YCM-Generator', { 'branch': 'stable' }
" Plug 'nsf/gocode', { 'tag': 'v.20150303', 'rtp': 'vim' }
"======================================================================" 自动索引
Plug 'ludovicchabant/vim-gutentags'
Plug 'skywind3000/gutentags_plus'
"======================================================================" 编译运行
Plug 'skywind3000/asyncrun.vim'
"======================================================================" 动态检查
Plug 'w0rp/ale'
"======================================================================" 修改比较
" Plug 'mhinz/vim-signify'
"======================================================================" 文本对象
" Plug 'kana/vim-textobj-user'
" Plug 'kana/vim-textobj-indent'
" Plug 'kana/vim-textobj-syntax'
" Plug 'kana/vim-textobj-function', { 'for':['c', 'cpp', 'vim', 'java'] }
" Plug 'sgur/vim-textobj-parameter'
"======================================================================" 编辑辅助,高亮
" Plug 'octol/vim-cpp-enhanced-highlight'
"======================================================================" 代码补全
Plug 'Valloric/YouCompleteMe'
"======================================================================" 函数列表
Plug 'Yggdroot/LeaderF'
"======================================================================" 参数提示
Plug 'Shougo/echodoc.vim'
"======================================================================" 文件目录插件
Plug 'scrooloose/nerdcommenter' " 注释
"======================================================================" fzf搜索神器
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
Plug 'junegunn/fzf.vim'
"======================================================================" 状态栏
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
"======================================================================" limelight
" Plug 'junegunn/limelight.vim'
"======================================================================" liuchengxu/vista.vim
Plug 'liuchengxu/vista.vim'
"======================================================================" jiangmiao/auto-pairs
Plug 'jiangmiao/auto-pairs'
"======================================================================call plug#end()
" filetype plugin indent on" 主题相关
" colorscheme molokai
colorscheme gruvbox
set background=dark" 普通配置,快捷键
set number
set ruler
set nopaste
set cursorline
set cursorcolumn
syntax enable
syntax on
set nrformats=
set backspace=2
set shiftwidth=2
set softtabstop=2
set ts=2
set expandtab
set autoindent
" 关闭兼容模式
set nocompatible
" vim 自身命令行模式智能补全
set wildmenu
" 定义快捷键的前缀,即<Leader>
let mapleader=";"
" 开启文件类型侦测
filetype on
" 根据侦测到的不同类型加载对应的插件
filetype plugin on
" 定义快捷键到行首和行尾
nmap LB 0
nmap LE $
" 设置快捷键将选中文本块复制至系统剪贴板
vnoremap <Leader>y "+y
" 设置快捷键将系统剪贴板内容粘贴至 vim
nmap <Leader>p "+p
" 定义快捷键关闭当前分割窗口
nmap <Leader>q :q<CR>
" 定义快捷键保存当前窗口内容
nmap <Leader>w :w<CR>
" 定义快捷键保存所有窗口内容并退出 vim
nmap <Leader>WQ :wa<CR>:q<CR>
" 不做任何保存,直接退出 vim
nmap <Leader>Q :qa!<CR>
" 依次遍历子窗口
nnoremap nw <C-W><C-W>
" 跳转至右方的窗口
nnoremap <Leader>lw <C-W>l
" 跳转至左方的窗口
nnoremap <Leader>hw <C-W>h
" 跳转至上方的子窗口
nnoremap <Leader>kw <C-W>k
" 跳转至下方的子窗口
nnoremap <Leader>jw <C-W>j
" 定义快捷键在结对符之间跳转
nmap <Leader>M %
" 让配置变更立即生效
autocmd BufWritePost $MYVIMRC source $MYVIMRCif exists('$TMUX')set term=screen-256color
endif" <F5>快捷运行
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()exec "w"if &filetype == 'c'exec "!g++ % -o %<"":AsyncRun g++ % -o %<":AsyncRun ./%<exec "!time ./%<"elseif &filetype == 'cpp'"exec "!g++ -std=c++11 % -o %<""exec "!time ./%<"":AsyncRun g++ -std=c++11 % -o %<" :AsyncRun ./%<" :AsyncRun g++ -std=c++11 % -o %< `pkg-config --cflags --libs opencv`:AsyncRun ./%<elseif &filetype == 'java'exec "!java %"exec "!time java %<"elseif &filetype == 'sh':!time bash %elseif &filetype == 'python'"exec "!time python %":AsyncRun -raw python %elseif &filetype == 'html'exec "!time go run %"endif
endfunctioautocmd BufReadPost *\ if line("'\"") > 1 && line("'\"") <= line("$") |\   exe "normal! g`\"" |\ endif" 插件配置" ----------------------------------------------------------------
"  Plug 'ludovicchabant/vim-gutentags'" 设置符号索引,参考韦易笑大神配置
set tags=./.tags;,.tags
let $GTAGSLABEL = 'native-pygments'
let $GTAGSCONF = '/usr/local/Cellar/global/6.6.3/share/gtags/gtags.conf'
" let g:gutentags_enabled = 1
" gutentags 搜索工程目录的标志,碰到这些文件/目录名就停止向上一级目录递归
let g:gutentags_project_root = ['.root', '.svn', '.git', '.hg', '.project']" 所生成的数据文件的名称
let g:gutentags_ctags_tagfile = '.tags'" 将自动生成的 tags 文件全部放入 ~/.cache/tags 目录中,避免污染工程目录
let s:vim_tags = expand('~/.cache/tags')
let g:gutentags_cache_dir = s:vim_tags" 配置 ctags 的参数
let g:gutentags_ctags_extra_args = ['--fields=+niazS', '--extra=+q']
let g:gutentags_ctags_extra_args += ['--c++-kinds=+px']
let g:gutentags_ctags_extra_args += ['--c-kinds=+px']" 禁用 gutentags 自动加载 gtags 数据库的行为
let g:gutentags_auto_add_gtags_cscope = 0
let g:gutentags_plus_nomap = 1
let g:gutentags_define_advanced_commands = 1" 同时开启 ctags 和 gtags 支持:
let g:gutentags_modules = []
if executable('ctags')let g:gutentags_modules += ['ctags']
endif
if executable('gtags-cscope') && executable('gtags')let g:gutentags_modules += ['gtags_cscope']
endifnoremap <silent> <leader>gs :GscopeFind s <C-R><C-W><cr>
noremap <silent> <leader>gg :GscopeFind g <C-R><C-W><cr>
noremap <silent> <leader>gC :GscopeFind c <C-R><C-W><cr>
noremap <silent> <leader>gT :GscopeFind t <C-R><C-W><cr>
noremap <silent> <leader>ge :GscopeFind e <C-R><C-W><cr>
noremap <silent> <leader>gf :GscopeFind f <C-R>=expand("<cfile>")<cr><cr>
noremap <silent> <leader>gi :GscopeFind i <C-R>=expand("<cfile>")<cr><cr>
noremap <silent> <leader>gd :GscopeFind d <C-R><C-W><cr>
noremap <silent> <leader>ga :GscopeFind a <C-R><C-W><cr>
"gs Find symbol (reference) under cursor
"gg Find symbol definition under cursor
"gc Functions called by this function
"gt Functions calling this function
"ge Find text string under cursor
"gf Find egrep pattern under cursor
"gi Find file name under cursor
"gd Find files #including the file name under cursor
"ga Find places where current symbol is assigned" ----------------------------------------------------------------" ----------------------------------------------------------------
" Plug 'skywind3000/asyncrun.vim'" 自动打开 quickfix window ,高度为 10
let g:asyncrun_open = 8 " 任务结束时候响铃提醒 let g:asyncrun_bell = 1
" 设置 F10 打开/关闭 Quickfix 窗口
nnoremap <F10> :call asyncrun#quickfix_toggle(10)<cr>
" 重新定义项目标志
let g:asyncrun_rootmarks = ['.svn', '.git', '.root', '_darcs', 'build.xml']
" F4为更新Makefile文件
nnoremap <silent> <F4> :AsyncRun -cwd=<root> cmake . <cr>
" F6 clang编译c++程序
" noremap <F6> :AsyncRun g++ -v -lboost_filesystem -lboost_system -std=c++17 "%" -o "%<"<CR>
noremap <F1> :AsyncRun clang++ -std=c++11 "%" -o "%<"<CR>
" noremap <F6> :AsyncRun g++ -Iboost_1_68_0 -Lboost_1_68_0/lib/ -lboost-filesystem -lboost-system -std=c++11 "%" -o "%<"<CR>
" F7编译整个项目
nnoremap <silent> <F7> :AsyncRun -cwd=<root> make <cr>
" F8 运行当前项目
nnoremap <silent> <F8> :AsyncRun -cwd=<root> -raw make run <cr>
" F9编译单文件
nnoremap <silent> <F9> :AsyncRun gcc -Wall -O2 "$(VIM_FILEPATH)" -o "$(VIM_FILEDIR)/$(VIM_FILENOEXT)" <cr>" ----------------------------------------------------------------" ----------------------------------------------------------------
" Plug 'w0rp/ale'let g:ale_linters_explicit = 1
let g:ale_lint_delay = 500
let g:ale_echo_msg_format = '[%linter%] %code: %%s'
let g:ale_lint_on_text_changed = 'normal'
let g:ale_lint_on_insert_leave = 1
let g:airline#extensions#ale#enabled = 1let g:ale_c_gcc_options = '-Wall -O2 -std=c99'
let g:ale_cpp_gcc_options = '-Wall -O2 -std=c++14'
let g:ale_c_cppcheck_options = ''
let g:ale_cpp_cppcheck_options = ''let g:ale_sign_error = "\ue009\ue009"
hi! clear SpellBad
hi! clear SpellCap
hi! clear SpellRare
hi! SpellBad gui=undercurl guisp=red
hi! SpellCap gui=undercurl guisp=blue
hi! SpellRare gui=undercurl guisp=magenta"始终开启标志列
let g:ale_sign_column_always = 1
let g:ale_set_highlights = 0
"自定义error和warning图标
let g:ale_sign_error = '✗'
let g:ale_sign_warning = '⚡'
"在vim自带的状态栏中整合ale
let g:ale_statusline_format = ['✗ %d', '⚡ %d', '✔ OK']
"显示Linter名称,出错或警告等相关信息
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%]'
"普通模式下,sp前往上一个错误或警告,sn前往下一个错误或警告
nmap sp <Plug>(ale_previous_wrap)
nmap sn <Plug>(ale_next_wrap)
"<Leader>s触发/关闭语法检查
nmap <Leader>s :ALEToggle<CR>
"<Leader>d查看错误或警告的详细信息
nmap <Leader>d :ALEDetail<CR>
" "使用clang对c和c++进行语法检查,对python使用pylint进行语法检查
let g:ale_linters = {\   'cpp': ['cppcheck','clang','gcc'],\   'c': ['cppcheck','clang', 'gcc'],\   'python': ['pylint'],\   'java': ['checkstyle'],\}
"设置状态栏显示的内容
" set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}\ %{ALEGetStatusLine()}
set fenc= " ----------------------------------------------------------------" ----------------------------------------------------------------
" Plug 'mhinz/vim-signify'" ----------------------------------------------------------------" ----------------------------------------------------------------
" Plug 'kana/vim-textobj-user'" i, 和 a, :参数对象,写代码一半在修改,现在可以用 di, / ci, 一次性删除/改写当前参数
" ii 和 ai :缩进对象,同一个缩进层次的代码,可以用 vii 选中,dii / cii 删除或改写
" if 和 af :函数对象,可以用 vif / dif / cif 来选中/删除/改写函数的内容" ----------------------------------------------------------------" ----------------------------------------------------------------
" Plug 'octol/vim-cpp-enhanced-highlight'" Vim 自带语法文件更好的 C/C++ 语法标注,支持 cpp11/14/17
let g:cpp_class_scope_highlight = 1
let g:cpp_member_variable_highlight = 1
let g:cpp_class_decl_highlight = 1
let g:cpp_experimental_simple_template_highlight = 1
let g:cpp_concepts_highlight = 1
let g:cpp_no_function_highlight = 1" ----------------------------------------------------------------" ----------------------------------------------------------------
" Plug 'Valloric/YouCompleteMe'let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'
let g:ycm_python_binary_path = ''
let g:ycm_confirm_extra_conf = 0 " stop remind load from local file .ycm_extra_conf
"是否开启语义补全"
let g:ycm_seed_identifiers_with_syntax=1
"是否在注释中也开启补全"
let g:ycm_complete_in_comments=1
let g:ycm_collect_identifiers_from_comments_and_strings = 0
"开始补全的字符数"
let g:ycm_min_num_of_chars_for_completion=2
"补全后自动关机预览窗口"
let g:ycm_autoclose_preview_window_after_completion=1
"禁止缓存匹配项,每次都重新生成匹配项"
let g:ycm_cache_omnifunc=0
"字符串中也开启补全"
let g:ycm_complete_in_strings = 1noremap <leader>gt :YcmCompleter GoToDeclaration<CR>
noremap <leader>gc :YcmCompleter GoToDefinition<CR>" ----------------------------------------------------------------" ----------------------------------------------------------------
" Plug 'Yggdroot/LeaderF'" alt + p 文件切换
let g:Lf_ShortcutF = '<c-p>'
let g:Lf_ShortcutB = '<m-n>'
noremap <c-n> :LeaderfMru<cr>
noremap <m-p> :LeaderfFunction!<cr>
noremap <m-n> :LeaderfBuffer<cr>
noremap <m-m> :LeaderfTag<cr>
let g:Lf_StlSeparator = { 'left': '', 'right': '', 'font': '' }let g:Lf_RootMarkers = ['.project', '.root', '.svn', '.git']
let g:Lf_WorkingDirectoryMode = 'Ac'
let g:Lf_WindowHeight = 0.30
let g:Lf_CacheDirectory = expand('~/.vim/cache')
let g:Lf_ShowRelativePath = 0
let g:Lf_HideHelp = 1
" let g:Lf_StlColorscheme = 'powerline'
let g:Lf_StlColorscheme = 'airline'
let g:Lf_PreviewResult = {'Function':0, 'BufTag':0}
" CTRL+P 在当前项目目录打开文件搜索,CTRL+N 打开 MRU搜索,搜索你最近打开的文件
" ALT+P 打开函数搜索,ALT+N 打开 Buffer 搜索" ----------------------------------------------------------------" ----------------------------------------------------------------
" Plug 'Shougo/echodoc.vim'" 参数提醒" ----------------------------------------------------------------" ----------------------------------------------------------------
" Plug 'fzf'nnoremap <silent> <Leader>f :Files<CR>
nnoremap <silent> <Leader>b :Buffers<CR>" ----------------------------------------------------------------" ----------------------------------------------------------------
" Plug 'scrooloose/nerdtree'" nmap <Leader>fl :NERDTreeToggle<CR>
" 设置NERDTree子窗口宽度
let NERDTreeWinSize=32
" 设置NERDTree子窗口位置
let NERDTreeWinPos="left"
" 显示隐藏文件
let NERDTreeShowHidden=1
" NERDTree 子窗口中不显示冗余帮助信息
let NERDTreeMinimalUI=1
" 删除文件时自动删除文件对应 buffer
let NERDTreeAutoDeleteBuffer=1
" <F2> open nerdTreeToggle
nmap <F2> :NERDTreeToggle<CR>" Add spaces after comment delimiters by default
let g:NERDSpaceDelims = 1
" Use compact syntax for prettified multi-line comments
let g:NERDCompactSexyComs = 1
" Align line-wise comment delimiters flush left instead of following code indentation
let g:NERDDefaultAlign = 'left'
" Set a language to use its alternate delimiters by default
let g:NERDAltDelims_java = 1
" Add your own custom formats or override the defaults
let g:NERDCustomDelimiters = { 'c': { 'left': '/**','right': '*/' } }
" Allow commenting and inverting empty lines (useful when commenting a region)
let g:NERDCommentEmptyLines = 1
" Enable trimming of trailing whitespace when uncommenting
let g:NERDTrimTrailingWhitespace = 1
" Enable NERDCommenterToggle to check all selected lines is commented or not
let g:NERDToggleCheckAllLines = 1" ----------------------------------------------------------------" ----------------------------------------------------------------
" Plug 'vim-airline/vim-airline'
" Plug 'vim-airline/vim-airline-themes'let g:airline_theme='biogoo'" ----------------------------------------------------------------" ----------------------------------------------------------------
" skywind3000/quickmenu.vimnoremap <silent><F12> :call quickmenu#toggle(0)<cr>
let g:quickmenu_options = "HL"" ----------------------------------------------------------------" " ----------------------------------------------------------------
" " Plug 'vim-syntastic/syntastic'
"
" " set statusline+=%#warningmsg#
" " set statusline+=%{SyntasticStatuslineFlag()}
" " set statusline+=%*
"
" let g:syntastic_always_populate_loc_list = 1
" let g:syntastic_auto_loc_list = 1
" let g:syntastic_check_on_open = 1
" let g:syntastic_check_on_wq = 0
"
" " ----------------------------------------------------------------" " ----------------------------------------------------------------
"Plug 'python-mode/python-mode', { 'branch': 'develop' }" let g:pymode_python = 'python3'" " ----------------------------------------------------------------" " ----------------------------------------------------------------
" liuchengxu/vista.vim
" Plug 'liuchengxu/vista.vim'
" " ----------------------------------------------------------------

vim插件安装

$ vim .vimrc
# 等待插件安装完成
:PluginInstall
$ brew install global
# 切换到YouCompleteMe插件目录下,执行安装
$ cd ~/.vim/plugged/YouCompleteMe
# 注意python的版本,3.7.4也许会出问题
$ python install.py --all
# 复制.ycm_extra_conf.py文件,也可以在.vimrc文件中指定路径
$ cp ~/.vim/plugged/YouCompleteMe/third_party/ycmd/.ycm_extra_conf.py ~

Mac vim环境配置相关推荐

  1. linux下织梦cms安装环境配置文件,Mac本地环境配置以及安装织梦CMS,增加新的坑解决办法...

    Mac上其实已经自带了Apache和PHP,只是默认关闭的.开启一下就行了. Apache配置 apache已经自带了,只需在"终端"输入命令开启下就行了. ​​​开启apache ...

  2. python电脑配置苹果笔记本-tensorflow学习笔记1——mac开发环境配置

    1. mac电脑推荐配置 内存:8G+ cpu:i5+ 硬盘:SSD 128G+ 本人的电脑配置是cpu:i7, 内存:16G,硬盘:SSD 256G 2. mac开发环境配置 1.1 安装pip 打 ...

  3. Mac的环境配置的详细步骤

    习惯了用window系统,对于Mac环境配置总是有的模糊,虽然大体一致,但还是有一些小差别,知道是这么回事,但不知道为什么这样配置,今天决定研究研究 很多习惯了Windows使用的人,刚接触Mac这种 ...

  4. linux vim ddyd,vim环境配置

    ctags ctags对浏览代码非常的方便,可以在函数.变量之间跳来跳去等等. 下载 我已经下载过了,路径:/home1/fujun/software/ctags-5.8.tar.gz 编译& ...

  5. [Go] MAC Go环境配置

    MAC Go环境配置 一.Golang 安装 官网:https://golang.org/dl 中文网:https://studygolang.com/dl 官网可能被墙,可以换中文网下载,下载pkg ...

  6. 【vim环境配置】解决ubuntu上 由YouCompleteMe插件配置不当引起的 自动补全失效的问题

    [vim环境配置]解决ubuntu上 由YouCompleteMe插件配置不当引起的 自动补全失效的问题 参考文章: (1)[vim环境配置]解决ubuntu上 由YouCompleteMe插件配置不 ...

  7. mac linux 编译环境配置,mac开发环境配置

    个人mac开发环境配置流程,持续更新. 1.安装Homebrew 使用下面命令安装 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubuser ...

  8. Mac(1) 环境配置

    文章目录 Homebrew FinalShell Termius wget ohmyzsh Docker docker-compose安装服务(portainer.mysql.redis.nginx. ...

  9. python ios开发环境_程序员的macOS系列:Mac开发环境配置

    1.前言 最近在写<程序员的macOS系列>文章,之前写的第一篇 程序员的macOS系列:精选Mac App,大家都希望楼主尽快更新,结果拖到了2个月后,所以今天终于更新啦!其实macOS ...

最新文章

  1. 计算机技术应用参考文献,计算机毕业论文参考文献格式
  2. 计算机应用基础教案 马成荣,江苏省职业学校计算机应用基础(马成荣主编)课程两课评比教案:单元教学设计说明...
  3. 动态生成表格、隐藏表格、选中删除任意行、jquery、输入验证
  4. php 关于日期的知识总结
  5. centos6.4 搭建JDK环境
  6. 黑色全屏个人主页bootstrap4模板
  7. 20210601:力扣第243周周赛(上)
  8. ugp和千幻魔镜买哪个好_美的空调和格力空调哪个好?这两个牌子您会买哪个?...
  9. OCR身份证识别免费试用,附带Java代码
  10. pyodbc linux 乱码,关于python:无法在Linux上安装pyodbc
  11. 淘宝首页幻灯片(二) 居中按钮源代码
  12. 如何集成支付宝到电脑网站
  13. 自写sort排序函数(支持重载排序规则)
  14. 【Unity】基础游戏单位GameObject中常用的属性和API
  15. Win7系统截图小工具
  16. ubuntu多屏协同,在电脑上操作手机
  17. 从业了八年程序员觉得已经是非常的枯燥了
  18. zxr10交换机配置手册vlan_中兴ZXR10配置说明
  19. Snap在2019年第三季度的每日活跃用户数有所增长,但其股价下跌5%
  20. 关于融云 SDK 在使用 p8 证书的坎坷~

热门文章

  1. 火狐浏览器(FireFox)安装Flash插件失败处理方法
  2. 人者多欲,其性尚私。—第四十三天
  3. 【修复日常bug】微信小程序cover-image不显示图片
  4. BenchmarkSQL测试工具 对 DM 达梦单机数据库进行tpcc测试
  5. freertos 学习 资源整理
  6. Object-C之文件操作
  7. linux命令提示符[root@localhost ~]#详解
  8. 无线摄像头声波配置网络原理
  9. Python使用pyhive,impala,JayDeBeApi连接Hive(含Kerberos)
  10. 柠檬BUG管理-最简单的在线BUG管理工具