1.C++开发环境安装
1.1 环境更新和升级
在终端中输入以下命令对软件进行刷新,保证后续安装的软件都是最新的:
sudo apt update
sudo apt upgrade
1.2 安装build-essential软件包
build-essential 包含了 GNU 编辑器集合、GNU 调试器、其他编译软件所必需的开发库和工具,简单来说,安装了 build-essential 就相当于安装了 gcc、g++、make 等工具。
sudo apt install build-essential
查看 gcc、g++、make 版本:
gcc --version
g++ --version
make --version
1.3 安装gdb并查看版本
sudo apt install gdb
gdb --version
1.4 安装Cmake并查看版本
sudo apt install cmake
cmake --version
2.Vim配置
首先确认vim版本在8.0以上,且支持Python3,输入:
vim
vim中输入命令:
:version
如图所示,版本为8.1,python3前面+号意为支持python3。ubuntu 22.4的默认vim版本为此版本。
2.1 下载vim-plug
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
下载完成之后保存在:~/.vim/autoload 文件夹内。
2.2 vim的配置
在~/.vim文件夹中新建一个文件vimrc,并使用vim打开,输入以下内容后保存退出。
call plug#begin('~/.vim/plugged')
Plug 'scrooloose/nerdtree' " 文件树
Plug 'Valloric/YouCompleteMe' " 代码补全
Plug 'sickill/vim-monokai'
" monokai主题
Plug 'vim-airline/vim-airline'
" 美化状态栏
Plug 'vim-airline/vim-airline-themes'
" 设置airline
Plug 'octol/vim-cpp-enhanced-highlight' " 代码高亮
Plug 'mhinz/vim-signify'
Plug 'dense-analysis/ale'
Plug 'morhetz/gruvbox'
call plug#end()
" 让vimrc配置变更立即生效
autocmd BufWritePost $MYVIMRC source $MYVIMRC
colorscheme gruvbox
set background=dark
filetype on
set signcolumn=yes
syntax on
set shiftwidth=4
set tabstop=4
let g:ycm_clangd_binary_path='clangd'
set number
" 文件数的设置
nmap <Leader><Leader> :NERDTreeToggle<CR>
let NERDTreeWinSize=32
let NERDTreeWinPos="right"
let NERDTreeShowHidden=1
let NERDTreeMinimalUI=1
map <F2> :NERDTreeToggle<CR>
" YouCompleteMe
set runtimepath+=~/.vim/plugged/YouCompleteMe
let g:ycm_collect_identifiers_from_tags_files = 1
let g:ycm_collect_identifiers_from_comments_and_strings = 1
let g:syntastic_ignore_files=[".*\.py$"]
let g:ycm_seed_identifiers_with_syntax = 1
let g:ycm_complete_in_comments = 1
let g:ycm_confirm_extra_conf = 0
let g:ycm_key_list_select_completion = ['<c-n>', '<Down>']
let g:ycm_key_list_previous_completion = ['<c-p>', '<Up>']
let g:ycm_complete_in_strings = 1
let g:ycm_collect_identifiers_from_comments_and_strings = 1
let g:ycm_show_diagnostics_ui = 0
inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>" |
nnoremap <c-j> :YouCompleter GoToDefinitionElseDeclaration<CR>|
let g:ycm_global_ycm_extra_conf = "~/.vim/plugged/YouCompleteMe/third_party/ycmd/cpp/yco/.ycm_extra_conf.py"
" airline
let laststatus = 2
let g:airline_powerline_fonts = 1
let g:airline_theme = "dark"
let g:airline#extensions#tabline#enabled = 1
" vim-cpp-enhanced-highlight
let g:cpp_classs_scope_highlight = 1
let g:cpp_member_variable_highlight = 1
let g:cpp_class_decl_highlight = 1
let g:cpp_experimental_template_highlight = 1
2.3 vim插件的安装和清理
安装插件,打开vim,在vim中输入命令:
:PlugInstall
删除插件,在vimrc文件中,call plug#begin和call plug#end的插件列表中,将不需要的插件名称删除,并打开vim执行命令:
:PlugClean
2.4 YouCompleteMe的安装
为了确保YouCompleteMe依赖不缺失,执行以下:
cd ~/.vim/plugged/YouCompleteMe
git submodule update --init --recursive
插件安装完成后,打开vim,可能会出现以下错误:
The ycmd server SHUT DOWN (restart with ':YcmRestartServer'). Unexpected exit code -11
需要执行:
sudo apt-get install python3-dev #如果没有python3-dev,执行第三局会出错
cd ~/.vim/plugged/YouCompleteMe/third_party/ycmd
/usr/bin/python3 build.py
至此全部配置完毕。
2.5 NERDTree的使用
进入当前目录的树形界面,通过小键盘"上下"键,能移动选中的目录或文件。目录前面有"+"号,按Enter会展开目录,文件前面是"-"号,按Enter会在右侧窗口展现该文件的内容,并光标的焦点focus右侧。"ctr+w+h"光标focus左侧树形目录,"ctrl+w+l"光标focus右侧文件显示窗口。多次按"ctrl+w",光标自动在左右侧窗口切换。光标focus左侧树形窗口,按"?"弹出NERDTree的帮助,再次按"?"关闭帮助显示。输入":q"回车,关闭光标所在窗口。
NERDTree提供了丰富的键盘操作方式来浏览和打开文件,介绍一些常用的快捷键:
- 和编辑文件一样,通过h j k l移动光标定位
- 打开关闭文件或者目录,如果是文件的话,光标出现在打开的文件中
- go 效果同上,不过光标保持在文件目录里,类似预览文件内容的功能
- i和s可以水平分割或纵向分割窗口打开文件,前面加g类似go的功能
- t 在标签页中打开
- T 在后台标签页中打开
- p 到上层目录
- P 到根目录
- K 到同目录第一个节点
- J 到同目录最后一个节点
- m 显示文件系统菜单(添加、删除、移动操作)
- ? 帮助
- q 关闭
- 新建文件 ma 在要创建文件的目录中按命令 ma然后键入你要创建的文件名称即可。
- 删除文件 md 在要删除的文件上按命令md然后输入y回车即可。
- 移动文件/修改文件名 mm 在要修改的文件上按命令mm然后输入对应的目录和名称回车即可。