-
Notifications
You must be signed in to change notification settings - Fork 0
/
vimrc.lvxiang
executable file
·202 lines (180 loc) · 8.08 KB
/
vimrc.lvxiang
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
source ~/.vim/bundles.vim
filetype plugin indent on "自动识别文件类型,用文件类型的plugin脚本,用对应的缩进定义
"ack
let g:syntastic_css_checkers = ['prettycss']
nmap <leader>x <plug>NERDCommenterToggle
xmap <leader>x <plug>NERDCommenterToggle
let NERDCompactSexyComs=1
set t_Co=256 "256位色模式
colorscheme molokai "配色方案
set nobackup "关闭自动备份
set mouse= "关闭鼠标
set helplang=cn "帮助文档语言
syntax on "语法高亮
"set autochdir "自动将pwd切换为当前文件所在的目录
set hlsearch "搜索高亮
set incsearch "搜索追踪
set ignorecase "忽略大小写$
set smartcase "当查询串中有至少一个大写字母时对大小写敏感
set backspace=indent,start "允许用退格符删除回车符
set smartindent "智能缩进
set autoindent "自动对齐
set expandtab "把制表符换为空格
set tabstop=4 "缩进量
set shiftwidth=4 "缩进值,用<<和>>的缩进量
set list "显示特殊字符
set listchars=tab:>-,eol:$ "需要显示的特殊字符,tab显示为>----,换行显示为$
set ambiwidth=double "把所有的不明宽度字符的宽度设为两个字符
set selection=inclusive "可视模式下将当前光标所在的字符选中
set so=5 "在光标上下各留5行
set ruler "在右下角显示当前光标位置
set showcmd "在右下角显示当前已输入但还未执行的命令
set foldmethod=marker "按照折叠符号折叠
set foldcolumn=2 "行首显示折叠标识的空格数
set showmatch "显示对应的半个括号位置
set nu "显示行号
set wrap "自动折行
set cursorline cursorcolumn "高亮光标所在行和列
au WinLeave * set nocursorline nocursorcolumn "进入窗口的时候高亮所在的行和列
au WinEnter * set cursorline cursorcolumn "离开窗口的时候取消对光标所在行和列的高亮
set laststatus=2 "始终显示状态栏
set winaltkeys=no "在windows下禁用菜单alt键,使得alt可以使用
"set completeopt=longest,menu "自动补全时出最长无分歧的字符串和menu列表
set history=100 "保留1000次历史
set nocompatible "关闭VI兼容模式
set confirm "关闭未保存的文件时提示
set iskeyword+=$,%,#,- "碰到这些字符是时候仍然认为是一个词
set report=0 "显示被替换的次数
set matchpairs+=<:> "添加对html的括号匹配
"文件编码相关的设置
set fileencodings=utf-8,chinese "文件编码扫描类型
if has ('win32')
set fileencoding=chinese "windows下默认的文件编码为gbk
set encoding=chinese "当前终端输入的编码
set clipboard+=unnamed "与windows共享剪切板
set title
else
set fileencoding=utf-8 "强制将文件编码转为utf8
set encoding=utf-8 "当前终端输入的编码
endif
"set statusline=%f%m%r\ \|\ %Y,%{&fileencoding}\ \|%=\ %l/%L,%c\ \
set statusline=%<%f\ %h%m%r%=%k[%{(&fenc==\"\")?&enc:&fenc}%{(&bomb?\",BOM\":\"\")}]\ %-14.(%l,%c%V%)\ %P
"设置在状态行显示的信息如下:
"%f 当前的文件名
"%F 当前全路径文件名
"%m 当前文件修改状态
"%r 当前文件是否只读
"%Y 当前文件类型
"%{&fileformat} 当前文件编码
"%{&fileencoding} 中文编码
"%b 当前光标处字符的 ASCII 码值
"%B 当前光标处字符的十六进制值
"%l 当前光标行号
"%c 当前光标列号
"%V 当前光标虚拟列号 (根据字符所占字节数计算)
"%p 当前行占总行数的百分比
"%% 百分号
"%L 当前文件总行数
"Cscope插件
set nocscopeverbose "如果找Cscope数据库失败时,不要报错
nmap <leader>f :cs find t <C-R>=expand("<cword>")<CR><CR>
"自动补全
let g:SuperTabRetainCompletionType=2
let g:SuperTabDefaultCompletionType="<C-N>"
"let g:SuperTabDefaultCompletionType="context"
"选择快捷键组
map vi' <Esc>?'<CR>lv/'<CR>h
map vi" <Esc>?"<CR>lv/"<CR>h
map va' <Esc>?'<CR>v/'<CR>
map va" <Esc>?"<CR>v/"<CR>
map vix <Esc>?><CR>lv/<<CR>h
map vi= <ESC>?\s\+\S\+\s*=\s*\S\+<CR>lv/=<CR>/\S<CR>/[\s<>\n]<CR>h
map vi/ <Esc>?\/<CR>l<Esc>v/\/<CR>h
map vt) <ESC>v/)<CR>h
map vt' <ESC>v/'<CR>h
map vt" <ESC>v/"<CR>h
map vt; <ESC>v/;<CR>h
map vt, <ESC>v/,<CR>h
map vt} <ESC>v/}<CR>h
" 在插入模式下使用光标移动指令 'C'代表Ctrl键
" 需要修改xshell的keyboard配置Backspace为ASCII 127
inoremap <C-h> <Left>
inoremap <C-j> <Down>
inoremap <C-k> <Up>
inoremap <C-l> <Right>
"用q呼起project插件
nmap <silent> q <Plug>ToggleProject
"调整窗口高度
map <silent> + :res +3<CR>
map <silent> _ :res -3<CR>
"php文件的特殊设置
autocmd FileType php :call PhpKeys()
function! PhpKeys()
"php文件的缩进
" let php_folding=1
" set foldmethod=syntax
set dictionary+=~/.vim/doc/php_funclist.txt
set complete+=k
vmap <silent> <leader>j yoecho json_encode(<ESC>pa, true);<ESC><CR>
vmap <silent> <leader>v yovar_dump (<ESC>pa);<ESC><CR>
endfunction
"多标签,感觉没什么太大用处
if v:version >= 700
:map <C-w>p :tabprevious<cr>
:map <C-w>n :tabnext<cr>
" :imap <C-w>p <ESC>:tabprevious<cr>i
" :imap <C-w>x <ESC>:tabnext<cr>i
:nmap <C-w>t :tabnew<cr>
endif
"第81和101列高亮
if v:version >=703
set cc=81,101
else
hi ColorColumn ctermbg=red
au BufNewFile,BufRead *.* match ColorColumn /\%<82v.\%>81v/
endif
"图形界面设定
if has("gui_running")
if has("win32")
set guifont=Ubuntu\ Mono:h12 "字体字号
autocmd GUIEnter * simalt ~x "windows 下 gvim 启动时最大化
elseif has("mac")
set guifont=Ubuntu\ Mono:h20 "字体字号
set lines=35 "窗口打开时的行数
set columns=129 "窗口打开时的列数
else
set guifont=Ubuntu\ Mono:h12 "字体字号
endif
endif
nmap <Leader>n :noh<cr>
nmap <silent> <leader>t A//writen by LX<ESC>
set pastetoggle=<F12> "F12作为粘贴模式的转换键
"快捷键自动对齐并去掉末尾的空格
nmap <silent> <F7> msgg=G's :w<CR>
"F3 重建cscope数据库
map <silent> <F3> <ESC> :!find ./src -name '*.php' > cscope.files ; cscope -bkq -i cscope.files<CR>
nmap <silent> <leader>g :call MyGrep("normal")<CR>
vmap <silent> <leader>g :call MyGrep("visual")<CR>
set wildignore+=*.log*,*.svn
set wildignore+=*.aux,*.out,*.toc " LaTeX intermediate files
set wildignore+=*.jpg,*.bmp,*.gif " binary images
set wildignore+=*.luac " Lua byte code
set wildignore+=*.o,*.obj,*.exe,*.dll,*.manifest " compiled object files
set wildignore+=*.pyc " Python byte code
set wildignore+=*.spl " compiled spelling word lists
set wildignore+=*.sw? " Vim swap files
function! MyGrep(mode)
if !exists('g:proj_running')
let l:files = '%'
else
let l:files = '**'
endif
if a:mode == "normal"
let l:word=expand("<cword>")
endif
if a:mode == "visual"
let l:word=eval('y')
endif
execute "vimgrep /". l:word ."/j ". l:files
exec 'cw'
endfunction