警告
本文最后更新于 2022-03-17,文中内容可能已过时。
vim
素有「编辑器之神」的称呼。对于 「Linux-er」,vim
是我们日常写代码的得力助手。
当然,这个「助手」并非那么「听话」,有时还很「高冷」。据说 SO 上面关于 Vim 问答最活跃的一个帖子,是如何退出。
我曾经也是一名小白。从一开始的「恐vim」心态,逐渐变成「爱不释手」,这过程中所经历的曲折不尽其数。为了让自己更加熟悉 Vim,也为了后来者有所参数,我决定以博客的形式,记录自己在使用 Vim 过程中所思所想、所感所悟,希望对自己有所总结,对他人有所启发。
文中主要以使用工具的实践为导向,介绍相关的插件与配置。
Ref
之所以先把参考资源相关的连接放在前面,是因为我在修炼 Vim
的道路上,得到了这些前辈高手的指点与启发。在这里表示诚挚的感谢!
打开大文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
" ref:https://vim.fandom.com/wiki/Faster_loading_of_large_files
" 处理 vim 打开大文件较慢的问题
" file is large from 10mb
let g:LargeFile = 1024 * 1024 * 10 "10MB
augroup LargeFile
au!
autocmd BufReadPre * let f=getfsize(expand("<afile>")) | if f > g:LargeFile || f == -2 | call LargeFile() | endif
augroup END
function! LargeFile()
" no syntax highlighting etc
set eventignore+=FileType
" save memory when other file is viewed
setlocal bufhidden=unload
" is read-only (write with :w new_filename)
setlocal buftype=nowrite
" no undo possible
setlocal undolevels=-1
" display message
autocmd VimEnter * echo "The file is larger than " . (g:LargeFile / 1024 / 1024) . " MB, so some options are changed (see .vimrc for details)."
endfunction
|
YouCompleteMe(YCM)
对于经常使用 Vim 编辑 C++ 项目,我们需要一款得力的自动补全工具。
使用 Plug 安装(大概有不行)
1
|
Plug 'Valloric/YouCompleteMe', { 'do': './install.sh --go-completer --js-completer', 'on': [] }
|
使用 git 安装(可行方案)
配置
NerdTree
Seiya: 透明化背景
1
2
|
Plug 'miyakogi/seiya.vim' "使用命令:SeiyaEnable,SeiyaDisable
let g:seiya_auto_enable=1 "默认启动 seiya
|
tagbar
Vim-Tmux 补全
插件:tmux-complete.vim
功能:允许用户在编辑 vim 文件的时候,自动补全 Tmux 出现的字段
安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
Plug 'prabirshrestha/async.vim'
Plug 'prabirshrestha/asyncomplete.vim'
Plug 'wellle/tmux-complete.vim'
let g:tmuxcomplete#asyncomplete_source_options = {
\ 'name': 'tmuxcomplete',
\ 'whitelist': ['*'],
\ 'config': {
\ 'splitmode': 'words',
\ 'filter_prefix': 1,
\ 'show_incomplete': 1,
\ 'sort_candidates': 0,
\ 'scrollback': 0,
\ 'truncate': 0
\ }
\ }
"" 设置:解决 enter 不能新起一行的问题
let g:tmuxcomplete#trigger = 'omnifunc'
imap <c-space> <Plug>(asyncomplete_force_refresh)
inoremap <expr> <CR> pumvisible() ? asyncomplete#close_popup() . "\<CR>" : "\<CR>"
|
Devicons
1
2
3
4
5
6
7
8
9
|
## 首先需要安装 nerd-fond
git clone https://github.com/ryanoasis/nerd-fonts.git
cd nerd-fonts
bash ./install.sh
## 需要设置 Terminator 的字体为 FiraCode Nerd Font Mono
## 然后安装插件即可显示
Plug 'ryanoasis/vim-devicons'
|