如何写好我们自己的vimrc❓

Vim可以说是个高度自定义化的编辑器,1000个vimer就有1000个vimrc:😀

怎么写好属于我们自己的vimrc呢, That is a question✔︎

我是如下分类整理和更新的.📁

基础的配置

大概包括下面一些,

  • 文件类型(filetype)
  • 界面配置
  • 语法(syntax)
  • fold相关

好的是,上面这些都可以使用vim的帮助命令去查看,filetype, syntax以及fold在帮助文档都有详细的描述,

当你发现需要某些功能的时候,就可以去搜索查找vim如何配置做到.比如:

切换buffer的时候会发现每次都会提示你当前buffer未保存, 那么如何做到呢?

1
set hidden

就可以了.

这些命令也都是可以在command-mode下面执行的命令. 主要是

  • set
  • filetype, syntax, fold*
  • call

提示:

在vim-user manual里, C-] 可以跳转到cusor下文件对应的目录.

自动命令autocmd 🚘

首先需要编译vim时 +autocmd的支持.

简要来说就是在某种模式下,vim自动执行某些命令. 这样分类是因为

  • autocmd很强大,实现许多功能
  • 也可能出现一些副作用等问题,使用时最好先提前测试.

autocmd看手册学习就可以了,有需求的时候可以边学边造轮子. 拜托那些繁杂的操作,从现在开始.

简单来说了解模式之后,主要看一下<Event>

  • 读buffer/file
  • 写buffer/file
  • buffer/window/file切换
  • filetype/syntax等
  • cusor/界面相关

提示:

查看帮助文档的时候,(命令模式), 插入cusor当前字符使用 <C-r><C-w>.

插件🔌

主要包括添加了哪些插件, 每个插件的全局配置等等.

目前平时用的插件还是不太多的,vim自带的功能其实本身已经很强大了.自带的许多插件也很棒的像

  • nerdtree
  • quickfix

其他也就 YouCompleteMevim-colorscheme用的比较频繁.

mapping ☑️

按键映射可以说是使用频繁的一个功能, 也使得vim更加高度自定义化和便于记忆. 最终达到的一个很棒的效果就是不用大脑思考,完全肌肉记忆.

首先<Leader>键还是很有用的,个人定义空格作为leader key. 个人常用的的mapping有:

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
let mapleader = "\<Space>"
" key mapping for ale
nmap <silent> <C-p> <Plug>(ale_previous_wrap)
nmap <silent> <C-n> <Plug>(ale_next_wrap)

" key mapping for g++
nnoremap <Leader>rr :!g++ -std=c++11 % -o %:r<CR>
nnoremap <Leader>rg :!g++ -g -std=c++11 % -o %:r<CR>
nnoremap <Leader>ter :packadd termdebug<CR>
nnoremap <Leader>db :Termdebug %:r<CR>
inoremap jk <ESC>l

map <S-e> $
imap xz <ESC>o
imap zx <Up><ESC>o

" close buffer mapping
nnoremap <Leader>bb :bd<CR>
nnoremap <Leader>zz :wq<CR>
nnoremap <Leader>w :w<CR>

" for python
nnoremap <Leader>pp :!python3 %<CR>

" ctags
nnoremap <silent> <Leader>tt :!ctags -R<CR>

" buffer switch
nnoremap <silent> [b :bprevious<CR>
nnoremap <silent> ]b :bnext<CR>
nnoremap <silent> [B :bfirst<CR>
nnoremap <silent> ]B :blast<CR>

" tab switch
nnoremap [t :tabp<CR>
nnoremap ]t :tabn<CR>

函数 ⚱️

一些定义的函数可以放在一起.

这些就需要简单地学习一下vimscript去写了.

设定几个任务

  • 细节部分稍微细致学一下,在写几篇笔记
  • vimsript好好看一下,争取可以做到,能实现自己想要的函数功能
  • 写一个插件