WSL: vim下c++环境搭建(简陋)

简介

最近打算学习c++,以及考虑到以后频繁接触Linux,索性在Linux下学习c++吧。
本文使用win10的WSL,Ubuntu 18.04,sudo apt-get install gcc, 安装gcc 7.4.0编译器。但WSL没有图形界面,利用vim编辑器安装了一大堆插件,实现了IDE的常用功能。
最近两天的搭建如下,很多都是一知半解,暂且备份一下.vimrc脚本,以后可能会更新

.vimrc

set number
set tabstop=4
set shiftwidth=4
set wrap
set ruler
set incsearch
set showcmd
set mouse=a
" set tags=./tags;,tags
" set background=dark
syntax on


" Specify a directory for plugins (for Neovim: ~/.local/share/nvim/plugged)
call plug#begin('~/.vim/plugged')

" 定义插件,默认用法,和 Vundle 的语法差不多
Plug 'junegunn/vim-easy-align'
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' }

" " YCM 自动补全
Plug 'Valloric/YouCompleteMe'

" " Auto-pairs 括号补全
Plug 'jiangmiao/auto-pairs'

" "Autoformat 格式化
Plug 'Chiel92/vim-autoformat'
noremap  :Autoformat
let g:autoformat_verbosemode=1

" " NERD Commenter 块注释
Plug 'scrooloose/nerdcommenter'

" " vim-gutentags 自动索引
Plug 'ludovicchabant/vim-gutentags'
" 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']
"" 检测 ~/.cache/tags 不存在就新建
if !isdirectory(s:vim_tags)
	   silent! call mkdir(s:vim_tags, 'p')
endif

" " asyncrun 编译运行
Plug 'skywind3000/asyncrun.vim'
" 自动打开 quickfix window ,高度为 6
let g:asyncrun_open = 6
" " 任务结束时候响铃提醒
let g:asyncrun_bell = 1
" " 设置 F10 打开/关闭 Quickfix 窗口
nnoremap  :call asyncrun#quickfix_toggle(6)
nnoremap   :AsyncRun! g++ -O3 "$(VIM_FILEPATH)" -o "$(VIM_FILEDIR)/$(VIM_FILENOEXT)" -lpthread 
nnoremap   :AsyncRun! -raw -cmd=$(VIM_FILEDIR) "$(VIM_FILEDIR)/$(VIM_FILENOEXT)" 

" " ALE 动态检查
Plug 'dense-analysis/ale'
"始终开启标志列
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 (ale_previous_wrap)
nmap sn (ale_next_wrap)
""s触发/关闭语法检查
nmap s :ALEToggle
"d查看错误或警告的详细信息
nmap d :ALEDetail
" 使用clang对c和c++进行语法检查
let g:ale_linters = {
\   'c++': ['clang'],
\   'c': ['clang'],
\}

" airline 状态栏
Plug 'bling/vim-airline'
" 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
" " 解决consle输出乱码
" set termencoding = cp936  
" " 设置中文提示
" language messages zh_CN.utf-8 
" " 设置中文帮助
set helplang=cn
" " 设置为双字宽显示,否则无法完整显示如:☆
set ambiwidth=double
" " 总是显示状态栏 
let laststatus = 2
let g:airline_powerline_fonts = 1   " 使用powerline打过补丁的字体
let g:airline_theme="dark"      " 设置主题
" " 开启tabline
let g:airline#extensions#tabline#enabled = 1
" "tabline中当前buffer两端的分隔字符
let g:airline#extensions#tabline#left_sep = ' '
" "tabline中未激活buffer两端的分隔字符
let g:airline#extensions#tabline#left_alt_sep = '|'
" "tabline中buffer显示编号
let g:airline#extensions#tabline#buffer_nr_show = 1      
" " 映射切换buffer的键位
nnoremap [b :bp
nnoremap ]b :bn

" syntax enable
syntax enable
colorscheme slate

" LeaderF 函数列表
Plug 'Yggdroot/LeaderF'
noremap  :LeaderfFunction!
" let g:Lf_ShortcutF = ''
" let g:Lf_ShortcutB = ''
noremap  :LeaderfMru
" noremap  :LeaderfFunction!
" noremap  :LeaderfBuffer
" noremap  :LeaderfTag
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_PreviewResult = {'Function':0, 'BufTag':0}

"Initialize plugin system
call plug#end()

最终效果

WSL: vim下c++环境搭建(简陋)_第1张图片

刚刚复制粘贴才发现,我竟然不知道怎么把代码从WSL拷贝到Windows(滑稽__),最后把文件挂载到C盘,然后用Notepad++打开的…
另外,WSL下的vim貌似不支持修改主题,也是个问题。
最后,LeaderF下的“在当前项目目录下打开文件搜索”功能不会用,亟待解决。
附WSL下vim总是自动设置新宋体的问题解决方案
插件主要参考来自韦易笑@知乎

你可能感兴趣的:(学习笔记)