VIM配置和使用

韩乔落

教程网站 插件网站

VIM9 安装

从源安装

本机环境:ubuntu:22.04。

这个方法装的 vim9.0。最新版YCM(YouCompleteMe unavailable: requires Vim 9.1.0016+.)需要 9.1 以上。

1
2
3
4
5
# 更新源
sudo add-apt-repository ppa:jonathonf/vim
sudo apt update
# 安装
sudo apt install vim

编译安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# download
git clone https://github.com/vim/vim.git
cd vim
# configure
./configure --with-features=huge \
--enable-multibyte \
--enable-python3interp=yes \
--with-python3-config-dir=/usr/lib/python3.10/config-3.10-x86_64-linux-gnu \
--enable-gui=gtk2 \
--enable-cscope \
--prefix=/usr/local/vim
# install
make
sudo make install

基本操作

教程网站

插件推荐

.vimrc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
call plug#begin('~/.vim/plugged')

Plug 'itchyny/lightline.vim'
Plug 'scrooloose/nerdtree' " 文件树
Plug 'Valloric/YouCompleteMe' " 代码提示补全插件
Plug 'sickill/vim-monokai' " monokai主题
Plug 'vim-airline/vim-airline' " 美化状态栏
Plug 'vim-airline/vim-airline-themes' " 设置ailine
Plug 'plasticboy/vim-markdown' " markdown高亮
Plug 'octol/vim-cpp-enhanced-highlight' " C++代码高亮
Plug 'mhinz/vim-signify'
Plug 'dense-analysis/ale'
Plug 'morhetz/gruvbox' " 主题
Plug 'luochen1990/rainbow' "rainbow parenthesis

call plug#end()


"------------------------------------
"-------------keyboard map-----------
"-----------------------------------
inoremap jj <esc>
"-----------------------------------
"让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
"搜索忽略大小写
set ignorecase
"搜索逐字符高亮
set hlsearch
set incsearch
" 为C程序提供自动缩进
set smartindent
set cursorline " 突出显示当前行
"光标遇到圆括号、方括号、大括号时,自动高亮对应的另一个圆括号、方括号和大括号"
set showmatch

"括号自动匹配补全"
inoremap ( ()<Esc>i
inoremap [ []<Esc>i
inoremap { {}<Esc>i
inoremap { {<CR>}<Esc>O
" C++的编译和运行
map <F5> :call CompileRunGpp()<CR>
func! CompileRunGpp()
exec "w"
exec "!g++ % -o %<"
exec "! ./%<"
endfunc

"rainbow parenthesis
let g:rainbow_active = 1
" 文件树的设置
nmap <Leader><Leader> :NERDTreeToggle<CR>
let NERDTreeWinSize=32
" 设置NERDTree子窗口宽度
let NERDTreeWinPos="left" " 设置NERDTree子窗口位置
let NERDTreeShowHidden=1 " 显示隐藏文件
let NERDTreeMinimalUI=1 " NERDTree 子窗口中不显示冗余帮助信息
let g:rainbow_conf = {
\ 'guifgs': ['royalblue3', 'darkorange3', 'seagreen3', 'firebrick'],
\ 'ctermfgs': ['lightblue', 'lightyellow', 'lightcyan', 'lightmagenta'],
\ 'operators': '_,\|+\|-_',
\ 'parentheses': ['start=/(/ end=/)/ fold', 'start=/\[/ end=/\]/ fold', 'start=/{/ end=/}/ fold'],
\ 'separately': {
\ '*': {},
\ 'tex': {
\ 'parentheses': ['start=/(/ end=/)/', 'start=/\[/ end=/\]/'],
\ },
\ 'css': 0,
\ }
\}
" 绑定F2到NERDTreeToggle
map <F2> :NERDTreeToggle<CR>


" YouCompleteMe
set runtimepath+=~/.vim/plugged/YouCompleteMe
let g:ycm_collect_identifiers_from_tags_files = 1 " 开启 YCM 基于标签引擎
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>'] " 映射按键, 没有这个会拦截掉tab, 导致其他插件的tab不能用.
let g:ycm_key_list_previous_completion = ['<c-p>', '<Up>']
let g:ycm_complete_in_comments = 1 " 在注释输入中也能补全
let g:ycm_complete_in_strings = 1 " 在字符串输入中也能补全
let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注释和字符串中的文字也会被收入补全
let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
"let g:ycm_min_num_of_chars_for_completion=2 " 从第2个键入字符就开始罗列匹配项
let g:ycm_global_ycm_extra_conf = "~/.vim/plugged/YouCompleteMe/third_party/ycmd/cpp/ycm/.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-monokai
" colorscheme monokai

"" vim-markdown
" Github风格markdown语法
let g:vim_markdown_no_extensions_in_markdown = 1

"" vim-cpp-enhanced-highlight
let g:cpp_class_scope_highlight = 1
let g:cpp_member_variable_highlight = 1
let g:cpp_class_decl_highlight = 1
let g:cpp_experimental_template_highlight = 1

" 自定义error和warning图标
let g:ale_sign_error = ''
let g:ale_sign_warning = ''
" 显示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%]'
"设置状态栏显示的内容,这里必须添加%{ALEGetStatusLine()到状态栏里
"设置ale显示内容
let g:ale_statusline_format = ['✗ %d', '⚡ %d', '✔ OK']
" 对verilog、c++、c、python单独设置linter
let g:ale_linters = { 'verilog': ['vlog'],
\ 'c++': ['clangd'],
\ 'c': ['gcc'],
\ 'python': ['pylint'],
\}

let g:ale_lint_on_text_changed = 1
let g:ale_set_loclist = 0
let g:ale_set_quickfix = 1

记得在 vim 里面 source ~/.vimrc

plugin

检查用户下是否有~/.vim文件夹

1
2
3
mkdir ~/.vim
cd ~/.vim
mkdir plugged plugin syntax colors doc autoload

下载 vim-plug

1
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

YouCompleteMe

进行到这一步,vim基本已经配置差不多啦,最后来进行自动补全的配置。
此时打开vim底部会出现YCM的报错,现在来解决。

  • 安装python3python3-dev
1
sudo apt install python3 python3-dev
  • 执行如下命令(使用绝对路径)
1
2
# 安装失败可能需要降级 setuptools == 64
/usr/bin/python3 ~/.vim/bundle/YouCompleteMe/install.py --all --verbose
  • Title: VIM配置和使用
  • Author: 韩乔落
  • Created at : 2025-01-01 23:15:06
  • Updated at : 2025-02-10 18:03:27
  • Link: https://jelasin.github.io/2025/01/01/VIM配置和使用/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments