自从发现vim的强大之后,刷刷leetcode之类的单文件cpp编译环境,用vim简直就是爽到爆炸。
下面记录一下搭建环境的过程,方便以后装系统使用。
0 系统环境介绍:
系统:ubuntu20.04 server版安装,安装时无桌面环境
桌面:kde, 安装的kubuntu
1 安装vim的插件管理工具:vundle
官方github:https://github.com/VundleVim/Vundle.vim#about (觉得好用可以给人家一个star, 开源维护也不容易)
直接按照readme中的Quick Start部分安装即可
2 安装YCM
官方github:https://github.com/ycm-core/YouCompleteMe (觉得好用可以给人家一个star, 开源维护也不容易)
通过vumdle安装:
vim ~/.vimrc
在插件区域(“Plugin”所在的那几行)写入如下内容:
Plugin 'Valloric/YouCompleteMe'
"YouCompleteMe
"配置默认文件路径
let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'
"打开vim时不再询问是否加载ycm_extra_conf.py配置
let g:ycm_confirm_extra_conf = 0
set completeopt=longest,menu
"自动开启语义补全
let g:ycm_seed_identifiers_with_syntax = 1
"在注释中也开启补全
let g:ycm_complete_in_comments = 1
let g:ycm_collect_identifiers_from_comments_and_strings = 0
"字符串中也开启补全
let g:ycm_complete_in_strings = 1
let g:ycm_collect_identifiers_from_tags_files = 1
"开启基于tag的补全,可以在这之后添加需要的标签路径
let g:ycm_collect_identifiers_from_tags_files = 1
"开始补全的字符数
let g:ycm_min_num_of_chars_for_completion = 2
"补全后自动关闭预览窗口
let g:ycm_autoclose_preview_window_after_completion = 1
"禁止缓存匹配项,每次都重新生成匹配项
let g:ycm_cache_omnifunc=0
"离开插入模式后自动关闭预览窗口
autocmd InsertLeave * if pumvisible() == 0|pclose|endif
"语法关键字补全
let g:ycm_seed_identifiers_with_syntax = 1
"整合UltiSnips的提示
let g:ycm_use_ultisnips_completer = 1
"在实现和声明之间跳转,并分屏打开
let g:ycm_goto_buffer_command = 'horizontal-split'
nnoremap g :YcmCompleter GoTo
"与syntastic有冲突,建议关闭
let g:ycm_show_diagnostics_ui = 0
"let g:ycm_error_symbol = '>>'
"let g:ycm_warning_symbol = '>>'
let g:ycm_enable_diagnostic_signs = 0
let g:ycm_enable_diagnostic_highlighting = 0
let g:ycm_echo_current_diagnostic = 0
写入,然后在vim界面执行安装命令:
:w
:PluginInstall
等待安装完成即可。
3 配置在vim复制到剪切板的快捷键,毕竟提交到OJ上必须过剪切板。
1) 先查看是否支持clipboard
vim --version | grep "clipboard"
clipboard前面有一个小小的减号,说明不支持,需要安装图形界面的vim。如果是加号,则进行下一步。
安装命令:
# 如果是kde桌面:
sudo apt install vim-gtk3
#如果是gnome桌面:
sudo apt install vim-gnome
2) 配置快捷键
vim ~/.vimrc
文件末尾写入:
" 支持在Visual模式下,通过C-y复制到系统剪切板
vnoremap "+y
" 支持在normal模式下,通过C-p粘贴系统剪切板
nnoremap "*p
source本文件使之生效。在vim的编辑页面输入:
:source %
3) 使用
在vim中的可视模式下,按Ctl+Y快捷键就能复制高亮的文字。(正常模式下按v进入可视模式,按shift+v进入行可视模式)
Ctl+P能粘贴剪切板的内容。
4 搭建latex编写环境:vimtex
官方github:https://github.com/lervag/vimtex (值得给星)
对于用惯了vim的人来说,在编辑的时候,鼠标是基本可以用不着的东西了。写论文的时候能不能用vim写呢?答案是可以的,而且很快~
1) 搭建latex编译环境
对于刚入门的latexer来说,装个比较全的当然是更不容易采坑的,定制的选项是高阶玩法。因此选择安装texlive
或者texlive-latex-extra
, 而不是texlive-base
。
texlive-latex-extra
2) 通过vumdle安装vimtex
在~/vimrc的插件位置写入:
Plugin 'lervag/vimtex'
写入/安装,在vim编写页面:
:w
:PluginInstall
安装好之后就可以愉快的使用vim写latex了。
3) 效果
按快捷键编译latex:\ll
以及自动补全的效果。(使用教程自己搜,或者感兴趣的人多的话再写。)
4) 抑制无关紧要的warning
在~/.vimrc中的Plugin 'lervag/vimtex'
行下方写入:(写在这是因为配置的vimtex插件,避免混乱,其实放在其他地方也能生效。)
Plugin 'lervag/vimtex'
let g:vimtex_quickfix_ignore_filters = [
\ 'hbox',
\ 'CJK',
\]
大概解释下,这是vimtex的20年8月份版本更新的最新配置方式,之前抑制warning的配置方式都被标注为Decrepted了。这种配置方式应该是灵活度最大的,用filter的方式,把自己认为不重要的waring给屏蔽掉。
效果是,把warnging信息中的关键词放在filter里面,编译的时候warning提示信息有这个关键词就会被屏蔽掉。
例如上面的效果图中第一个warning有CJK的,其实解不解决没有影响(也不太好解决),对于强迫症患者来说每次编译都有个warning就很让人抓狂,所以就可以把关键词CJK放在里面。同理hbox也影响不大,排版是正常的,也放入其中。
vimtex的所有配置项都在github的doc里有,这也是我搜文档一步一步找到的,doc地址如下:
https://github.com/lervag/vimtex/blob/master/doc/vimtex.txt
再介绍下如何找到这个配置的过程。在上述doc文件中,我先搜索的是关键词是warning,有21个匹配,然后寻找最相关的内容。如下图所示:
g:vimtex_quickfix_ignore_all_warnings,看名字就是我们想要设置的,然而,被Decrepted了。不过没关系,人家在下方提示了我们see
g:vimtex_quickfix_warnings
,那我们就以这个关键词进行搜索,结果如下:
结果梅开二度,那我们再搜索
g:vimtex_quickfix_latexlog
。
事不过三,再搜索g:vimtex_quickfix_ignore_filters
,终于找到了正主。
配置的示例以及描述都相当详细,就不多解释了。
5 常用设置
显示代码行号,以及设置tab为4个空格。在~/.vimrc文件的末尾加上:(这个设置是全局的,所以放在最后)
set number
set ts=4 sw=4 sts=4 tw=100
set expandtab
" set list
" set listchars=tab:▸-,eol:↩︎,trail:-