ubuntu 18 vim配置

2020/09/27 14:19
阅读数 44

直接在终端输入vimtutor zh回车进入vim的练习模式。

参考:
https://segmentfault.com/a/1190000016330314
http://www.ruanyifeng.com/blog/2018/09/vimrc.html
https://www.jianshu.com/p/2a0ccc86ee31https://blog.csdn.net/start000722/article/details/17508793

ubuntu 18在/etc/vim/的vimrc,直接末尾添加:

au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif
set number
"set mouse=a  "跟中键粘贴冲突
set laststatus=2
"set paste  "跟自动缩进冲突,而且没用好像

配置插件

vim的插件管理工具有多个:https://vimjc.com/vim-plugin-manager.html,我选择的Vundle:https://github.com/VundleVim/Vundle.vim,vimrc通常可以修改两个地方,一个在/etc/vim/vimrc,还有一个需要新建~/.vimrc。前者是全局vim,后者是自己的。

vimrc的Vundle设置参考官方模板即可,大多数插件开箱即用,但YouCompleteMe这个插件https://github.com/ycm-core/YouCompleteMe安装以后需要编译,这个是最头疼的,也是让我从/etc/vim/vimrc转向~/.vimrc的原因。

最开始我是在/etc/vim/vimrc中配置的:

"CONFIG VUNDLE
set nocompatible              " be iMproved, required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=/etc/vim/bundle/Vundle.vim
call vundle#begin('/etc/vim/bundle')

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
Plugin 'ycm-core/YouCompleteMe'

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required

Vundle更改一下begin那里的路径,Plugin默认从GitHub下载,只需要用户名和仓库名,YouCompleteMe需要5-10分钟左右。

然后最开始我只安装了sudo apt install build-essential cmake vim python3-dev,在/etc/vin/bundle/YouCompleteMe的路径下sudo python3 install.py --all的时候显示没有go,于是注意到了想要--all需要把所有的都安装上,于是sudo apt install golang-go nodejs npm,但是在sudo python3 install.py --all在访问golang.org的时候显示time out,原因大家都懂。

然后参考:https://blog.csdn.net/Wind4study/article/details/104565482,想能不能把YouCompleteMe/third_party/ycmd/build.py的网址替换成GitHub的golang网址,但是没成功,就打算按照文章中说的手动下载安装包了。

这时候找到了这篇文章:https://shockerli.net/post/go-get-golang-org-x-solution/,上面说1.11版本以后的go可以通过配置GOPROXY环境变量和go module自动设置代理下载golang,于是直接去官网https://golang.org/dl/下载了最新版的go,同时参考https://blog.csdn.net/snowin1994/article/details/88358836只设置了GOPROXY环境变量,同时remove了原先的apt的golang-go。

但是在sudo python3 install.py --all仍然显示没有安装go,然后搜索发现是因为sudo执行的配置文件是/etc/sudoers:ttps://blog.csdn.net/zhangleisddx/article/details/81358809,按照链接中的设置一下PATH,但连接golang.org还是timeout,意识到需要设置GOPROXY,而GOPROXY变量无法在/etc/sudoers中设置,(这中间还有一个小插曲,因为设置错了/etc/sudoers进不去了,参考:https://blog.csdn.net/qq_39703045/article/details/85319315,使用pkexec visudo命令)。之后想了个办法,先sudo su,之后在/root/.bashrc设置了go的PATH和GOPROXY,成功编译了。

但是像npm、nodejs这些需要在~下生成组件,root就会在root下,思来想去还是把环境建在自己的~下吧,于是就把/etc/vim/bundle拷贝到了~/.vim/下面,但会有权限问题,需要删除后重新下载设置,新建一个~/.vimrc:

au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif
set number
"set mouse=a
set laststatus=2
"set hls is

"CONFIG VUNDLE
set nocompatible              " be iMproved, required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
Plugin 'ycm-core/YouCompleteMe'
let g:ycm_show_diagnostics_ui = 0 "禁用YCM自带语法检查(使用ale)
Plugin 'Yggdroot/indentLine'
Plugin 'preservim/nerdtree'
"Plugin 'Raimondi/delimitMate'
Plugin 'tpope/vim-surround'
Plugin 'dense-analysis/ale'
Plugin 'majutsushi/tagbar'

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required

然后执行:PluginInstall,同样按照YouCompleteMe的官方介绍,因为之前装过了所以配置了go的PATH和GOPROXY就直接python3 install.py --all,竟然提示python SOCKS问题,好奇怪,然后开了三个8118转过去,好了,但是在npm安装组件那里卡死了:loadDep -> Network卡死。

然后参考:https://segmentfault.com/q/1010000019906790,最下面提示更新npm:npm install -g npm,不知道怎么搞的就好了。

之后本着控制变量的方法,重启电脑,取消了8118 SOCKS,只配置了go的PATH和GOPROXY,已经npm install -g npm过了,就好了。

奇怪。

最后参考https://bewaremypower.github.io/2019/06/19/%E6%88%91%E7%9A%84vim%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA-2-%E5%B8%B8%E7%94%A8%E7%9A%84vim%E6%8F%92%E4%BB%B6/对ycm加了一些设置:

let g:ycm_show_diagnostics_ui = 0 "禁用YCM自带语法检查(使用ale)
let g:ycm_confirm_extra_conf = 0  "不提示是否载入本地ycm_extra_conf文件
let g:ycm_min_num_of_chars_for_completion = 2  "输入第2个字符就罗列匹配项
"语法关键字、注释、字符串补全
"let g:ycm_seed_identifiers_with_syntax = 1
let g:ycm_complete_in_comments = 1 
let g:ycm_complete_in_strings = 1 
"从注释、字符串、tag文件中收集用于补全信息
let g:ycm_collect_identifiers_from_comments_and_strings = 1 
let g:ycm_collect_identifiers_from_tags_files = 1 
"输入2个字符就触发补全,太多了
"let g:ycm_semantic_triggers = {
"            \ 'c,cpp,python,java,go,erlang,perl': ['re!\w{2}'],
"            \ 'cs,lua,javascript': ['re!\w{2}'],
"            \ }

删除插件:vimrc中注释或者删除不想要的插件,然后类似PluginInstall执行:BundleClean即可。

展开阅读全文
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部