zoukankan      html  css  js  c++  java
  • VIM 配置

      1 " -----------------   Author: Ruchee
      2 " -----------------    Email: my@ruchee.com
      3 " -----------------  WebSite: http://www.ruchee.com
      4 " -----------------     Date: 2012-03-01
      5 
      6 " Ctrl + K                   --光标移上一行末尾
      7 " Ctrl + H                   --光标移行首
      8 " Ctrl + L                   --光标移行尾
      9 " Ctrl + Z                   --取代ESC模式键 [和Lingos快捷键有冲突]
     10 " Ctrl + S                   --保存文件
     11 " Ctrl + C                   --编译 [支持C/C++、Java]
     12 " Ctrl + R                   --运行 [支持C/C++、Java、Lua、Perl、Python、Ruby]
     13 " Ctrl + ]                   --转到函数定义
     14 " Ctrl + T                   --返回调用函数
     15 " Ctrl + E                   --添加注释 [插入模式] [添加的是C语言的多行注释,所以适用于C/C++/Java等]
     16 " Ctrl + E                   --一步加载语法模板和作者、时间信息 [非插入模式]
     17 
     18 " <C-P>                      --单词补全
     19 " <C-X><C-L>                 --整行补全
     20 " Tab键                      --插入模式下的全功能语法结构补全 [snipMate插件]
     21 
     22 " wm                         --开启文档浏览窗口
     23 " \ww                        --进入vimWiki模式
     24 
     25 " za                         --打开或关闭当前折叠
     26 " zM                         --关闭所有折叠
     27 " zR                         --打开所有折叠
     28 
     29 " :set syntax=cpp            --手动选择语法高亮 [或 :set filetype=cpp]
     30 
     31 " :%!xxd                     --转储二进制文件,以十六进制形式显示
     32 " :%!xxd -r                  --还原二进制文件
     33 
     34 
     35 
     36 " ---------- 主要插件详细用法说明 ---------------------
     37 
     38 " :Tlist                     --呼出变量和函数列表 [TagList插件]
     39 " :FencView                  --查看文件编码和更改文件编码 [FencView插件]
     40 " :LoadTemplate              --呼出语法模板 [Load_Template插件]
     41 " :AuthorInfoDetect          --添加作者、时间等信息 [NERD_commenter && authorinfo插件]
     42 
     43 " ---------- a.vim [自动切换C/C++同名头文件] ----------
     44 "
     45 " :A                         --切换同名头文件并独占整个屏幕
     46 " :AS                        --切换同名头文件并垂直分屏,头文件在上
     47 " :AV                        --切换同名头文件并水平分割,头文件在左
     48 
     49 " ---------- mark.vim [追踪高亮指定关键字] ------------
     50 "
     51 " \m                         --normal模式下,在想要高亮的单词上面敲击\m即可高亮或取消高亮该单词
     52 " :Mark                      --取消所有高亮
     53 " :Mark abc                  --指定高亮单词 abc 或取消高亮 abc
     54 
     55 " ---------- NERDTree [智能文件浏览器] ----------------
     56 "
     57 " :NERDTree                  --启动NERDTree插件
     58 " o [小写]                   --切换当前文件或目录的打开、关闭状态
     59 " u                          --打开上层目录
     60 " p [小写]                   --返回上层目录
     61 " P [大写]                   --返回根目录
     62 " K                          --转到当前目录第一个节点
     63 " J                          --转到当前目录最后的节点
     64 " m                          --显示文件系统菜单 [增、删、移]
     65 " ?                          --弹出帮助菜单
     66 " q                          --退出该插件
     67 
     68 
     69 
     70 colorscheme elflord           " 灰褐色主题
     71 set guifont=Courier\ New:h10 " 字体 && 字号
     72 set tabstop=4                " 设置tab键的宽度
     73 set shiftwidth=4             " 换行时行间交错使用4个空格
     74 set autoindent               " 自动对齐
     75 set backspace=2              " 设置退格键可用
     76 set cindent shiftwidth=4     " 自动缩进4空格
     77 set smartindent              " 智能自动缩进
     78 set ai!                      " 设置自动缩进
     79 set cindent                     " c/c++风格缩进
     80 set nu!                      " 显示行号
     81 set showmatch                " 显示括号配对情况
     82 set mouse=a                  " 启用鼠标
     83 set ruler                    " 右下角显示光标位置的状态行
     84 set incsearch                " 查找book时,当输入/b时会自动找到
     85 set hlsearch                 " 开启高亮显示结果
     86 set incsearch                " 开启实时搜索功能
     87 set nowrapscan               " 搜索到文件两端时不重新搜索
     88 set nocompatible             " 关闭兼容模式
     89 set vb t_vb=                 " 关闭提示音
     90 "set cursorline               " 突出显示当前行
     91 set hidden                   " 允许在有未保存的修改时切换缓冲区
     92 "set list                    " 显示Tab符,使用一高亮竖线代替
     93 "set listchars=tab:\|\ ,
     94 
     95 
     96 syntax enable                " 打开语法高亮
     97 syntax on                    " 开启文件类型侦测
     98 filetype indent on           " 针对不同的文件类型采用不同的缩进格式
     99 filetype plugin on           " 针对不同的文件类型加载对应的插件
    100 filetype plugin indent on    " 启用自动补全
    101 
    102 
    103 if has("gui_running")
    104     au GUIEnter * simalt ~x  " 窗口启动时自动最大化
    105     "set guioptions-=m       " 隐藏菜单栏
    106     set guioptions-=T        " 隐藏工具栏
    107     "set guioptions-=L       " 隐藏左侧滚动条
    108     "set guioptions-=r       " 隐藏右侧滚动条
    109     "set guioptions-=b       " 隐藏底部滚动条
    110     "set showtabline=0       " 隐藏Tab栏
    111 endif
    112 
    113 set writebackup              " 设置无备份文件
    114 set nobackup
    115 set autochdir                " 设定文件浏览器目录为当前目录
    116 "set nowrap                  " 设置不自动换行
    117 set foldmethod=syntax        " 选择代码折叠类型
    118 set foldlevel=100            " 禁止自动折叠
    119 
    120 set laststatus=2             " 开启状态栏信息
    121 set cmdheight=2              " 命令行的高度,默认为1,这里设为2
    122 
    123 " 每行超过80个的字符用下划线标示
    124 au BufRead,BufNewFile *.asm,*.c,*.cpp,*.java,*.cs,*.sh,*.lua,*.pl,*.pm,*.py,*.rb,*.hs,*.vim 2match Underlined /.\%81v/
    125 
    126 
    127 " 设置编码
    128 set fenc=utf-8
    129 set encoding=utf-8
    130 set fileencoding=utf-8
    131 set fileencodings=utf-8,gbk,cp936,latin-1
    132 " 解决菜单乱码
    133 source $VIMRUNTIME/delmenu.vim
    134 source $VIMRUNTIME/menu.vim
    135 " 解决consle输出乱码
    136 language messages zh_CN.utf-8
    137 
    138 
    139 " ======= 引号 && 括号自动匹配 ======= "
    140 
    141 :inoremap ( ()<ESC>i
    142 
    143 :inoremap ) <c-r>=ClosePair(')')<CR>
    144 
    145 :inoremap { {}<ESC>i
    146 
    147 :inoremap } <c-r>=ClosePair('}')<CR>
    148 
    149 :inoremap [ []<ESC>i
    150 
    151 :inoremap ] <c-r>=ClosePair(']')<CR>
    152 
    153 ":inoremap < <><ESC>i
    154     
    155 ":inoremap > <c-r>=ClosePair('>')<CR>
    156 
    157 :inoremap " ""<ESC>i
    158 
    159 :inoremap ' ''<ESC>i
    160 
    161 :inoremap ` ``<ESC>i
    162 
    163 function ClosePair(char)
    164     if getline('.')[col('.') - 1] == a:char
    165         return "\<Right>"
    166     else
    167         return a:char
    168     endif
    169 endf
    170 
    171 
    172 
    173 
    174 " Ctrl + K            将光标移到上一行的末尾
    175 imap  <ESC>kA
    176 
    177 " Ctrl + L            将光标移到行尾
    178 imap  <ESC>A
    179 
    180 " Ctrl + H            将光标移到行首
    181 imap  <ESC>I
    182 
    183 " Ctrl + Z            取代ESC模式键
    184 :inoremap  <ESC>
    185 
    186 " Ctrl + S            保存文件
    187 map  <ESC>:w<CR>
    188 imap  <ESC>:w<CR>a
    189 vmap  <ESC>:w<CR>
    190 
    191 " Ctrl + E            一步加载语法模板和作者、时间信息 [非插入模式]
    192 map  <ESC>:LoadTemplate<CR><ESC>:AuthorInfoDetect<CR><ESC>Gi
    193 vmap  <ESC>:LoadTemplate<CR><ESC>:AuthorInfoDetect<CR><ESC>Gi
    194 
    195 " Ctrl + E            在当前行添加C/C++/Java语言的多行注释 [插入模式]
    196 imap  /*  */<ESC>hhi
    197 
    198 
    199 " wm                  开启文件浏览窗口,对应插件为WinManager
    200 let g:winManagerWindowLayout='FileExplorer'
    201 nmap wm :WMToggle<cr>
    202 
    203 " MiniBufExplorer     多个文件切换 可使用鼠标双击相应文件名进行切换
    204 let g:miniBufExplMapWindowNavVim=1
    205 let g:miniBufExplMapWindowNavArrows=1
    206 let g:miniBufExplMapCTabSwitchBufs=1
    207 let g:miniBufExplModSelTarget=1
    208 
    209 " :Tlist              调用TagList
    210 let Tlist_Show_One_File=1                    " 只显示当前文件的tags
    211 let Tlist_Exit_OnlyWindow=1                  " 如果Taglist窗口是最后一个窗口则退出Vim
    212 let Tlist_Use_Right_Window=1                 " 在右侧窗口中显示
    213 
    214 " tags                函数跳转、代码补全的关键所在,请替换为自己的路径,并去掉最前面的注释符
    215 "set tags+=D:\Apps\MinGW\include\tags                 " For C/C++
    216 "set tags+=C:\Develop\Java\src\tags                   " For Java
    217 "set tags+=C:\Develop\Python\Python27\Lib\tags        " For Python 2.x
    218 "set tags+=C:\Develop\Python\Python32\Lib\tags        " For Python 3.x
    219 "set tags+=D:\Apps\SQLite\tags                        " For SQLite
    220 
    221 " TxtBrowser          高亮TXT文本文件
    222 au BufRead,BufNewFile *.txt setlocal ft=txt
    223 
    224 " :FencView           查看文件编码和更改文件编码
    225 let g:fencview_autodetect=1
    226 
    227 " :LoadTemplate       根据文件后缀自动加载模板
    228 let g:template_path='D:\Apps\Gvim\vimfiles\template\'
    229 
    230 " :AuthorInfoDetect   自动添加作者、时间等信息,本质是NERD_commenter && authorinfo的结合
    231 let g:vimrc_author='fc.zhong'
    232 let g:vimrc_email='fc.zhong@gmail.com'
    233 let g:vimrc_homepage=''
    234 
    235 
    236 " ======= 编译 && 运行 ======= "
    237 
    238 " 编译C源文件
    239 func! CompileGcc()
    240     exec "w"
    241     let compilecmd="!gcc -Wall -pedantic -std=c99 "
    242     let compileflag="-o %<"
    243     exec compilecmd." % ".compileflag
    244 endfunc
    245 
    246 " 编译C++源文件
    247 func! CompileCpp()
    248     exec "w"
    249     let compilecmd="!g++ -Wall -pedantic -std=c++98 "
    250     let compileflag="-o %<"
    251     exec compilecmd." % ".compileflag
    252 endfunc
    253 
    254 
    255 
    256 
    257 
    258 " 编译Java源文件
    259 func! CompileJava()
    260     exec "w"
    261     exec "!javac %"
    262 endfunc
    263 
    264 " 根据文件类型自动选择相应的编译函数
    265 func! CompileCode()
    266         exec "w"
    267         if &filetype == "c"
    268             exec "call CompileGcc()"
    269         elseif &filetype == "cpp"
    270             exec "call CompileCpp()"
    271         elseif &filetype == "java"
    272             exec "call CompileJava()"
    273         elseif &filetype == "lua"
    274             exec "!lua %<.lua"
    275         elseif &filetype == "perl"
    276             exec "!perl %<.pl"
    277         elseif &filetype == "python"
    278             exec "!python %<.py"
    279         elseif &filetype == "ruby"
    280             exec "!ruby %<.rb"
    281         endif
    282 endfunc
    283 
    284 " 运行可执行文件
    285 func! RunResult()
    286         exec "w"
    287         if &filetype == "c"
    288             exec "! %<"
    289         elseif &filetype == "cpp"
    290             exec "! %<"
    291         elseif &filetype == "java"
    292             exec "!java %<"
    293         elseif &filetype == "lua"
    294             exec "!lua %<.lua"
    295         elseif &filetype == "perl"
    296             exec "!perl %<.pl"
    297         elseif &filetype == "python"
    298             exec "!python %<.py"
    299         elseif &filetype == "ruby"
    300             exec "!ruby %<.rb"
    301         endif
    302 endfunc
    303 
    304 " <F6> 一键保存、编译
    305 map <F6> :call CompileCode()<CR>
    306 imap <F6> <ESC>:call CompileCode()<CR>
    307 vmap <F6> <ESC>:call CompileCode()<CR>
    308 
    309 " <F5> 一键保存、运行
    310 map <F5> :call RunResult()<CR>
    311 imap <F5> <ESC>:call RunResult()<CR>
    312 vmap <F5> <ESC>:call RunResult()<CR>
    313 
    314 
    315 " ======= VimWiki ======= "
    316 
    317 " 设置编码
    318 let g:vimwiki_w32_dir_enc = 'utf-8'
    319 
    320 " 使用鼠标映射
    321 let g:vimwiki_use_mouse = 1
    322 
    323 " 不要将驼峰式词组作为 Wiki 词条
    324 let g:vimwiki_camel_case = 0
    325 
    326 " 声明可以在wiki里面使用的HTML标签
    327 let g:vimwiki_valid_html_tags='b,i,s,u,sub,sup,kbd,br,hr,div,del,code,red,center,left,right,h4,h5,h6,pre'
    328 
    329 let g:vimwiki_list = [{
    330 \ 'path': 'D:/Apps/Gvim/mysite/wiki',
    331 \ 'path_html': 'D:/Apps/Gvim/mysite/html/',
    332 \ 'html_header': 'D:/Apps/Gvim/mysite/template/header.html',
    333 \ 'html_footer': 'D:/Apps/Gvim/mysite/template/footer.html',
    334 \ 'auto_export': 1,
    335 \ 'nested_syntaxes': {'Asm': 'asm', 'C': 'c', 'C++': 'cpp','Java': 'java', 'Haskell': 'haskell', 'Lua': 'lua', 'Perl': 'perl', 'Python': 'python', 'PHP': 'php', 'HTML': 'html', 'XML': 'xml', 'JavaScript': 'javascript', 'Bash': 'sh', 'Vim': 'vim', 'Make': 'make', 'Automake': 'AUTOMAKE'},}]
  • 相关阅读:
    NBUT 1120 Reimu's Teleport (线段树)
    NBUT 1119 Patchouli's Books (STL应用)
    NBUT 1118 Marisa's Affair (排序统计,水)
    NBUT 1117 Kotiya's Incantation(字符输入处理)
    NBUT 1115 Cirno's Trick (水)
    NBUT 1114 Alice's Puppets(排序统计,水)
    188 Best Time to Buy and Sell Stock IV 买卖股票的最佳时机 IV
    187 Repeated DNA Sequences 重复的DNA序列
    179 Largest Number 把数组排成最大的数
    174 Dungeon Game 地下城游戏
  • 原文地址:https://www.cnblogs.com/space/p/2792294.html
Copyright © 2011-2022 走看看