diff options
Diffstat (limited to 'vim/vimscript.vim')
-rw-r--r-- | vim/vimscript.vim | 295 |
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 | |||
21 | set nocompatible " be iMproved, required | ||
22 | filetype off " required | ||
23 | |||
24 | set rtp+=~/.vim/bundle/Vundle.vim | ||
25 | |||
26 | call vundle#begin() | ||
27 | " let Vundle manage Vundle, required | ||
28 | Plugin "gmarik/Vundle.vim" | ||
29 | " plugin on GitHub repo 添加github上的vimn插件,形式非常简单 | ||
30 | Plugin "tpope/vim-fugitive" | ||
31 | "语法检查 | ||
32 | Plugin "scrooloose/syntastic" | ||
33 | "让 syntastic忽略 python 文件 | ||
34 | let g:syntastic_ignore_files=[".*\.py$"] | ||
35 | "补全 python | ||
36 | Plugin "davidhalter/jedi" | ||
37 | Plugin "rstacruz/sparkup", {"rtp": "vim/"} | ||
38 | " YouCompleteMe插件,很好的智能提示,基本达到 IDE 级别 | ||
39 | Plugin "Valloric/YouCompleteMe" | ||
40 | |||
41 | call vundle#end() " required | ||
42 | |||
43 | filetype plugin indent on " required | ||
44 | " To ignore plugin indent changes, instead use: | ||
45 | "filetype plugin on | ||
46 | " YouCompleteMe 通过这个cm_global_ycm_extra_conf来获得补全规则,可以如下指定,也可以每次放置在工作目录 | ||
47 | let g:ycm_global_ycm_extra_conf=‘~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py‘ | ||
48 | "让YouCompleteMe同时利用原来的ctags | ||
49 | let g:ycm_collect_identifiers_from_tag_files = 1 | ||
50 | |||
51 | " """"""""""""" By ma6174 """"""""""""""""""""" | ||
52 | " 显示相关 | ||
53 | """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
54 | autocmd InsertLeave * se nocul " 用浅色高亮当前行 | ||
55 | autocmd InsertEnter * se cul " 用浅色高亮当前行 | ||
56 | "set ruler " 显示标尺 | ||
57 | set showcmd " 输入的命令显示出来,看的清楚些 | ||
58 | "set whichwrap+=<,>,h,l " 允许backspace和光标键跨越行边界(不建议) | ||
59 | "set scrolloff=3 " 光标移动到buffer的顶部和底部时保持3行距离 | ||
60 | set novisualbell " 不要闪烁(不明白) | ||
61 | "set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} "状态行显示的内容 | ||
62 | set laststatus=2 " 启动显示状态行(1),总是显示状态行(2) | ||
63 | "set foldenable " 允许折叠 | ||
64 | "set foldmethod=manual " 手动折叠 | ||
65 | "set background=dark "背景使用黑色 | ||
66 | " 显示中文帮助 | ||
67 | if version >= 603 | ||
68 | set helplang=cn | ||
69 | set encoding=utf-8 | ||
70 | endif | ||
71 | |||
72 | set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936 | ||
73 | set termencoding=utf-8 | ||
74 | set encoding=utf-8 | ||
75 | set fileencodings=ucs-bom,utf-8,cp936 | ||
76 | set 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 | "比较文件 | ||
89 | nnoremap <C-F2> :vert diffsplit | ||
90 | |||
91 | "列出当前目录文件 | ||
92 | map <F3> :tabnew .<CR> | ||
93 | |||
94 | "打开树状文件目录 | ||
95 | map <C-F3> \be | ||
96 | |||
97 | "C,C++ 按F5编译运行 | ||
98 | map <F5> :call CompileRunGcc()<CR> | ||
99 | |||
100 | func! 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 | ||
115 | endfunc | ||
116 | |||
117 | "C,C++的调试 | ||
118 | |||
119 | map <F8> :call Rungdb()<CR> | ||
120 | |||
121 | func! Rungdb() | ||
122 | exec "w" | ||
123 | exec "!g++ % -g -o %<" | ||
124 | exec "!gdb ./%<" | ||
125 | endfunc | ||
126 | |||
127 | """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
128 | |||
129 | ""实用设置 | ||
130 | |||
131 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
132 | |||
133 | " 设置当文件被改动时自动载入 | ||
134 | set autoread | ||
135 | |||
136 | " quickfix模式 | ||
137 | autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr> | ||
138 | |||
139 | "代码补全 | ||
140 | set completeopt=preview,menu | ||
141 | |||
142 | "允许插件 | ||
143 | filetype plugin on | ||
144 | |||
145 | "共享剪贴板 | ||
146 | set clipboard+=unnamed | ||
147 | |||
148 | "从不备份 | ||
149 | "set nobackup | ||
150 | |||
151 | "make 运行 | ||
152 | :set makeprg=g++\ -Wall\ \ % | ||
153 | |||
154 | "自动保存 | ||
155 | set autowrite | ||
156 | |||
157 | set ruler " 打开状态栏标尺 | ||
158 | set cursorline " 突出显示当前行 | ||
159 | set magic " 设置魔术 | ||
160 | set guioptions-=T " 隐藏工具栏 | ||
161 | set 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 | " 去掉输入错误的提示声音 | ||
171 | set noeb | ||
172 | |||
173 | " 在处理未保存或只读文件的时候,弹出确认 | ||
174 | set confirm | ||
175 | |||
176 | " 自动缩进 | ||
177 | "set autoindent | ||
178 | "set cindent | ||
179 | |||
180 | " 在行和段开始处使用制表符 | ||
181 | set smarttab | ||
182 | |||
183 | " 历史记录数 | ||
184 | set history=1000 | ||
185 | |||
186 | "禁止生成临时文件 | ||
187 | set noswapfile | ||
188 | |||
189 | "搜索忽略大小写 | ||
190 | set ignorecase | ||
191 | |||
192 | "搜索逐字符高亮 | ||
193 | set hlsearch | ||
194 | set incsearch | ||
195 | |||
196 | "行内替换 | ||
197 | set gdefault | ||
198 | |||
199 | "语言设置 | ||
200 | set langmenu=zh_CN.UTF-8 | ||
201 | set 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 | " 总是显示状态行 | ||
208 | set laststatus=2 | ||
209 | |||
210 | " 命令行(在状态行下)的高度,默认为1,这里是2 | ||
211 | set cmdheight=2 | ||
212 | |||
213 | " 带有如下符号的单词不要被换行分割 | ||
214 | set iskeyword+=_,$,@,%,#,- | ||
215 | |||
216 | set selection=exclusive | ||
217 | set selectmode=mouse,key | ||
218 | |||
219 | " 通过使用: commands命令,告诉我们文件的哪一行被改变过 | ||
220 | set report=0 | ||
221 | |||
222 | " 光标移动到buffer的顶部和底部时保持3行距离 | ||
223 | set scrolloff=3 | ||
224 | |||
225 | " 为C程序提供自动缩进 | ||
226 | |||
227 | " 高亮显示普通txt文件(需要txt.vim脚本) | ||
228 | |||
229 | au 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 | |||
243 | function! ClosePair(char) | ||
244 | if getline(‘.‘)[col(‘.‘) - 1] == a:char | ||
245 | return "\<Right>" | ||
246 | else | ||
247 | return a:char | ||
248 | endif | ||
249 | endfunction | ||
250 | |||
251 | set completeopt=longest,menu | ||
252 | |||
253 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
254 | |||
255 | " CTags的设定 | ||
256 | |||
257 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
258 | |||
259 | let Tlist_Sort_Type = "name" " 按照名称排序 | ||
260 | let Tlist_Use_Right_Window = 1 " 在右侧显示窗口 | ||
261 | let Tlist_Compart_Format = 1 " 压缩方式 | ||
262 | let Tlist_Exist_OnlyWindow = 1 " 如果只有一个buffer,kill窗口也kill掉buffer | ||
263 | let Tlist_File_Fold_Auto_Close = 0 " 不要关闭其他文件的tags | ||
264 | let Tlist_Enable_Fold_Column = 0 " 不要显示折叠树 | ||
265 | autocmd 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 | ||
269 | set tags=tags | ||
270 | "set autochdir | ||
271 | |||
272 | """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
273 | |||
274 | "其他东东 | ||
275 | |||
276 | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
277 | |||
278 | "默认打开Taglist | ||
279 | let Tlist_Auto_Open=1 | ||
280 | |||
281 | """""""""""""""""""""""""""""" | ||
282 | |||
283 | " Tag list (ctags) | ||
284 | |||
285 | """""""""""""""""""""""""""""""" | ||
286 | |||
287 | let Tlist_Ctags_Cmd = ‘/usr/bin/ctags‘ | ||
288 | let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的 | ||
289 | let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim | ||
290 | let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口 | ||
291 | " minibufexpl插件的一般设置 | ||
292 | let g:miniBufExplMapWindowNavVim = 1 | ||
293 | let g:miniBufExplMapWindowNavArrows = 1 | ||
294 | let g:miniBufExplMapCTabSwitchBufs = 1 | ||
295 | let g:miniBufExplModSelTarget = 1 | ||