简介

最近打算学习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 <F3> :Autoformat<CR>
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 <F10> :call asyncrun#quickfix_toggle(6)<cr>
nnoremap <silent> <F9> :AsyncRun! g++ -O3 "$(VIM_FILEPATH)" -o "$(VIM_FILEDIR)/$(VIM_FILENOEXT)" -lpthread <cr>
nnoremap <silent> <F5> :AsyncRun! -raw -cmd=$(VIM_FILEDIR) "$(VIM_FILEDIR)/$(VIM_FILENOEXT)" <cr>" " 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 <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++进行语法检查
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<CR>
nnoremap ]b :bn<CR>" syntax enable
syntax enable
colorscheme slate" LeaderF 函数列表
Plug 'Yggdroot/LeaderF'
noremap <c-f> :LeaderfFunction!<cr>
" 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_PreviewResult = {'Function':0, 'BufTag':0}"Initialize plugin system
call plug#end()

最终效果

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

WSL: vim下c++环境搭建(简陋)相关推荐

  1. 利用 Windows 子系统 Linux(WSL)开发 Python 环境搭建

    利用 Windows 子系统 Linux(WSL)开发 Python 一.启用适用于 Linux 的 Windows 子系统 二.安装 Linux 分发版 三.安装并配置 Visual Studio ...

  2. CentOS6.x 下 LNMP环境搭建(二、安装 Nginx)

    为什么80%的码农都做不了架构师?>>>    CentOS6.x 下 LNMP环境搭建(准备篇) CentOS6.x 下 LNMP环境搭建(一.安装 MySQL) CentOS6. ...

  3. mac10.11+vim rust开发环境搭建

    mac10.11+vim rust开发环境搭建 1.安装rust 打开终端 输入如下命令 curl -sf -L https://static.rust-lang.org/rustup.sh | sh ...

  4. php linux下开发教程,linux下php环境搭建教程_后端开发

    linux下php环境搭建要领:起首猎取PHP.Apache以及MySQL装置包:然后装置Apache,并修正设置文件httpd.conf:接着装置MySQL,并做基础设置:末了装置PHP,并设置ph ...

  5. Linux下开发环境搭建---2. emacs篇

    Linux下开发环境搭建---2. emacs篇 本节主要参考:      曹乐的<在Emacs下用C/C++编程>      王纯业的<Emacs 一个强大的平台>      ...

  6. Win10 Anaconda下TensorFlow-GPU环境搭建详细教程(包含CUDA+cuDNN安装过程)(转载)...

    win7(win10也适用)系统安装GPU/CPU版tensorflow Win10 Anaconda下TensorFlow-GPU环境搭建详细教程(包含CUDA+cuDNN安装过程) 目录 2.配置 ...

  7. windows下python环境搭建_Linux/Windows下Python环境搭建步骤

    Python环境搭建首先到官网(www.python.org)下载相应的安装版本.主要分为Windows和Linux两种: 一.Linux下Python环境搭建 一般情况下,Linux系统都已经预安装 ...

  8. 简单易行的用windows系统虚拟苹果mac操作系统 mac下android环境搭建笔记(android studio)

    作者:韩梦飞沙 QQ:313134555 ios模拟器电脑版中文版(iPadian)下载 - 『精品软件区』 - 吾爱破解论坛 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52po ...

  9. win10下caffe环境搭建: win10 + vs2013 + caffe + CUDA 7.5 + cudnn v4 + Anaconda2 (python 2.7) 目前未使用GPU

    win10下caffe环境搭建: win10 + vs2013 + caffe + CUDA 7.5 + cudnn v4 + Anaconda2 (python 2.7)   目前未使用GPU 最近 ...

最新文章

  1. linux命令应用之一
  2. 工业机器人几个自由度_取件冲压上下料机械手和六自由度工业机器人805A
  3. 使用python操作hdfs,并grep想要的数据
  4. 一篇深入剖析PCA的好文
  5. C#里的一些加密解密标准函数示例——DES,SHA1,RSA
  6. Win2000/XP/2003路由制作之Nat共享上网
  7. 密钥分离,.Net程序猿不再背锅
  8. 大连工业大学艺术学院计算机考试,大连工业大学艺术与信息工程学院应用科技学院...
  9. Chapter3-2_Speech Separation(TasNet)
  10. Java Web学习笔记08:分页技术
  11. mupdf不支持x64_电脑安装win10的速度很慢,是不是没有制作支持UEFI的启动U盘?
  12. Appium基础四:Desired Capabilities详讲
  13. 如何用ffmpeg给视频打水印
  14. 外币兑换系统(某专业大作业)
  15. boost asio异步服务端实现步骤
  16. 利用Regsvr32绕过Applocker的限制策略
  17. Android 微信支付宝授权获取用户信息
  18. 关于信息熵最大值的讨论
  19. 虚拟化设备-Virtio介绍
  20. Unity游戏项目_3D迷宫(游戏源码免费)

热门文章

  1. 通讯录管理系统程序开发
  2. 艾美捷Cas9核酸酶参数说明和应用
  3. windows播放wav声音文件--java播放wav完整demo
  4. Qt实现 内嵌CEF3制作浏览器(尾篇)
  5. 使用json、yaml、toml作为配置文件,你知道他们的区别吗
  6. kuangbin数学训练2
  7. Linux命令--tree--使用/详解/实例
  8. 基于vue房屋合租网站的设计与实现
  9. 浙江省获部系统集成资质单位名录 (2009年11月23日更新)
  10. 综合案例播放器(java)