-
Notifications
You must be signed in to change notification settings - Fork 20
Expand file tree
/
Copy pathvimrc_zh.vim
More file actions
218 lines (178 loc) · 8.32 KB
/
vimrc_zh.vim
File metadata and controls
218 lines (178 loc) · 8.32 KB
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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
""使用Vundle进行插件管理
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"配置Vundle所需参数
set nocompatible "关闭vi兼容模式
filetype off "关闭文件类型检测
"配置Vundle环境变量
set rtp+=~/.vim/bundle/Vundle.vim
"Vundle插件管理区域开始标签
call vundle#begin()
"使用Vundle管理自身插件
Plugin 'VundleVim/Vundle.vim'
"使用Vundle管理位于GitHub上的插件
Plugin 'scrooloose/nerdtree' "树形目录
Plugin 'jistr/vim-nerdtree-tabs' "为树形目录提供Tab支持
Plugin 'fholgado/minibufexpl.vim' "多文件编辑
Plugin 'vim-scripts/taglist.vim' "基于ctags的代码Tag浏览
Plugin 'vim-scripts/pyflakes' "实时检查python代码语法
Plugin 'davidhalter/jedi-vim' "Jedi Python语法结构自动补全
"使用Vundle下载位于GitHub上的配色模式,由http://cocopon.me/app/vim-color-gallery/推荐(根据个人喜好进行选择)
Plugin 'ciaranm/inkpot' "inkpot配色模式
"Plugin 'nanotech/jellybeans.vim' "jellybeans配色模式
"Plugin 'altercation/vim-colors-solarized' "solarized配色模式
"Vundle插件管理区域结束标签
call vundle#end()
"针对不同的文件类型加载对应的插件并允许开启自动补全
filetype plugin indent on
""快捷键选项
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"u "撤销最后的改动
"CTRL+r "重做最后的改动
"CTRL+v "块编辑模式[删除x][插入I][退出ESC]
"CTRL+x CTRL+f "文件路径补全
""配置选项
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
colorscheme inkpot "启用inkpot配色模式(根据个人喜好进行选择)
"colorscheme jellybeans "启用jellybeans配色模式(根据个人喜好进行选择)
"colorscheme solarized "启用solarized配色模式(根据个人喜好进行选择)
set background=dark "使用较暗的背景色
set history=600 "增加历史操作命令条数,默认20
set expandtab "使用空格替换Tab符
set tabstop=4 "设置Tab键的宽度为4个空格
"set smarttab "智能使用Tab键
set shiftwidth=4 "换行时行间交错使用4个空格
set autoindent "自动缩进
"set smartindent "智能缩进
"set number "显示行号
set showmatch "显示括号配对情况
set matchtime=2 "匹配括号时闪烁2个十分之一秒
"set mouse=a "启用鼠标
set ruler "启用状态栏标尺
set incsearch "开启实时搜索功能
set hlsearch "开启高亮显示搜索结果
"set smartcase "开启智能大小写搜索
"set ignorecase "搜索时忽略大小写
"set nowrapscan "搜索到文件两端时不重新搜索
set cursorline "突出显示当前行
"set cursorcolumn "突出显示当前列
set hidden "允许在有未保存的修改时切换缓冲区
"set wildmenu "启动增强模式下的命令行自动完成
"set cmdheight=1 "设置命令行高度
"set foldcolumn=1 "增加左侧边距
"set autowrite "开启自动保存
set nowrap "不自动换行
"set backup "自动备份修改前的文件为源文件名加~
"set noswapfile "编辑时不产生交换文件
"set autochdir "自动切换当前目录为文件所在的目录
set equalalways "分割窗口时保持相等的宽和高
set splitright "分割窗口时新窗口显示在右边
set maxmempattern=2097152 "将字符串匹配的可用内存设置为2GiB
set backupcopy=yes "避免在保存时更改文件的inode信息
set lazyredraw "为了良好的性能在执行宏时不重绘
set magic "开启正则表达式魔法
set regexpengine=0 "自动设置正则表达式引擎
set scrolloff=7 "滚动垂直时保持光标上下各7行可见
"自动读取被外部修改的文件内容
set autoread
au FocusGained,BufEnter * checktime
"关闭错误提示音
set noerrorbells
set novisualbell
set timeoutlen=500
"关闭备份
"set nobackup ".bak
"set nowritebacku
"set noswapfile ".swp
"针对文件类型使用特定的缩进与Tab键宽度
autocmd Filetype css,html,javascript,ruby,sh,vim,xml,yaml setlocal expandtab tabstop=2 shiftwidth=2
autocmd FileType make,go setlocal noexpandtab tabstop=8 shiftwidth=8
"启用并优化退格键的行为
set backspace=eol,start,indent
set whichwrap+=<,>,h,l
"打开语法高亮和文件类型侦测
syntax enable
syntax on
"每行超过80个的字符用下划线标示(默认禁用)
"au BufRead,BufNewFile *.c,*.cpp,*.java,*.cs,*.sh,*.lua,*.pl,*.py,*.rb,*.erb,*.vim 2match Underlined /.\%81v/
"自定义状态栏显示(文件名称,文件格式,文件类型,光标字符ASCII与16进制值,光标所在行号和列号,文件总行数)
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]
set laststatus=2 "总是显示状态栏
"自动识别文件格式并使用Unix作为标准文件类型
set fileformats=unix,dos,mac
"设置默认编码
set fileencoding=utf-8
set encoding=utf-8
set fileencodings=utf-8,gbk,cp936,latin-1
"解决Consle乱码输出问题
"language messages en_US.utf-8
language messages zh_CN.utf-8
"通过快捷键<F6>开关粘贴模式临时关闭自动缩进与自动完成等功能方便从外部复制代码
set pastetoggle=<F6>
"用小方块显示Tab符号和行尾多余的空格
set listchars=tab:\|\■,trail:■
set list
"打开文件时光标自动跳转到上次退出位置
if has("autocmd")
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif
":W 使用冒号加大写W sudo保存没有写权限的文件
command! W execute 'w !sudo tee % > /dev/null' <bar> edit!
""插件配置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Taglist
let Tlist_Use_Right_Window = 1 "在右侧窗口中显示
let Tlist_File_Fold_Auto_Close = 1 "自动折叠
let Tlist_Show_One_File = 1 "只显示当前文件的tags
let Tlist_Exit_OnlyWindow = 1 "如果Taglist窗口是最后一个窗口则退出Vim
"Jedi Python语法结构自动补全
let g:jedi#completions_enabled = 1 "启用Jedi自动补全
autocmd FileType python setlocal completeopt-=preview "禁用在补全期间自动弹出文档描述
"通过快捷键<F10>开关Taglist
nnoremap <silent> <F10> :Tlist<CR>
"通过快捷键<F9>开关NERDTree
nnoremap <silent> <F9> :NERDTreeTabsToggle<CR>
"通过快捷键<F8>切换窗口
nnoremap <silent> <F8> <C-W>w
"通过快捷键<F7>启用Pyflakes
autocmd FileType python map <buffer> <F7> :call Pyflakes()<CR>
"MiniBufExpl多文件编辑
let g:miniBufExplMapWindowNavVim = 1
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplModSelTarget = 1
""引号,括号自动匹配
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {}<ESC>i
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
":inoremap < <><ESC>i
":inoremap > <c-r>=ClosePair('>')<CR>
":inoremap " ""<ESC>i
":inoremap ' ''<ESC>i
":inoremap ` ``<ESC>i
function ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "\<Right>"
else
return a:char
endif
endfunction
""关闭语法高亮避免因渲染超长base64-like字符串导致卡顿
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
function! DisableSyntaxIfLongBase64Like()
let max_lines = min([line('$'), 1000])
let base64_pattern = '[A-Za-z0-9+/=]\{256,}'
for lnum in range(1, max_lines)
if match(getline(lnum), base64_pattern) >= 0
setlocal syntax=off
echohl ErrorMsg
echon "语法高亮已关闭: 避免因渲染第" . lnum . "行超长base64-like字符串导致卡顿"
echohl None
break
endif
endfor
endfunction
autocmd BufReadPost * call DisableSyntaxIfLongBase64Like()