zoukankan      html  css  js  c++  java
  • Vim配置(转)

    1.按F5可以直接编译并执行C、C++、java代码以及执行shell脚本,按“F8”可进行C、C++代码的调试

    2.自动插入文件头 ,新建C、C++源文件时自动插入表头:包括文件名、作者、联系方式、建立时间等,读者可根据需求自行更改

    3.映射“Ctrl + A”为全选并复制快捷键,方便复制代码

    4.按“F2”可以直接消除代码中的空行

    5.“F3”可列出当前目录文件,打开树状文件目录

    6. 支持鼠标选择、方向键移动

    7. 代码高亮,自动缩进,显示行号,显示状态行

    8.按“Ctrl + P”可自动补全

    9.[]、{}、()、""、' '等都自动补全

     

      1 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
      2 
      3 " 显示相关  
      4 
      5 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
      6 
      7 "set shortmess=atI   " 启动的时候不显示那个援助乌干达儿童的提示  
      8 
      9 "winpos 5 5          " 设定窗口位置  
     10 
     11 "set lines=40 columns=155    " 设定窗口大小  
     12 
     13 "set nu              " 显示行号  
     14 
     15 set go=             " 不要图形按钮  
     16 
     17 "color asmanian2     " 设置背景主题  
     18 
     19 set guifont=Courier_New:h10:cANSI   " 设置字体  
     20 
     21 "syntax on           " 语法高亮  
     22 
     23 autocmd InsertLeave * se nocul  " 用浅色高亮当前行  
     24 
     25 autocmd InsertEnter * se cul    " 用浅色高亮当前行  
     26 
     27 "set ruler           " 显示标尺  
     28 
     29 set showcmd         " 输入的命令显示出来,看的清楚些  
     30 
     31 "set cmdheight=1     " 命令行(在状态行下)的高度,设置为1  
     32 
     33 "set whichwrap+=<,>,h,l   " 允许backspace和光标键跨越行边界(不建议)  
     34 
     35 "set scrolloff=3     " 光标移动到buffer的顶部和底部时保持3行距离  
     36 
     37 set novisualbell    " 不要闪烁(不明白)  
     38 
     39 set statusline=%F%m%r%h%w [FORMAT=%{&ff}] [TYPE=%Y] [POS=%l,%v][%p%%] %{strftime("%d/%m/%y - %H:%M")}   "状态行显示的内容  
     40 
     41 set laststatus=1    " 启动显示状态行(1),总是显示状态行(2)  
     42 
     43 set foldenable      " 允许折叠  
     44 
     45 set foldmethod=manual   " 手动折叠  
     46 
     47 "set background=dark "背景使用黑色 
     48 
     49 set nocompatible  "去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限  
     50 
     51 " 显示中文帮助
     52 
     53 if version >= 603
     54 
     55     set helplang=cn
     56 
     57     set encoding=utf-8
     58 
     59 endif
     60 
     61 " 设置配色方案
     62 
     63 "colorscheme murphy
     64 
     65 "字体 
     66 
     67 "if (has("gui_running")) 
     68 
     69 "   set guifont=Bitstream Vera Sans Mono 10 
     70 
     71 "endif 
     72 
     73 
     74  
     75 set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
     76 
     77 set termencoding=utf-8
     78 
     79 set encoding=utf-8
     80 
     81 set fileencodings=ucs-bom,utf-8,cp936
     82 
     83 set fileencoding=utf-8
     84 
     85 
     86 
     87 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
     88 
     89 """""新文件标题""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
     90 
     91 "新建.c,.h,.sh,.java文件,自动插入文件头 
     92 
     93 autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()" 
     94 
     95 ""定义函数SetTitle,自动插入文件头 
     96 
     97 func SetTitle() 
     98 
     99     "如果文件类型为.sh文件 
    100 
    101     if &filetype == 'sh' 
    102 
    103         call setline(1,"#########################################################################") 
    104 
    105         call append(line("."), "# File Name: ".expand("%")) 
    106 
    107         call append(line(".")+1, "# Author: Roc") 
    108 
    109         call append(line(".")+2, "# Mail: 20112022@cqu.edu.cn") 
    110 
    111         call append(line(".")+3, "# Created Time: ".strftime("%c")) 
    112 
    113         call append(line(".")+4, "#########################################################################") 
    114 
    115         call append(line(".")+5, "#!/bin/bash") 
    116 
    117         call append(line(".")+6, "") 
    118 
    119     else 
    120 
    121         call setline(1, "/*************************************************************************") 
    122 
    123         call append(line("."), "    > File Name: ".expand("%")) 
    124 
    125         call append(line(".")+1, "    > Author: Roc") 
    126 
    127         call append(line(".")+2, "    > Mail: 20112022@cqu.edu.cn ") 
    128 
    129         call append(line(".")+3, "    > Created Time: ".strftime("%c")) 
    130 
    131         call append(line(".")+4, " ************************************************************************/") 
    132 
    133         call append(line(".")+5, "")
    134 
    135     endif
    136 
    137     if &filetype == 'cpp'
    138 
    139         call append(line(".")+6, "#include<iostream>")
    140 
    141         call append(line(".")+7, "using namespace std;")
    142 
    143         call append(line(".")+8, "")
    144 
    145     endif
    146 
    147     if &filetype == 'c'
    148 
    149         call append(line(".")+6, "#include<stdio.h>")
    150 
    151         call append(line(".")+7, "")
    152 
    153     endif
    154 
    155     "新建文件后,自动定位到文件末尾
    156 
    157     autocmd BufNewFile * normal G
    158 
    159 endfunc 
    160 
    161 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    162 
    163 "键盘命令
    164 
    165 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    166 
    167 
    168 
    169 nmap <leader>w :w!<cr>
    170 
    171 nmap <leader>f :find<cr>
    172 
    173 
    174 
    175 " 映射全选+复制 ctrl+a
    176 
    177 map <C-A> ggVGY
    178 
    179 map! <C-A> <Esc>ggVGY
    180 
    181 map <F12> gg=G
    182 
    183 " 选中状态下 Ctrl+c 复制
    184 
    185 vmap <C-c> "+y
    186 
    187 "去空行  
    188 
    189 nnoremap <F2> :g/^s*$/d<CR> 
    190 
    191 "比较文件  
    192 
    193 nnoremap <C-F2> :vert diffsplit 
    194 
    195 "新建标签  
    196 
    197 map <M-F2> :tabnew<CR>  
    198 
    199 "列出当前目录文件  
    200 
    201 map <F3> :tabnew .<CR>  
    202 
    203 "打开树状文件目录  
    204 
    205 map <C-F3> e  
    206 
    207 "C,C++ 按F5编译运行
    208 
    209 map <F5> :call CompileRunGcc()<CR>
    210 
    211 func! CompileRunGcc()
    212 
    213     exec "w"
    214 
    215     if &filetype == 'c'
    216 
    217         exec "!g++ % -o %<"
    218 
    219         exec "! ./%<"
    220 
    221     elseif &filetype == 'cpp'
    222 
    223         exec "!g++ % -o %<"
    224 
    225         exec "! ./%<"
    226 
    227     elseif &filetype == 'java' 
    228 
    229         exec "!javac %" 
    230 
    231         exec "!java %<"
    232 
    233     elseif &filetype == 'sh'
    234 
    235         :!./%
    236 
    237     endif
    238 
    239 endfunc
    240 
    241 "C,C++的调试
    242 
    243 map <F8> :call Rungdb()<CR>
    244 
    245 func! Rungdb()
    246 
    247     exec "w"
    248 
    249     exec "!g++ % -g -o %<"
    250 
    251     exec "!gdb ./%<"
    252 
    253 endfunc
    254 
    255 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    256 
    257 ""实用设置
    258 
    259 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    260 
    261 " 设置当文件被改动时自动载入
    262 
    263 set autoread
    264 
    265 " quickfix模式
    266 
    267 autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr>
    268 
    269 "代码补全 
    270 
    271 set completeopt=preview,menu 
    272 
    273 "允许插件  
    274 
    275 filetype plugin on
    276 
    277 "共享剪贴板  
    278 
    279 set clipboard+=unnamed 
    280 
    281 "从不备份  
    282 
    283 set nobackup
    284 
    285 "make 运行
    286 
    287 :set makeprg=g++ -Wall  %
    288 
    289 "自动保存
    290 
    291 set autowrite
    292 
    293 set ruler                   " 打开状态栏标尺
    294 
    295 set cursorline              " 突出显示当前行
    296 
    297 set magic                   " 设置魔术
    298 
    299 set guioptions-=T           " 隐藏工具栏
    300 
    301 set guioptions-=m           " 隐藏菜单栏
    302 
    303 "set statusline= %<%F[%1*%M%*%n%R%H]%= %y %0(%{&fileformat} %{&encoding} %c:%l/%L%)
    304 
    305 " 设置在状态行显示的信息
    306 
    307 set foldcolumn=0
    308 
    309 set foldmethod=indent 
    310 
    311 set foldlevel=3 
    312 
    313 set foldenable              " 开始折叠
    314 
    315 " 不要使用vi的键盘模式,而是vim自己的
    316 
    317 set nocompatible
    318 
    319 " 语法高亮
    320 
    321 set syntax=on
    322 
    323 " 去掉输入错误的提示声音
    324 
    325 set noeb
    326 
    327 " 在处理未保存或只读文件的时候,弹出确认
    328 
    329 set confirm
    330 
    331 " 自动缩进
    332 
    333 set autoindent
    334 
    335 set cindent
    336 
    337 " Tab键的宽度
    338 
    339 set tabstop=4
    340 
    341 " 统一缩进为4
    342 
    343 set softtabstop=4
    344 
    345 set shiftwidth=4
    346 
    347 " 不要用空格代替制表符
    348 
    349 set noexpandtab
    350 
    351 " 在行和段开始处使用制表符
    352 
    353 set smarttab
    354 
    355 " 显示行号
    356 
    357 set number
    358 
    359 " 历史记录数
    360 
    361 set history=1000
    362 
    363 "禁止生成临时文件
    364 
    365 set nobackup
    366 
    367 set noswapfile
    368 
    369 "搜索忽略大小写
    370 
    371 set ignorecase
    372 
    373 "搜索逐字符高亮
    374 
    375 set hlsearch
    376 
    377 set incsearch
    378 
    379 "行内替换
    380 
    381 set gdefault
    382 
    383 "编码设置
    384 
    385 set enc=utf-8
    386 
    387 set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
    388 
    389 "语言设置
    390 
    391 set langmenu=zh_CN.UTF-8
    392 
    393 set helplang=cn
    394 
    395 " 我的状态行显示的内容(包括文件类型和解码)
    396 
    397 "set statusline=%F%m%r%h%w [FORMAT=%{&ff}] [TYPE=%Y] [POS=%l,%v][%p%%] %{strftime("%d/%m/%y - %H:%M")}
    398 
    399 "set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
    400 
    401 " 总是显示状态行
    402 
    403 set laststatus=2
    404 
    405 " 命令行(在状态行下)的高度,默认为1,这里是2
    406 
    407 set cmdheight=2
    408 
    409 " 侦测文件类型
    410 
    411 filetype on
    412 
    413 " 载入文件类型插件
    414 
    415 filetype plugin on
    416 
    417 " 为特定文件类型载入相关缩进文件
    418 
    419 filetype indent on
    420 
    421 " 保存全局变量
    422 
    423 set viminfo+=!
    424 
    425 " 带有如下符号的单词不要被换行分割
    426 
    427 set iskeyword+=_,$,@,%,#,-
    428 
    429 " 字符间插入的像素行数目
    430 
    431 set linespace=0
    432 
    433 " 增强模式中的命令行自动完成操作
    434 
    435 set wildmenu
    436 
    437 " 使回格键(backspace)正常处理indent, eol, start等
    438 
    439 set backspace=2
    440 
    441 " 允许backspace和光标键跨越行边界
    442 
    443 set whichwrap+=<,>,h,l
    444 
    445 " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
    446 
    447 set mouse=a
    448 
    449 set selection=exclusive
    450 
    451 set selectmode=mouse,key
    452 
    453 " 通过使用: commands命令,告诉我们文件的哪一行被改变过
    454 
    455 set report=0
    456 
    457 " 在被分割的窗口间显示空白,便于阅读
    458 
    459 set fillchars=vert: ,stl: ,stlnc:
    460 
    461 " 高亮显示匹配的括号
    462 
    463 set showmatch
    464 
    465 " 匹配括号高亮的时间(单位是十分之一秒)
    466 
    467 set matchtime=1
    468 
    469 " 光标移动到buffer的顶部和底部时保持3行距离
    470 
    471 set scrolloff=3
    472 
    473 " 为C程序提供自动缩进
    474 
    475 set smartindent
    476 
    477 " 高亮显示普通txt文件(需要txt.vim脚本)
    478 
    479 au BufRead,BufNewFile *  setfiletype txt
    480 
    481 "自动补全
    482 
    483 :inoremap ( ()<ESC>i
    484 
    485 :inoremap ) <c-r>=ClosePair(')')<CR>
    486 
    487 :inoremap { {<CR>}<ESC>O
    488 
    489 :inoremap } <c-r>=ClosePair('}')<CR>
    490 
    491 :inoremap [ []<ESC>i
    492 
    493 :inoremap ] <c-r>=ClosePair(']')<CR>
    494 
    495 :inoremap " ""<ESC>i
    496 
    497 :inoremap ' ''<ESC>i
    498 
    499 function! ClosePair(char)
    500 
    501     if getline('.')[col('.') - 1] == a:char
    502 
    503         return "<Right>"
    504 
    505     else
    506 
    507         return a:char
    508 
    509     endif
    510 
    511 endfunction
    512 
    513 filetype plugin indent on 
    514 
    515 "打开文件类型检测, 加了这句才可以用智能补全
    516 
    517 set completeopt=longest,menu
    518 
    519 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    520 
    521 " CTags的设定  
    522 
    523 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    524 
    525 let Tlist_Sort_Type = "name"    " 按照名称排序  
    526 
    527 let Tlist_Use_Right_Window = 1  " 在右侧显示窗口  
    528 
    529 let Tlist_Compart_Format = 1    " 压缩方式  
    530 
    531 let Tlist_Exist_OnlyWindow = 1  " 如果只有一个buffer,kill窗口也kill掉buffer  
    532 
    533 let Tlist_File_Fold_Auto_Close = 0  " 不要关闭其他文件的tags  
    534 
    535 let Tlist_Enable_Fold_Column = 0    " 不要显示折叠树  
    536 
    537 autocmd FileType java set tags+=D:	oolsjava	ags  
    538 
    539 "autocmd FileType h,cpp,cc,c set tags+=D:	oolscpp	ags  
    540 
    541 "let Tlist_Show_One_File=1            "不同时显示多个文件的tag,只显示当前文件的
    542 
    543 "设置tags  
    544 
    545 set tags=tags  
    546 
    547 "set autochdir 
    548 
    549 
    550 
    551 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    552 
    553 "其他东东
    554 
    555 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    556 
    557 "默认打开Taglist 
    558 
    559 let Tlist_Auto_Open=1 
    560 
    561 """""""""""""""""""""""""""""" 
    562 
    563 " Tag list (ctags) 
    564 
    565 """""""""""""""""""""""""""""""" 
    566 
    567 let Tlist_Ctags_Cmd = '/usr/bin/ctags' 
    568 
    569 let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的 
    570 
    571 let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim 
    572 
    573 let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口
    574 
    575 " minibufexpl插件的一般设置
    576 
    577 let g:miniBufExplMapWindowNavVim = 1
    578 
    579 let g:miniBufExplMapWindowNavArrows = 1
    580 
    581 let g:miniBufExplMapCTabSwitchBufs = 1
    582 let g:miniBufExplModSelTarget = 1
  • 相关阅读:
    单片机触摸屏校准
    C中的预编译宏定义
    Android之网络摄像头
    曾经的UCOSii
    关于ST-Link下载STM32程序的使用
    关于IAR开发STM32配置
    学习C#(一)
    ESP8266使用详解--基于Lua脚本语言
    (五)Lua脚本语言入门
    (四)Lua脚本语言入门(数组遍历)
  • 原文地址:https://www.cnblogs.com/cpsmile/p/4466264.html
Copyright © 2011-2022 走看看