存档。

  1. " =============================================================================
  2. " << 判断操作系统是 Windows 还是 Linux 和判断是终端还是 Gvim >>
  3. " =============================================================================
  4.  
  5. " -----------------------------------------------------------------------------
  6. " < 判断操作系统是否是 Windows 还是 Linux >
  7. " -----------------------------------------------------------------------------
  8. if(has("win32") || has("win64") || has("win95") || has("win16"))
  9. let g:iswindows = 1
  10. else
  11. let g:iswindows = 0
  12. endif
  13.  
  14. " -----------------------------------------------------------------------------
  15. " < 判断是终端还是 Gvim >
  16. " -----------------------------------------------------------------------------
  17. if has("gui_running")
  18. let g:isGUI = 1
  19. else
  20. let g:isGUI = 0
  21. endif
  22.  
  23. " =============================================================================
  24. " << 以下为软件默认配置 >>
  25. " =============================================================================
  26.  
  27. " -----------------------------------------------------------------------------
  28. " < Windows Gvim 默认配置> 做了一点修改
  29. " -----------------------------------------------------------------------------
  30. if (g:iswindows && g:isGUI)
  31. source $VIMRUNTIME/vimrc_example.vim
  32. source $VIMRUNTIME/mswin.vim
  33. behave mswin
  34. set diffexpr=MyDiff()
  35.  
  36. function MyDiff()
  37. let opt = '-a --binary '
  38. if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
  39. if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
  40. let arg1 = v:fname_in
  41. if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
  42. let arg2 = v:fname_new
  43. if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
  44. let arg3 = v:fname_out
  45. if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
  46. let eq = ''
  47. if $VIMRUNTIME =~ ' '
  48. if &sh =~ '\<cmd'
  49. let cmd = '""' . $VIMRUNTIME . '\diff"'
  50. let eq = '"'
  51. else
  52. let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
  53. endif
  54. else
  55. let cmd = $VIMRUNTIME . '\diff'
  56. endif
  57. silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
  58. endfunction
  59. endif
  60.  
  61. " -----------------------------------------------------------------------------
  62. " < Linux Gvim/Vim 默认配置> 做了一点修改
  63. " -----------------------------------------------------------------------------
  64. if !g:iswindows
  65. set hlsearch "高亮搜索
  66. set incsearch "在输入要搜索的文字时,实时匹配
  67.  
  68. " Uncomment the following to have Vim jump to the last position when
  69. " reopening a file
  70. if has("autocmd")
  71. au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
  72. endif
  73.  
  74. if g:isGUI
  75. " Source a global configuration file if available
  76. if filereadable("/etc/vim/gvimrc.local")
  77. source /etc/vim/gvimrc.local
  78. endif
  79. else
  80. " This line should not be removed as it ensures that various options are
  81. " properly set to work with the Vim-related packages available in Debian.
  82. runtime! debian.vim
  83.  
  84. " Vim5 and later versions support syntax highlighting. Uncommenting the next
  85. " line enables syntax highlighting by default.
  86. if has("syntax")
  87. syntax on
  88. endif
  89.  
  90. set mouse=a " 在任何模式下启用鼠标
  91. set t_Co=256 " 在终端启用256色
  92. set backspace=2 " 设置退格键可用
  93.  
  94. " Source a global configuration file if available
  95. if filereadable("/etc/vim/vimrc.local")
  96. source /etc/vim/vimrc.local
  97. endif
  98. endif
  99. endif
  100.  
  101. " =============================================================================
  102. " << 以下为用户自定义配置 >>
  103. " =============================================================================
  104.  
  105. " -----------------------------------------------------------------------------
  106. " < Vundle 插件管理工具配置 >
  107. " -----------------------------------------------------------------------------
  108. " 用于更方便的管理vim插件,具体用法参考 :h vundle 帮助
  109. " 安装方法为在终端输入如下命令
  110. " git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
  111.  
  112. set nocompatible "禁用 Vi 兼容模式
  113. filetype off "禁用文件类型侦测
  114.  
  115. if !g:iswindows
  116. set rtp+=~/.vim/bundle/vundle/
  117. call vundle#rc()
  118. else
  119. set rtp+=$VIM/vimfiles/bundle/vundle/
  120. call vundle#rc('$VIM/vimfiles/bundle/')
  121. endif
  122.  
  123. " 使用Vundle来管理Vundle,这个必须要有。
  124. Bundle 'gmarik/vundle'
  125.  
  126. " 以下为要安装或更新的插件,不同仓库都有(具体书写规范请参考帮助)
  127. Bundle 'a.vim'
  128. Bundle 'Align'
  129. Bundle 'jiangmiao/auto-pairs'
  130. Bundle 'bufexplorer.zip'
  131. Bundle 'ccvext.vim'
  132. Bundle 'cSyntaxAfter'
  133. Bundle 'Yggdroot/indentLine'
  134. Bundle 'breestealth/Mark-Karkat'
  135. " Bundle 'minibufexpl.vim'
  136. " Bundle 'fholgado/minibufexpl.vim' "这个上的6.4.4版本与 Vundle 插件有一些冲突
  137. Bundle 'Shougo/neocomplcache.vim'
  138. Bundle 'scrooloose/nerdcommenter'
  139. Bundle 'scrooloose/nerdtree'
  140. Bundle 'FromtonRouge/OmniCppComplete'
  141. Bundle 'Lokaltog/vim-powerline'
  142. Bundle 'repeat.vim'
  143. Bundle 'msanders/snipmate.vim'
  144. Bundle 'wesleyche/SrcExpl'
  145. " Bundle 'ervandew/supertab'
  146. Bundle 'std_c.zip'
  147. Bundle 'tpope/vim-surround'
  148. Bundle 'scrooloose/syntastic'
  149. Bundle 'majutsushi/tagbar'
  150. Bundle 'netroby/taglist'
  151. Bundle 'TxtBrowser'
  152. " Bundle 'winmanager'
  153. Bundle 'ZoomWin'
  154.  
  155. " -----------------------------------------------------------------------------
  156. " < 编码配置 >
  157. " -----------------------------------------------------------------------------
  158. " 注:使用utf-8格式后,软件与程序源码、文件路径不能有中文,否则报错
  159. set encoding=utf-8 "设置gvim内部编码
  160. set fileencoding=utf-8 "设置当前文件编码
  161. set fileencodings=ucs-bom,utf-8,gbk,cp936,latin-1 "设置支持打开的文件的编码
  162.  
  163. " 文件格式,默认 ffs=dos,unix
  164. set fileformat=unix "设置新文件的<EOL>格式
  165. set fileformats=unix,dos,mac "给出文件的<EOL>格式类型
  166.  
  167. if (g:iswindows && g:isGUI)
  168. "解决菜单乱码
  169. source $VIMRUNTIME/delmenu.vim
  170. source $VIMRUNTIME/menu.vim
  171.  
  172. "解决consle输出乱码
  173. language messages zh_CN.utf-8
  174. endif
  175.  
  176. " -----------------------------------------------------------------------------
  177. " < 编写文件时的配置 >
  178. " -----------------------------------------------------------------------------
  179. filetype on "启用文件类型侦测
  180. filetype plugin on "针对不同的文件类型加载对应的插件
  181. filetype plugin indent on "启用缩进
  182. set smartindent "启用智能对齐方式
  183. set expandtab "将Tab键转换为空格
  184. set tabstop=2 "设置Tab键的宽度
  185. set shiftwidth=2 "换行时自动缩进4个空格
  186. set smarttab "指定按一次backspace就删除shiftwidth宽度的空格
  187. set foldenable "启用折叠
  188. set foldmethod=indent "indent 折叠方式
  189. " set foldmethod=marker "marker 折叠方式
  190.  
  191. " 用空格键来开关折叠
  192. nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>
  193.  
  194. " 当文件在外部被修改,自动更新该文件
  195. set autoread
  196.  
  197. " 常规模式下输入 cS 清除行尾空格
  198. nmap cS :%s/\s\+$//g<cr>:noh<cr>
  199.  
  200. " 常规模式下输入 cM 清除行尾 ^M 符号
  201. nmap cM :%s/\r$//g<cr>:noh<cr>
  202.  
  203. set ignorecase "搜索模式里忽略大小写
  204. set smartcase "如果搜索模式包含大写字符,不使用 'ignorecase' 选项,只有在输入搜索模式并且打开 'ignorecase' 选项时才会使用
  205. " set noincsearch "在输入要搜索的文字时,取消实时匹配
  206.  
  207. " Ctrl + K 插入模式下光标向上移动
  208. imap <c-k> <Up>
  209.  
  210. " Ctrl + J 插入模式下光标向下移动
  211. imap <c-j> <Down>
  212.  
  213. " Ctrl + H 插入模式下光标向左移动
  214. imap <c-h> <Left>
  215.  
  216. " Ctrl + L 插入模式下光标向右移动
  217. imap <c-l> <Right>
  218.  
  219. " 每行超过80个的字符用下划线标示
  220. "au BufWinEnter * let w:m2=matchadd('Underlined', '\%>' . 80 . 'v.\+', -1)
  221.  
  222. " -----------------------------------------------------------------------------
  223. " < 界面配置 >
  224. " -----------------------------------------------------------------------------
  225. set number "显示行号
  226. set laststatus=2 "启用状态栏信息
  227. set cmdheight=2 "设置命令行的高度为2,默认为1
  228. set cursorline "突出显示当前行
  229. " set guifont=YaHei_Consolas_Hybrid:h10 "设置字体:字号(字体名称空格用下划线代替)
  230. set nowrap "设置不自动换行
  231. set shortmess=atI "去掉欢迎界面
  232. au GUIEnter * simalt ~x "窗口启动时自动最大化
  233. " winpos 100 10 "指定窗口出现的位置,坐标原点在屏幕左上角
  234. " set lines=38 columns=120 "指定窗口大小,lines为高度,columns为宽度
  235.  
  236. " 设置代码配色方案
  237. if g:isGUI
  238. colorscheme Tomorrow-Night-Eighties "Gvim配色方案
  239. else
  240. colorscheme Tomorrow-Night-Eighties "终端配色方案
  241. endif
  242.  
  243. " 个性化状栏(这里提供两种方式,要使用其中一种去掉注释即可,不使用反之)
  244. " let &statusline=' %t %{&mod?(&ro?"*":"+"):(&ro?"=":" ")} %1*|%* %{&ft==""?"any":&ft} %1*|%* %{&ff} %1*|%* %{(&fenc=="")?&enc:&fenc}%{(&bomb?",BOM":"")} %1*|%* %=%1*|%* 0x%B %1*|%* (%l,%c%V) %1*|%* %L %1*|%* %P'
  245. " set statusline=%t\ %1*%m%*\ %1*%r%*\ %2*%h%*%w%=%l%3*/%L(%p%%)%*,%c%V]\ [%b:0x%B]\ [%{&ft==''?'TEXT':toupper(&ft)},%{toupper(&ff)},%{toupper(&fenc!=''?&fenc:&enc)}%{&bomb?',BOM':''}%{&eol?'':',NOEOL'}]
  246.  
  247. " 显示/隐藏菜单栏、工具栏、滚动条,可用 Ctrl + F11 切换
  248. if g:isGUI
  249. set guioptions-=m
  250. set guioptions-=T
  251. set guioptions-=r
  252. set guioptions-=L
  253. map <silent> <c-F11> :if &guioptions =~# 'm' <Bar>
  254. \set guioptions-=m <Bar>
  255. \set guioptions-=T <Bar>
  256. \set guioptions-=r <Bar>
  257. \set guioptions-=L <Bar>
  258. \else <Bar>
  259. \set guioptions+=m <Bar>
  260. \set guioptions+=T <Bar>
  261. \set guioptions+=r <Bar>
  262. \set guioptions+=L <Bar>
  263. \endif<CR>
  264. endif
  265.  
  266. " -----------------------------------------------------------------------------
  267. " < 编译、连接、运行配置 >
  268. " -----------------------------------------------------------------------------
  269. " F9 一键保存、编译、连接存并运行
  270. map <F9> :call Run()<CR>
  271. imap <F9> <ESC>:call Run()<CR>
  272.  
  273. " Ctrl + F9 一键保存并编译
  274. map <c-F9> :call Compile()<CR>
  275. imap <c-F9> <ESC>:call Compile()<CR>
  276.  
  277. " Ctrl + F10 一键保存并连接
  278. map <c-F10> :call Link()<CR>
  279. imap <c-F10> <ESC>:call Link()<CR>
  280.  
  281. let s:LastShellReturn_C = 0
  282. let s:LastShellReturn_L = 0
  283. let s:ShowWarning = 1
  284. let s:Obj_Extension = '.o'
  285. let s:Exe_Extension = '.exe'
  286. let s:Sou_Error = 0
  287.  
  288. let s:windows_CFlags = 'gcc\ -fexec-charset=gbk\ -Wall\ -g\ -O0\ -c\ %\ -o\ %<.o'
  289. let s:linux_CFlags = 'gcc\ -Wall\ -g\ -O0\ -c\ %\ -o\ %<.o'
  290.  
  291. let s:windows_CPPFlags = 'g++\ -fexec-charset=gbk\ -Wall\ -g\ -O0\ -c\ %\ -o\ %<.o'
  292. let s:linux_CPPFlags = 'g++\ -Wall\ -g\ -O0\ -c\ %\ -o\ %<.o'
  293.  
  294. func! Compile()
  295. exe ":ccl"
  296. exe ":update"
  297. if expand("%:e") == "c" || expand("%:e") == "cpp" || expand("%:e") == "cxx"
  298. let s:Sou_Error = 0
  299. let s:LastShellReturn_C = 0
  300. let Sou = expand("%:p")
  301. let Obj = expand("%:p:r").s:Obj_Extension
  302. let Obj_Name = expand("%:p:t:r").s:Obj_Extension
  303. let v:statusmsg = ''
  304. if !filereadable(Obj) || (filereadable(Obj) && (getftime(Obj) < getftime(Sou)))
  305. redraw!
  306. if expand("%:e") == "c"
  307. if g:iswindows
  308. exe ":setlocal makeprg=".s:windows_CFlags
  309. else
  310. exe ":setlocal makeprg=".s:linux_CFlags
  311. endif
  312. echohl WarningMsg | echo " compiling..."
  313. silent make
  314. elseif expand("%:e") == "cpp" || expand("%:e") == "cxx"
  315. if g:iswindows
  316. exe ":setlocal makeprg=".s:windows_CPPFlags
  317. else
  318. exe ":setlocal makeprg=".s:linux_CPPFlags
  319. endif
  320. echohl WarningMsg | echo " compiling..."
  321. silent make
  322. endif
  323. redraw!
  324. if v:shell_error != 0
  325. let s:LastShellReturn_C = v:shell_error
  326. endif
  327. if g:iswindows
  328. if s:LastShellReturn_C != 0
  329. exe ":bo cope"
  330. echohl WarningMsg | echo " compilation failed"
  331. else
  332. if s:ShowWarning
  333. exe ":bo cw"
  334. endif
  335. echohl WarningMsg | echo " compilation successful"
  336. endif
  337. else
  338. if empty(v:statusmsg)
  339. echohl WarningMsg | echo " compilation successful"
  340. else
  341. exe ":bo cope"
  342. endif
  343. endif
  344. else
  345. echohl WarningMsg | echo ""Obj_Name"is up to date"
  346. endif
  347. else
  348. let s:Sou_Error = 1
  349. echohl WarningMsg | echo " please choose the correct source file"
  350. endif
  351. exe ":setlocal makeprg=make"
  352. endfunc
  353.  
  354. func! Link()
  355. call Compile()
  356. if s:Sou_Error || s:LastShellReturn_C != 0
  357. return
  358. endif
  359. let s:LastShellReturn_L = 0
  360. let Sou = expand("%:p")
  361. let Obj = expand("%:p:r").s:Obj_Extension
  362. if g:iswindows
  363. let Exe = expand("%:p:r").s:Exe_Extension
  364. let Exe_Name = expand("%:p:t:r").s:Exe_Extension
  365. else
  366. let Exe = expand("%:p:r")
  367. let Exe_Name = expand("%:p:t:r")
  368. endif
  369. let v:statusmsg = ''
  370. if filereadable(Obj) && (getftime(Obj) >= getftime(Sou))
  371. redraw!
  372. if !executable(Exe) || (executable(Exe) && getftime(Exe) < getftime(Obj))
  373. if expand("%:e") == "c"
  374. setlocal makeprg=gcc\ -o\ %<\ %<.o
  375. echohl WarningMsg | echo " linking..."
  376. silent make
  377. elseif expand("%:e") == "cpp" || expand("%:e") == "cxx"
  378. setlocal makeprg=g++\ -o\ %<\ %<.o
  379. echohl WarningMsg | echo " linking..."
  380. silent make
  381. endif
  382. redraw!
  383. if v:shell_error != 0
  384. let s:LastShellReturn_L = v:shell_error
  385. endif
  386. if g:iswindows
  387. if s:LastShellReturn_L != 0
  388. exe ":bo cope"
  389. echohl WarningMsg | echo " linking failed"
  390. else
  391. if s:ShowWarning
  392. exe ":bo cw"
  393. endif
  394. echohl WarningMsg | echo " linking successful"
  395. endif
  396. else
  397. if empty(v:statusmsg)
  398. echohl WarningMsg | echo " linking successful"
  399. else
  400. exe ":bo cope"
  401. endif
  402. endif
  403. else
  404. echohl WarningMsg | echo ""Exe_Name"is up to date"
  405. endif
  406. endif
  407. setlocal makeprg=make
  408. endfunc
  409.  
  410. func! Run()
  411. let s:ShowWarning = 0
  412. call Link()
  413. let s:ShowWarning = 1
  414. if s:Sou_Error || s:LastShellReturn_C != 0 || s:LastShellReturn_L != 0
  415. return
  416. endif
  417. let Sou = expand("%:p")
  418. let Obj = expand("%:p:r").s:Obj_Extension
  419. if g:iswindows
  420. let Exe = expand("%:p:r").s:Exe_Extension
  421. else
  422. let Exe = expand("%:p:r")
  423. endif
  424. if executable(Exe) && getftime(Exe) >= getftime(Obj) && getftime(Obj) >= getftime(Sou)
  425. redraw!
  426. echohl WarningMsg | echo " running..."
  427. if g:iswindows
  428. exe ":!%<.exe"
  429. else
  430. if g:isGUI
  431. exe ":!gnome-terminal -e ./%<"
  432. else
  433. exe ":!./%<"
  434. endif
  435. endif
  436. redraw!
  437. echohl WarningMsg | echo " running finish"
  438. endif
  439. endfunc
  440.  
  441. " -----------------------------------------------------------------------------
  442. " < 其它配置 >
  443. " -----------------------------------------------------------------------------
  444. set writebackup "保存文件前建立备份,保存成功后删除该备份
  445. set nobackup "设置无备份文件
  446. " set noswapfile "设置无临时文件
  447. set vb t_vb= "关闭提示音
  448.  
  449. " =============================================================================
  450. " << 以下为常用插件配置 >>
  451. " =============================================================================
  452.  
  453. " -----------------------------------------------------------------------------
  454. " < a.vim 插件配置 >
  455. " -----------------------------------------------------------------------------
  456. " 用于切换C/C++头文件
  457. " :A ---切换头文件并独占整个窗口
  458. " :AV ---切换头文件并垂直分割窗口
  459. " :AS ---切换头文件并水平分割窗口
  460.  
  461. " -----------------------------------------------------------------------------
  462. " < Align 插件配置 >
  463. " -----------------------------------------------------------------------------
  464. " 一个对齐的插件,用来——排版与对齐代码,功能强大,不过用到的机会不多
  465.  
  466. " -----------------------------------------------------------------------------
  467. " < auto-pairs 插件配置 >
  468. " -----------------------------------------------------------------------------
  469. " 用于括号与引号自动补全,不过会与函数原型提示插件echofunc冲突
  470. " 所以我就没有加入echofunc插件
  471.  
  472. " -----------------------------------------------------------------------------
  473. " < BufExplorer 插件配置 >
  474. " -----------------------------------------------------------------------------
  475. " 快速轻松的在缓存中切换(相当于另一种多个文件间的切换方式)
  476. " <Leader>be 在当前窗口显示缓存列表并打开选定文件
  477. " <Leader>bs 水平分割窗口显示缓存列表,并在缓存列表窗口中打开选定文件
  478. " <Leader>bv 垂直分割窗口显示缓存列表,并在缓存列表窗口中打开选定文件
  479.  
  480. " -----------------------------------------------------------------------------
  481. " < ccvext.vim 插件配置 >
  482. " -----------------------------------------------------------------------------
  483. " 用于对指定文件自动生成tags与cscope文件并连接
  484. " 如果是Windows系统, 则生成的文件在源文件所在盘符根目录的.symbs目录下(如: X:\.symbs\)
  485. " 如果是Linux系统, 则生成的文件在~/.symbs/目录下
  486. " 具体用法可参考www.vim.org中此插件的说明
  487. " <Leader>sy 自动生成tags与cscope文件并连接
  488. " <Leader>sc 连接已存在的tagscscope文件
  489.  
  490. " -----------------------------------------------------------------------------
  491. " < cSyntaxAfter 插件配置 >
  492. " -----------------------------------------------------------------------------
  493. " 高亮括号与运算符等
  494. au! BufRead,BufNewFile,BufEnter *.{c,cpp,h,javascript} call CSyntaxAfter()
  495.  
  496. " -----------------------------------------------------------------------------
  497. " < indentLine 插件配置 >
  498. " -----------------------------------------------------------------------------
  499. " 用于显示对齐线,与 indent_guides 在显示方式上不同,根据自己喜好选择了
  500. " 在终端上会有屏幕刷新的问题,这个问题能解决有更好了
  501. " 开启/关闭对齐线
  502. nmap <leader>il :IndentLinesToggle<CR>
  503.  
  504. " 设置Gvim的对齐线样式
  505. if g:isGUI
  506. let g:indentLine_char = ""
  507. let g:indentLine_first_char = ""
  508. endif
  509.  
  510. " 设置终端对齐线颜色
  511. " let g:indentLine_color_term = 239
  512. "
  513. " 设置 GUI 对齐线颜色
  514. " let g:indentLine_color_gui = '#A4E57E'
  515.  
  516. " -----------------------------------------------------------------------------
  517. " < Mark--Karkat(也就是 Mark 插件配置 >
  518. " -----------------------------------------------------------------------------
  519. " 给不同的单词高亮,表明不同的变量时很有用,详细帮助见 :h mark.txt
  520.  
  521. " " -----------------------------------------------------------------------------
  522. " " < MiniBufExplorer 插件配置 >
  523. " " -----------------------------------------------------------------------------
  524. " " 快速浏览和操作Buffer
  525. " " 主要用于同时打开多个文件并相与切换
  526.  
  527. " " let g:miniBufExplMapWindowNavArrows = 1 "用Ctrl加方向键切换到上下左右的窗口中去
  528. " let g:miniBufExplMapWindowNavVim = 1 "用<C-k,j,h,l>切换到上下左右的窗口中去
  529. " let g:miniBufExplMapCTabSwitchBufs = 1 "功能增强(不过好像只有在Windows中才有用)
  530. " " <C-Tab> 向前循环切换到每个buffer上,并在但前窗口打开
  531. " " <C-S-Tab> 向后循环切换到每个buffer上,并在当前窗口打开
  532.  
  533. " 在不使用 MiniBufExplorer 插件时也可用<C-k,j,h,l>切换到上下左右的窗口中去
  534. noremap <c-k> <c-w>k
  535. noremap <c-j> <c-w>j
  536. noremap <c-h> <c-w>h
  537. noremap <c-l> <c-w>l
  538.  
  539. " -----------------------------------------------------------------------------
  540. " < neocomplcache 插件配置 >
  541. " -----------------------------------------------------------------------------
  542. " 关键字补全、文件路径补全、tag补全等等,各种,非常好用,速度超快。
  543. let g:neocomplcache_enable_at_startup = 1 "vim 启动时启用插件
  544. " let g:neocomplcache_disable_auto_complete = 1 "不自动弹出补全列表
  545. " 在弹出补全列表后用 <c-p> <c-n> 进行上下选择效果比较好
  546.  
  547. " -----------------------------------------------------------------------------
  548. " < nerdcommenter 插件配置 >
  549. " -----------------------------------------------------------------------------
  550. " 我主要用于C/C++代码注释(其它的也行),这个插件我做了小点修改,也就是在注释符
  551. " 与注释内容间加一个空格
  552. " 以下为插件默认快捷键,其中的说明是以C/C++为例的
  553. " <Leader>ci 以每行一个 /* */ 注释选中行(选中区域所在行),再输入则取消注释
  554. " <Leader>cm 以一个 /* */ 注释选中行(选中区域所在行),再输入则称重复注释
  555. " <Leader>cc 以每行一个 /* */ 注释选中行或区域,再输入则称重复注释
  556. " <Leader>cu 取消选中区域(行)的注释,选中区域(行)内至少有一个 /* */
  557. " <Leader>ca 在/*...*/与//这两种注释方式中切换(其它语言可能不一样了)
  558. " <Leader>cA 行尾注释
  559. let NERDSpaceDelims = 1 "在左注释符之后,右注释符之前留有空格
  560.  
  561. " -----------------------------------------------------------------------------
  562. " < nerdtree 插件配置 >
  563. " -----------------------------------------------------------------------------
  564. " 有目录村结构的文件浏览插件
  565.  
  566. " 常规模式下输入 F2 调用插件
  567. nmap <F2> :NERDTreeToggle<CR>
  568.  
  569. " -----------------------------------------------------------------------------
  570. " < omnicppcomplete 插件配置 >
  571. " -----------------------------------------------------------------------------
  572. " 用于C/C++代码补全,这种补全主要针对命名空间、类、结构、共同体等进行补全,详细
  573. " 说明可以参考帮助或网络教程等
  574. " 使用前先执行如下 ctags 命令(本配置中可以直接使用 ccvext 插件来执行以下命令)
  575. " ctags -R --c++-kinds=+p --fields=+iaS --extra=+q
  576. " 我使用上面的参数生成标签后,对函数使用跳转时会出现多个选择
  577. " 所以我就将--c++-kinds=+p参数给去掉了,如果大侠有什么其它解决方法希望不要保留呀
  578. set completeopt=menu "关闭预览窗口
  579.  
  580. " -----------------------------------------------------------------------------
  581. " < powerline 插件配置 >
  582. " -----------------------------------------------------------------------------
  583. " 状态栏插件,更好的状态栏效果
  584.  
  585. " -----------------------------------------------------------------------------
  586. " < repeat 插件配置 >
  587. " -----------------------------------------------------------------------------
  588. " 主要用"."命令来重复上次插件使用的命令
  589.  
  590. " -----------------------------------------------------------------------------
  591. " < snipMate 插件配置 >
  592. " -----------------------------------------------------------------------------
  593. " 用于各种代码补全,这种补全是一种对代码中的词与代码块的缩写补全,详细用法可以参
  594. " 考使用说明或网络教程等。不过有时候也会与 supertab 插件在补全时产生冲突,如果大
  595. " 侠有什么其它解决方法希望不要保留呀
  596.  
  597. " -----------------------------------------------------------------------------
  598. " < SrcExpl 插件配置 >
  599. " -----------------------------------------------------------------------------
  600. " 增强源代码浏览,其功能就像Windows中的"Source Insight"
  601. " :SrcExpl "打开浏览窗口
  602. " :SrcExplClose "关闭浏览窗口
  603. " :SrcExplToggle "打开/闭浏览窗口
  604.  
  605. " " -----------------------------------------------------------------------------
  606. " " < supertab 插件配置 >
  607. " " -----------------------------------------------------------------------------
  608. " " 我主要用于配合 omnicppcomplete 插件,在按 Tab 键时自动补全效果更好更快
  609. " " let g:supertabdefaultcompletiontype = "<c-x><c-u>"
  610.  
  611. " -----------------------------------------------------------------------------
  612. " < std_c 插件配置 >
  613. " -----------------------------------------------------------------------------
  614. " 用于增强C语法高亮
  615.  
  616. " 启用 // 注视风格
  617. let c_cpp_comments = 0
  618.  
  619. " -----------------------------------------------------------------------------
  620. " < surround 插件配置 >
  621. " -----------------------------------------------------------------------------
  622. " 快速给单词/句子两边增加符号(包括html标签),缺点是不能用"."来重复命令
  623. " 不过 repeat 插件可以解决这个问题,详细帮助见 :h surround.txt
  624.  
  625. " -----------------------------------------------------------------------------
  626. " < Syntastic 插件配置 >
  627. " -----------------------------------------------------------------------------
  628. " 用于保存文件是查检语法
  629.  
  630. " -----------------------------------------------------------------------------
  631. " < Tagbar 插件配置 >
  632. " -----------------------------------------------------------------------------
  633. " 相对 TagList 能更好的支持面向对象
  634.  
  635. " 常规模式下输入 tb 调用插件,如果有打开 TagList 窗口则先将其关闭
  636. nmap tb :TlistClose<cr>:TagbarToggle<cr>
  637.  
  638. let g:tagbar_width=30 "设置窗口宽度
  639. " let g:tagbar_left=1 "在左侧窗口中显示
  640.  
  641. " -----------------------------------------------------------------------------
  642. " < TagList 插件配置 >
  643. " -----------------------------------------------------------------------------
  644. " 高效地浏览源码, 其功能就像vc中的workpace
  645. " 那里面列出了当前文件中的所有宏,全局变量, 函数名等
  646.  
  647. " 常规模式下输入 tl 调用插件,如果有打开 Tagbar 窗口则先将其关闭
  648. nmap tl :TagbarClose<cr>:Tlist<cr>
  649.  
  650. let Tlist_Show_One_File=1 "只显示当前文件的tags
  651. " let Tlist_Enable_Fold_Column=0 "使taglist插件不显示左边的折叠行
  652. let Tlist_Exit_OnlyWindow=1 "如果Taglist窗口是最后一个窗口则退出Vim
  653. let Tlist_File_Fold_Auto_Close=1 "自动折叠
  654. let Tlist_WinWidth=30 "设置窗口宽度
  655. let Tlist_Use_Right_Window=1 "在右侧窗口中显示
  656.  
  657. " -----------------------------------------------------------------------------
  658. " < txtbrowser 插件配置 >
  659. " -----------------------------------------------------------------------------
  660. " 用于文本文件生成标签与与语法高亮(调用TagList插件生成标签,如果可以)
  661. au BufRead,BufNewFile *.txt setlocal ft=txt
  662.  
  663. " " -----------------------------------------------------------------------------
  664. " " < WinManager 插件配置 >
  665. " " -----------------------------------------------------------------------------
  666. " " 管理各个窗口, 或者说整合各个窗口
  667.  
  668. " " 常规模式下输入 F3 调用插件
  669. " nmap <F3> :WMToggle<cr>
  670.  
  671. " " 这里可以设置为多个窗口, 'FileExplorer|TagList'
  672. " let g:winManagerWindowLayout='FileExplorer'
  673.  
  674. " let g:persistentBehaviour=0 "只剩一个窗口时, 退出vim
  675. " let g:winManagerWidth=30 "设置窗口宽度
  676.  
  677. " -----------------------------------------------------------------------------
  678. " < ZoomWin 插件配置 >
  679. " -----------------------------------------------------------------------------
  680. " 用于分割窗口的最大化与还原
  681. " 快捷键 <c-w>o 在最大化与还原间切换
  682.  
  683. " =============================================================================
  684. " << 以下为常用工具配置 >>
  685. " =============================================================================
  686.  
  687. " -----------------------------------------------------------------------------
  688. " < cscope 工具配置 >
  689. " -----------------------------------------------------------------------------
  690. " 用Cscope自己的话说 - "你可以把它当做是超过频的ctags"
  691. if has("cscope")
  692. "设定可以使用 quickfix 窗口来查看 cscope 结果
  693. set cscopequickfix=s-,c-,d-,i-,t-,e-
  694. "使支持用 Ctrl+] 和 Ctrl+t 快捷键在代码间跳转
  695. set cscopetag
  696. "如果你想反向搜索顺序设置为1
  697. set csto=0
  698. "在当前目录中添加任何数据库
  699. if filereadable("cscope.out")
  700. cs add cscope.out
  701. "否则添加数据库环境中所指出的
  702. elseif $CSCOPE_DB != ""
  703. cs add $CSCOPE_DB
  704. endif
  705. set cscopeverbose
  706. "快捷键设置
  707. nmap <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR>
  708. nmap <C-\>g :cs find g <C-R>=expand("<cword>")<CR><CR>
  709. nmap <C-\>c :cs find c <C-R>=expand("<cword>")<CR><CR>
  710. nmap <C-\>t :cs find t <C-R>=expand("<cword>")<CR><CR>
  711. nmap <C-\>e :cs find e <C-R>=expand("<cword>")<CR><CR>
  712. nmap <C-\>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
  713. nmap <C-\>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
  714. nmap <C-\>d :cs find d <C-R>=expand("<cword>")<CR><CR>
  715. endif
  716.  
  717. " -----------------------------------------------------------------------------
  718. " < ctags 工具配置 >
  719. " -----------------------------------------------------------------------------
  720. " 对浏览代码非常的方便,可以在函数,变量之间跳转等
  721. set tags=./tags; "向上级目录递归查找tags文件(好像只有在Windows下才有用)
  722.  
  723. " -----------------------------------------------------------------------------
  724. " < gvimfullscreen 工具配置 > 请确保已安装了工具
  725. " -----------------------------------------------------------------------------
  726. " 用于 Windows Gvim 全屏窗口,可用 F11 切换
  727. " 全屏后再隐藏菜单栏、工具栏、滚动条效果更好
  728. if (g:iswindows && g:isGUI)
  729. map <F11> <Esc>:call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0)<CR>
  730. endif
  731.  
  732. " -----------------------------------------------------------------------------
  733. " < vimtweak 工具配置 > 请确保以已装了工具
  734. " -----------------------------------------------------------------------------
  735. " 这里只用于窗口透明与置顶
  736. " 常规模式下 Shift + k 减小透明度,Shift + j 增加透明度,<Leader>t 窗口置顶与否切换
  737. if (g:iswindows && g:isGUI)
  738. let g:Current_Alpha = 255
  739. let g:Top_Most = 0
  740. func! Alpha_add()
  741. let g:Current_Alpha = g:Current_Alpha + 10
  742. if g:Current_Alpha > 255
  743. let g:Current_Alpha = 255
  744. endif
  745. call libcallnr("vimtweak.dll","SetAlpha",g:Current_Alpha)
  746. endfunc
  747. func! Alpha_sub()
  748. let g:Current_Alpha = g:Current_Alpha - 10
  749. if g:Current_Alpha < 155
  750. let g:Current_Alpha = 155
  751. endif
  752. call libcallnr("vimtweak.dll","SetAlpha",g:Current_Alpha)
  753. endfunc
  754. func! Top_window()
  755. if g:Top_Most == 0
  756. call libcallnr("vimtweak.dll","EnableTopMost",1)
  757. let g:Top_Most = 1
  758. else
  759. call libcallnr("vimtweak.dll","EnableTopMost",0)
  760. let g:Top_Most = 0
  761. endif
  762. endfunc
  763. "快捷键设置
  764. map <s-k> :call Alpha_add()<cr>
  765. map <s-j> :call Alpha_sub()<cr>
  766. map <leader>t :call Top_window()<cr>
  767. endif
  768.  
  769. " =============================================================================
  770. " << 以下为常用自动命令配置 >>
  771. " =============================================================================
  772.  
  773. " 自动切换目录为当前编辑文件所在目录
  774. au BufRead,BufNewFile,BufEnter * cd %:p:h
  775.  
  776. " =============================================================================
  777. " << 其它 >>
  778. " =============================================================================
  779.  
  780. " 注:上面配置中的"<Leader>"在本软件中设置为"\"键(引号里的反斜杠),如<Leader>t
  781. " 指在常规模式下按"\"键加"t"键,这里不是同时按,而是先按"\"键后按"t"键,间隔在一
  782. " 秒内,而<Leader>cs是先按"\"键再按"c"又再按"s"键
  783. "
  784. hi Normal ctermfg=252 ctermbg=none
  785. "

【搬运】【备份】imrc文件的更多相关文章

  1. 使用命令行备份指定文件夹并保留最新N份

    客户需要对网站进行定期备份,并保留最近30天的文件,编写后以下脚本,通过Windows的任务计划进行调度 对比手工和任务计划调度运行情况来看,手工运行中可直接调用RAR.exe和网络进行传输,但是任务 ...

  2. oracle11g 新特性 - rman自动备份控制文件延迟

    OS: Oracle Linux Server release 5.7 DB: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 -6 ...

  3. Window2003、xp远程备份数据库文件(xcopy+rar+pscp)

    Window2003.xp远程备份数据库文件 xcopy+rar+pscp .bat脚本 Eg: xcopy d:\dbtest\*.* d:\dbtemp\ /y D:\backup\Rar.exe ...

  4. 用备份控制文件做不完全恢复下的完全恢复(全备<老>--备份控制文件<次新>--删除表空间andy--日志文件<新>)

    为什么会使用备份的控制文件? 实际工作中主要有两种情况:第一种:当前控制文件全部损坏,而数据文件备份,控制文件备份及当前日志处于不同SCN版本,它们之间又增加过表空间(数据文件).第二种:当前控制文件 ...

  5. 用备份控制文件做不完全恢复下的完全恢复(数据文件备份<旧>--新建表空间--控制文件备份<次新>--日志归档文件<新>)

    为什么会使用备份的控制文件? 实际工作中主要有两种情况:第一种:当前控制文件全部损坏,而数据文件备份,控制文件备份及当前日志处于不同SCN版本,它们之间又增加过表空间(数据文件).第二种:当前控制文件 ...

  6. 【RMAN】Oracle中如何备份控制文件?备份控制文件的方式有哪几种?

    真题1. 如何备份控制文件?备份控制文件的方式有哪几种? 答案:备份控制文件的方式有多种. ① 备份控制文件可以在线进行: SQL> ALTER DATABASE BACKUP CONTROLF ...

  7. Linux VPS自动定时备份网站文件和MYSQL数据库到FTP空间(LNMP)

    如果我们网站更新不是很频繁,我们可以定期手动进行备份网站文件和MYSQL数据库导出.如果我们网站数据更新频繁,且数据尤为重要,建议要采用定期自动 备份,至少需要多备份数据,无论我们选择何种优秀的VPS ...

  8. python - 代码练习 - 备份目录/文件(windos环境)

    备份目录/文件 import zipfile import os,datetime class beifen(object): def __init__(self,files,new_files,co ...

  9. [20171225]没有备份数据文件的恢复.txt

    [20171225]没有备份数据文件的恢复.txt --//别人问的问题,增加了数据文件没有备份,如何恢复,实际上很简单,因为当前控制文件有记录建立时间只要从建立数据文件开始的--//归档日志都存在恢 ...

  10. rman备份控制文件

    rman备份控制文件分为两种情况. 1.自动备份需要配置configure controlfile autobackup on配置之后,控制文件和spfile会在每次rman备份之后自动备份contr ...

随机推荐

  1. Java [Leetcode 326]Power of Three

    题目描述: Given an integer, write a function to determine if it is a power of three. Follow up:Could you ...

  2. 一个P2P点播直播开源项目:P2PCenter

    最近跟着公司的项目走,我也研究了不少东西,尤其是在P2P方面,广泛涉猎各种开源项目,尤其是国外的开源项目,意外的发现了一个国内的项目,做的还不错,推荐一下.---------------------使 ...

  3. 【打表】HDOJ-2089-不要62

    [题目链接:HDOJ-2089] 多组测试数据,所以可以先算出符合条件的所有数保存数组中,输入时则直接遍历数组. #include<iostream> #include<cstrin ...

  4. JS动态呈现还可以输入字数

    现在觉得当我们使用js或者jquery来呈现一个动态效果时,主要还是要想清楚它的思想.它的原理.而动态呈现输入字数,其实就是给它设置一个最大输入字数,然后获取已输入的字数,自然想做什么都可以. < ...

  5. Android 工程目录结构简介

    一般来说,一个Android工程的目录结构如下图所示. 1:src JAVA源代码都放在这里面. 2:gen 编译器自动生成的一些JAVA代码 3:Android 4.2 Android平台(本工程用 ...

  6. iOS-利用AFNetworking(AFN 1.x)-实现文件上传

    转:http://www.kaifazhe.com/ios_school/380067.html 官方建议AFN的使用方法 1. 定义一个全局的AFHttpClient:包含有 1> baseU ...

  7. 只用css实现“每列四行,加载完一列后数据自动填充到下一列”的效果

    只用css实现“每列四行,加载完一列后数据自动填充到下一列”的效果.这个题目用图表示如下: 如果将题目换成“只用css实现每行四列,加载完一行后数据自动填充到下一行”,那这个问题就简单多了,相信大家都 ...

  8. CXF之jaxws:endpoint对spring bean的引用

    由于CXF对spring的无缝支持,CXF的使用,经常与spring捆绑在一起.随之而起的,自然是想在jaxws:endpoint中引用spring bean.在CXF提供的HelloWorld例子中 ...

  9. DevExpress z

    1.TextEditor(barEditItem)取文本 string editValue = barEditItem1.EditValue.ToString();    //错误,返回null st ...

  10. uilib库gdi句柄泄漏bug修复,duilib防止gdi泄漏的小提醒

    转载请说明原出处,谢谢~~ 今天下午群友的网友让我帮忙看一下的duilib程序的问题,程序中包含了List控件,会定时清除所有子项目然后重新添加.但是程序运行一段时间后会自己崩溃!我编译了源码运行后在 ...