vim 打怪之旅

警告
本文最后更新于 2022-03-17,文中内容可能已过时。

vim 素有「编辑器之神」的称呼。对于 「Linux-er」,vim 是我们日常写代码的得力助手。

当然,这个「助手」并非那么「听话」,有时还很「高冷」。据说 SO 上面关于 Vim 问答最活跃的一个帖子,是如何退出。

我曾经也是一名小白。从一开始的「恐vim」心态,逐渐变成「爱不释手」,这过程中所经历的曲折不尽其数。为了让自己更加熟悉 Vim,也为了后来者有所参数,我决定以博客的形式,记录自己在使用 Vim 过程中所思所想、所感所悟,希望对自己有所总结,对他人有所启发。

文中主要以使用工具的实践为导向,介绍相关的插件与配置。

Ref

之所以先把参考资源相关的连接放在前面,是因为我在修炼 Vim 的道路上,得到了这些前辈高手的指点与启发。在这里表示诚挚的感谢!

  • 所需即所获:像 IDE 一样使用 vim:这篇博文可以说是我的启蒙之光了,从非常使用的角度指导如何配置 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'

相关内容

william 支付宝支付宝
william 微信微信
0%