一、基本环境
主机 | MacOs Sonoma 14.7 |
虚拟机 | Parallels Desktop 20 for Mac Pro Edition 版本 20.0.1 (55659) |
虚拟机-操作系统 | Ubuntu 22.04 最小安装 |
二、安装依赖
# 安装ycm时要用到
apt install cmake
# 代码补全要用到
apt install clang
apt install python3-dev
apt install nodejs npm
三、安装插件管理工具Vim-Plug
mkdir ~/.vim
cd ~/.vim
autoload文件夹也可在安装Vim-plug插件时创建
mkdir plugged plugin syntax colors doc autoload
git clone https://github.com/junegunn/vim-plug
# 拷贝插件到指定目录下
cp vim-plug/plug.vim .vim/autoload/
当初在centos7.9上安装这玩意,真就是搞死个人啊,特别是glibc这狗日的
更新这玩意前,强烈建议备份虚拟机,一个不小心,安装完后就嗝屁了,安装glibc的需要的支持:
| 要求 | 实际使用 |
| ------------------------------ | ----------------------- |
| GNU 'make' 4.0 or newer | make-4.1 |
| GCC 6.2 or newer | gcc9.2.0 |
| GNU 'binutils' 2.25 or later | binutils 2.41 |
| | cmake-3.14.5 |
| GNU 'texinfo' 4.7 or later | texinfo-5.1 |
| GNU 'awk' 3.1.2, or higher | GNU Awk 4.0.2 |
| GNU 'bison' 2.7 or later | bison (GNU Bison) 3.0.4 |
| Perl 5 | Perl 5 |
| PExpect 4.0 | pexpect-4.9.0 |
| GNU 'sed' 3.02 or newer | sed (GNU sed) 4.2.2 |
| GNU 'autoconf' 2.69 (exactly) | |
| GNU 'gettext' 0.10.36 or later | |
wget -c https://ftp.gnu.org/gnu/glibc/glibc-2.31.tar.xz --no-check-certificate
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin --disable-sanity-checks --enable-obsolete-nsl
make -j4
make install
make localedata/install-locales
值得注意的是glibc的编译gcc13就不能编译,我当初用的是9.2版本,但编译ycm的时候9.2又不够用了,反正麻烦的很
目录名 | 作用 |
---|---|
autoload/ | 它是一个非常重要的目录,尽管听起来比实际复杂。简而言之,它里面放置的是当你真正需要的时候才被自动加载运行的文件,而不是在vim启动时就加载。 |
colors/ | 是用来存放vim配色方案的。 |
plugin/ | 存放的是每次启动vim都会被运行一次的插件,也就是说只要你想在vim启动时就运行的插件就放在这个目录下。我们可以放从vim-plug官方下载下来的插件.vim |
syntax/ | 语法描述脚本。我们放有关文本(比如c语言)语法相关的插件 |
doc/ | 为插件放置文档的地方。例如:help的时候可以用到。 |
ftdetect/ | 中的文件同样也会在vim启动时就运行。有些时候可能没有这个目录。ftdetect代表的是“filetype detection(文件类型检测)”。此目录中的文件应该用自动命令(autocommands)来检测和设置文件的类型,除此之外并无其他。也就是说,它们只该有一两行而已。 |
ftplugin/ | 此目录中的文件有些不同。当vim给缓冲区的filetype设置一个值时,vim将会在~/.vim/ftplugin/目录下来查找和filetype相同名字的文件。例如你运行set filetype=derp这条命令后,vim将查找~/.vim/ftplugin/derp.vim此文件,如果存在就运行它。不仅如此,它还会运行ftplugin下相同名字的子目录中的所有文件,如~/.vim/ftplugin/derp/这个文件夹下的文件都会被运行。每次启用时,应该为不同的文件类型设置局部缓冲选项,如果设置为全局缓冲选项的话,将会覆盖所有打开的缓冲区。 |
ndent/ | 这里面的文件和ftplugin中的很像,它们也是根据它们的名字来加载的。它放置了相关文件类型的缩进。例如python应该怎么缩进,java应该怎么缩进等等。其实放在ftplugin中也可以,但单独列出来只是为了方便文件管理和理解。 |
compiler/ | 和indent很像,它放的是相应文件类型应该如何编译的选项。 |
after/ | 这里面的文件也会在vim每次启动的时候加载,不过是等待~/.vim/plugin/加载完成之后才加载after里的内容,所以叫做after。 |
spell/ | 拼写检查脚本。 |
四、安装Ycm
cd ~
vim /.vimrc
call plug#begin('~/.vim/plugged')
# github太慢
Plug 'https://gitee.com/pengzongwei/YouCompleteMe.git'
call plug#end()
:w
:source
:PlugInstall
# 安装好会提示youcompleteme需要build
五、下载子模块
# 若自动下载子模块失败
cd ~/.vim/plugged/YouCompleteMe/third_party/ycmd
git submodule update --init --recursive --progress
这个过程会比较慢,慢的话多试几次,说不定一下子就很快了,获取访问github路由的问题
六.开始构建
cd ~/.vim/plugged/YouCompleteMe/third_party/ycmd
python3 build.py --force-sudo --verbose
七.开始安装
cd /.vim/plugged/YouCompleteMe
python3 install.py --clangd-completer --js-completer --force-sudo --verbose
C/C++/Objective-C/Objective-C++:编译时添加--clang-completer
CSharp:先安装Mono,编译时添加--cs-completer
Go:先安装Go,编译时添加--go-completer
TypeScript:先安装 Node.js and npm,然后使用npm install -g typescript安装TypeScript SDK
JavaScript: 先安装 Node.js and npm,编译时添加--js-completer
Rust: 先安装Rust,编译时添加--rust-completer
Java: 先安装JDK8,编译时添加--java-completer
全部支持:先安装所有的依赖环境,编译时添加--all
八、解决npm卡在sill idealTree buildDeps的问题
npm config set registry https://registry.npmmirror.com
npm cache clean --force
等我在用的插件都介绍完后,我会贴出我的vimrc的内容,供大家参考,也顺便看看有没有可改进的地方^_^
贴图看下效果: