Abel'Blog

我干了什么?究竟拿了时间换了什么?

0%

vim

简介

记录vim编辑器。

🔧 新版 ~/.vimrc(vim-plug)

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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
" ===================================================================
" ~/.vimrc - Personal Vim Configuration (vim-plug version)
" ===================================================================

" ============================
" 插件管理 (vim-plug)
" ============================
if empty(glob('~/.vim/autoload/plug.vim'))
silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif

call plug#begin('~/.vim/plugged')

" Git 集成
Plug 'tpope/vim-fugitive'
Plug 'junegunn/gv.vim'
Plug 'airblade/vim-gitgutter'

" 文件/目录管理
Plug 'preservim/nerdtree'
Plug 'ctrlpvim/ctrlp.vim'

" 状态栏 & 界面增强
Plug 'vim-airline/vim-airline'

" 搜索工具
Plug 'mileszs/ack.vim'
Plug 'rking/ag.vim'
Plug 'junegunn/fzf.vim'

" 语法高亮 & 语言支持
Plug 'nikvdp/ejs-syntax'
Plug 'tomlion/vim-solidity'
Plug 'octol/vim-cpp-enhanced-highlight'
Plug 'fatih/vim-go'

" 其他
Plug 'rstacruz/sparkup', { 'rtp': 'vim/' }

call plug#end()

" ============================
" 基础编辑设置
" ============================
set number
set ts=4
set shiftwidth=4
set expandtab
set autoindent
set encoding=utf-8
set nowrap
set cursorline
set ruler
set rulerformat=%20(%2*%<%f%=\ %m%r\ %3l\ %c\ %p%%%)

highlight OverLength ctermbg=red ctermfg=white guibg=red guifg=white
set tw=250
match OverLength /\%250v.*/

set foldenable
set foldmethod=manual

set guifontwide=YaHei\ Consolas\ Hybrid\ 12
set guifont=YaHei\ Consolas\ Hybrid\ 12

" ============================
" JavaScript 支持
" ============================
let g:javascript_plugin_jsdoc = 1
let g:javascript_plugin_flow = 1

augroup javascript_folding
au!
au FileType javascript setlocal foldmethod=syntax
augroup END

let g:javascript_conceal_function = "ƒ"
let g:javascript_conceal_null = "ø"
let g:javascript_conceal_this = "@"
let g:javascript_conceal_return = "⇚"
let g:javascript_conceal_undefined= "¿"
let g:javascript_conceal_NaN = "ℕ"
let g:javascript_conceal_prototype= "¶"
let g:javascript_conceal_static = "•"
let g:javascript_conceal_super = "Ω"
let g:javascript_conceal_arrow_function = "⇒"

" ============================
" NERDTree 设置
" ============================
let g:NERDTreeDirArrows = 1
let g:NERDTreeDirArrowExpandable = '▸'
let g:NERDTreeDirArrowCollapsible = '▾'
let g:NERDTreeGlyphReadOnly = "RO"
" 新增:解决报错
if !exists("g:NERDTreeNodeDelimiter")
let g:NERDTreeNodeDelimiter = "│"
endif

" ============================
" 快捷键设置
" ============================
let mapleader = ","
let g:mapleader = ","

nmap wm :NERDTreeToggle<CR>
map <leader>e :e! ~/.vimrc<CR>

map <C-j> <C-W>j
map <C-k> <C-W>k
map <C-h> <C-W>h
map <C-l> <C-W>l

map <F4> :Ack
map <F3> :Ag
nmap wn :MRU<CR>
nmap <F8> :TagbarToggle<CR>
map <leader>t :TagbarToggle<CR>

" ============================
" cscope 快捷键
" ============================
set cscopequickfix=s-,c-,d-,i-,t-,e-
nmap fc :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap fs :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap fg :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap ft :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap fe :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap ff :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap fi :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap fd :cs find d <C-R>=expand("<cword>")<CR><CR>

" ============================
" 历史记录 (MRU)
" ============================
let MRU_File=$HOME.'/.mru_files.txt'
let MRU_Max_Entries=50
let MRU_Window_Height=10
let MRU_Auto_Close=1

" ============================
" 搜索和匹配
" ============================
set showmatch
set matchtime=1
set ignorecase
set hlsearch
set incsearch
set listchars=tab:\|\ ,trail:.,extends:>,precedes:<,eol:$

set scrolloff=3
set novisualbell

" ============================
" 状态栏
" ============================
set statusline=%F%m%r%h%w\[POS=%l,%v][%p%%]\%{strftime(\"%d/%m/%y\ -\ %H:%M\")}
set laststatus=2

" ============================
" ag.vim
" ============================
let g:ag_working_path_mode="r"

🚀 在新机器上安装步骤

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

Taglist 插件:缺少 Exuberant ctags

1
2
3
4
5
6
7
8
# Ubuntu/Debian
sudo apt-get install exuberant-ctags

# macOS (Homebrew)
brew install ctags

# Fedora/CentOS
sudo yum install ctags
  1. 复制配置文件

把上面的 .vimrc 保存到新机器的 ~/.vimrc

  1. 打开 Vim 并安装插件
1
:PlugInstall

这一步会自动下载并安装你配置的所有插件。

  1. 日常更新插件
1
:PlugUpdate
  1. 清理不用的插件
1
:PlugClean

sudo add-apt-repository ppa:jonathonf/vim
sudo apt update
sudo apt install vim