aboutsummaryrefslogtreecommitdiffstats
path: root/vim/vimscript.vim
diff options
context:
space:
mode:
Diffstat (limited to 'vim/vimscript.vim')
-rw-r--r--vim/vimscript.vim295
1 files changed, 0 insertions, 295 deletions
diff --git a/vim/vimscript.vim b/vim/vimscript.vim
deleted file mode 100644
index 001b060..0000000
--- a/vim/vimscript.vim
+++ /dev/null
@@ -1,295 +0,0 @@
1" 主要参考 http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html
2" 额外添加了 ctags, YouCompleteMe等
3" 主要特点
4
5"1.按F5可以直接编译并执行C、C++、java代码以及执行shell脚本,按“F8”可进行C、C++代码的调试
6"2.自动插入文件头 ,新建C、C++源文件时自动插入表头:包括文件名、作者、联系方式、建立时间等,读者可根据需求自行更改
7"3.映射“Ctrl + A”为全选并复制快捷键,方便复制代码
8"4.按“F2”可以直接消除代码中的空行
9"5.“F3”可列出当前目录文件,打开树状文件目录
10"6. 支持鼠标选择、方向键移动
11"7. 代码高亮,自动缩进,显示行号,显示状态行
12"8. 按“Ctrl + P”可自动补全
13"9. []、{}、()、""、‘ ‘等都自动补全 --- 如果需要{}做函数形式的补全(右括号自动换行,加一个空行,光标定位到空行,可以看下面的修改提示)
14"10. 使用YouCompleteMe提供C++的自动补全提示,效果类似 Visual Studio那种,可以解析系统头文件
15
16
17""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
18" """""""""""""" Suzzz """""""""""""""""""""
19"https://github.com/gmarik/Vundle.vim#about
20
21set nocompatible " be iMproved, required
22filetype off " required
23
24set rtp+=~/.vim/bundle/Vundle.vim
25
26call vundle#begin()
27" let Vundle manage Vundle, required
28Plugin "gmarik/Vundle.vim"
29" plugin on GitHub repo 添加github上的vimn插件,形式非常简单
30Plugin "tpope/vim-fugitive"
31"语法检查
32Plugin "scrooloose/syntastic"
33"让 syntastic忽略 python 文件
34let g:syntastic_ignore_files=[".*\.py$"]
35"补全 python
36Plugin "davidhalter/jedi"
37Plugin "rstacruz/sparkup", {"rtp": "vim/"}
38" YouCompleteMe插件,很好的智能提示,基本达到 IDE 级别
39Plugin "Valloric/YouCompleteMe"
40
41call vundle#end() " required
42
43filetype plugin indent on " required
44" To ignore plugin indent changes, instead use:
45"filetype plugin on
46" YouCompleteMe 通过这个cm_global_ycm_extra_conf来获得补全规则,可以如下指定,也可以每次放置在工作目录
47let g:ycm_global_ycm_extra_conf=‘~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py‘
48"让YouCompleteMe同时利用原来的ctags
49let g:ycm_collect_identifiers_from_tag_files = 1
50
51" """"""""""""" By ma6174 """""""""""""""""""""
52" 显示相关
53""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
54autocmd InsertLeave * se nocul " 用浅色高亮当前行
55autocmd InsertEnter * se cul " 用浅色高亮当前行
56"set ruler " 显示标尺
57set showcmd " 输入的命令显示出来,看的清楚些
58"set whichwrap+=<,>,h,l " 允许backspace和光标键跨越行边界(不建议)
59"set scrolloff=3 " 光标移动到buffer的顶部和底部时保持3行距离
60set novisualbell " 不要闪烁(不明白)
61"set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} "状态行显示的内容
62set laststatus=2 " 启动显示状态行(1),总是显示状态行(2)
63"set foldenable " 允许折叠
64"set foldmethod=manual " 手动折叠
65"set background=dark "背景使用黑色
66" 显示中文帮助
67if version >= 603
68 set helplang=cn
69 set encoding=utf-8
70endif
71
72set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
73set termencoding=utf-8
74set encoding=utf-8
75set fileencodings=ucs-bom,utf-8,cp936
76set fileencoding=utf-8
77
78"键盘命令
79
80""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
81
82"map <C-A> ggVGY
83"map! <C-A> <Esc>ggVGY
84"map <F12> gg=G
85""去空行
86"nnoremap <F2> :g/^\s*$/d<CR>
87
88"比较文件
89nnoremap <C-F2> :vert diffsplit
90
91"列出当前目录文件
92map <F3> :tabnew .<CR>
93
94"打开树状文件目录
95map <C-F3> \be
96
97"C,C++ 按F5编译运行
98map <F5> :call CompileRunGcc()<CR>
99
100func! CompileRunGcc()
101
102 exec "w"
103 if &filetype == ‘c‘
104 exec "!g++ % -o %<"
105 exec "! ./%<"
106 elseif &filetype == ‘cpp‘
107 exec "!g++ % -o %<"
108 exec "! ./%<"
109 elseif &filetype == ‘java‘
110 exec "!javac %"
111 exec "!java %<"
112 elseif &filetype == ‘sh‘
113 :!./%
114 endif
115endfunc
116
117"C,C++的调试
118
119map <F8> :call Rungdb()<CR>
120
121func! Rungdb()
122 exec "w"
123 exec "!g++ % -g -o %<"
124 exec "!gdb ./%<"
125endfunc
126
127""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
128
129""实用设置
130
131"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
132
133" 设置当文件被改动时自动载入
134set autoread
135
136" quickfix模式
137autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr>
138
139"代码补全
140set completeopt=preview,menu
141
142"允许插件
143filetype plugin on
144
145"共享剪贴板
146set clipboard+=unnamed
147
148"从不备份
149"set nobackup
150
151"make 运行
152:set makeprg=g++\ -Wall\ \ %
153
154"自动保存
155set autowrite
156
157set ruler " 打开状态栏标尺
158set cursorline " 突出显示当前行
159set magic " 设置魔术
160set guioptions-=T " 隐藏工具栏
161set guioptions-=m " 隐藏菜单栏
162" 设置在状态行显示的信息
163"set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
164
165"set foldcolumn=0
166"set foldmethod=indent
167"set foldlevel=3
168"set foldenable " 开始折叠
169
170" 去掉输入错误的提示声音
171set noeb
172
173" 在处理未保存或只读文件的时候,弹出确认
174set confirm
175
176" 自动缩进
177"set autoindent
178"set cindent
179
180" 在行和段开始处使用制表符
181set smarttab
182
183" 历史记录数
184set history=1000
185
186"禁止生成临时文件
187set noswapfile
188
189"搜索忽略大小写
190set ignorecase
191
192"搜索逐字符高亮
193set hlsearch
194set incsearch
195
196"行内替换
197set gdefault
198
199"语言设置
200set langmenu=zh_CN.UTF-8
201set helplang=cn
202
203" 我的状态行显示的内容(包括文件类型和解码)
204"set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
205"set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
206
207" 总是显示状态行
208set laststatus=2
209
210" 命令行(在状态行下)的高度,默认为1,这里是2
211set cmdheight=2
212
213" 带有如下符号的单词不要被换行分割
214set iskeyword+=_,$,@,%,#,-
215
216set selection=exclusive
217set selectmode=mouse,key
218
219" 通过使用: commands命令,告诉我们文件的哪一行被改变过
220set report=0
221
222" 光标移动到buffer的顶部和底部时保持3行距离
223set scrolloff=3
224
225" 为C程序提供自动缩进
226
227" 高亮显示普通txt文件(需要txt.vim脚本)
228
229au BufRead,BufNewFile * setfiletype txt
230
231"自动补全
232"by Suzzz: 原作者这种设置,输入{会自动补全,并且中间插入一个空行,将光标定位到空行。这对于函数是OK的,但是使用花括号初始化数组、vector时就不方便了。所以改为现在这种。只是补全,然后光标在左右括号中间。
233":inoremap { {<CR>}<ESC>O
234:inoremap ( ()<ESC>i
235:inoremap ) <c-r>=ClosePair(‘)‘)<CR>
236:inoremap { {}<ESC>i
237:inoremap } <c-r>=ClosePair(‘}‘)<CR>
238:inoremap [ []<ESC>i
239:inoremap ] <c-r>=ClosePair(‘]‘)<CR>
240:inoremap " ""<ESC>i
241:inoremap ‘ ‘‘<ESC>i
242
243function! ClosePair(char)
244 if getline(‘.‘)[col(‘.‘) - 1] == a:char
245 return "\<Right>"
246 else
247 return a:char
248 endif
249endfunction
250
251set completeopt=longest,menu
252
253"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
254
255" CTags的设定
256
257"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
258
259let Tlist_Sort_Type = "name" " 按照名称排序
260let Tlist_Use_Right_Window = 1 " 在右侧显示窗口
261let Tlist_Compart_Format = 1 " 压缩方式
262let Tlist_Exist_OnlyWindow = 1 " 如果只有一个buffer,kill窗口也kill掉buffer
263let Tlist_File_Fold_Auto_Close = 0 " 不要关闭其他文件的tags
264let Tlist_Enable_Fold_Column = 0 " 不要显示折叠树
265autocmd FileType java set tags+=D:\tools\java\tags
266"autocmd FileType h,cpp,cc,c set tags+=D:\tools\cpp\tags
267"let Tlist_Show_One_File=1 "不同时显示多个文件的tag,只显示当前文件的
268"设置tags
269set tags=tags
270"set autochdir
271
272""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
273
274"其他东东
275
276"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
277
278"默认打开Taglist
279let Tlist_Auto_Open=1
280
281""""""""""""""""""""""""""""""
282
283" Tag list (ctags)
284
285""""""""""""""""""""""""""""""""
286
287let Tlist_Ctags_Cmd = ‘/usr/bin/ctags‘
288let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的
289let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim
290let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口
291" minibufexpl插件的一般设置
292let g:miniBufExplMapWindowNavVim = 1
293let g:miniBufExplMapWindowNavArrows = 1
294let g:miniBufExplMapCTabSwitchBufs = 1
295let g:miniBufExplModSelTarget = 1