vimrc-update/Vim+Cscope+Ctags+....
openSUSE    2016-12-03 12:38:51    267    0    0
tianwaifeixian   openSUSE

更新了.vimrc配置文件


" ----------------- Author: Ruchee
" ----------------- Email: my@ruchee.com
" ----------------- WebSite: http://www.ruchee.com
" ----------------- Date: 2012-05-01
" Ctrl + H --光标移当前行行首
" Ctrl + J --光标移下一行行首
" Ctrl + K --光标移上一行行尾
" Ctrl + L --光标移当前行行尾
" Ctrl + C --编译 [支持C/C++、Java、Haskell]
" Ctrl + R --运行 [支持C/C++、Java、Haskell、Lua、Perl、Python、Ruby]
" Ctrl + ] --转到函数定义
" Ctrl + T --返回调用函数
" Ctrl + E --一步加载语法模板和作者、时间信息
" <C-P> --单词补全
" <C-X><C-L> --整行补全
" Tab键 --插入模式下的全功能语法结构补全 [snipMate插件]
" Shift + Insert --向Vim中粘贴从别处复制的内容
" u [小写] --单步复原 [非插入模式]
" U [大写] --整行复原 [非插入模式]
" jj --保存文件并留在插入模式 [插入模式]
" kk --返回Normal模式 [插入模式]
" nt --打开NERDTree [非插入模式]
" tl --打开TagList [非插入模式]
" za --打开或关闭当前折叠
" zM --关闭所有折叠
" zR --打开所有折叠
" :set syntax=cpp --手动选择语法高亮 [或 :set filetype=cpp]
" :%!xxd --转储二进制文件,以十六进制形式显示
" :%!xxd -r --还原二进制文件
" ---------- 主要插件详细用法说明 ---------------------
" :Tlist --呼出变量和函数列表 [TagList插件]
" :LoadTemplate --呼出语法模板 [Load_Template插件]
" :AuthorInfoDetect --添加作者、时间等信息 [NERD_commenter && authorinfo插件]
" ---------- a.vim [自动切换C/C++同名头文件] ----------
"
" :A --切换同名头文件并独占整个屏幕
" :AS --切换同名头文件并垂直分屏,头文件在上
" :AV --切换同名头文件并水平分割,头文件在左
" ---------- NERDTree [智能文件浏览器] ----------------
"
" :NERDTree --启动NERDTree插件
" o [小写] --切换当前文件或目录的打开、关闭状态
" u --打开上层目录
" p [小写] --返回上层目录
" P [大写] --返回根目录
" K --转到当前目录第一个节点
" J --转到当前目录最后的节点
" m --显示文件系统菜单 [增、删、移]
" ? --弹出帮助菜单
" q --退出该插件
""""""""""""""""""""""""""""""""""""""""""
" 将所有以.html结尾的文档以Django Template语法进行渲染
" 本配置语句必须放在所有配置的最前面
au BufNewFile,BufRead *.html setf htmldjango
"""""""""""""""""""""""""""""""""""""""""""
syntax enable " 打开语法高亮
syntax on " 开启文件类型侦测
filetype indent on " 针对不同的文件类型采用不同的缩进格式
filetype plugin on " 针对不同的文件类型加载对应的插件
filetype plugin indent on " 启用自动补全
""""""""""""""""设置编码"""""""""""""""
set fenc=utf-8
set encoding=utf-8
set fileencodings=utf-8,gbk,cp936,latin-1
set fileformat=unix
""""""""""""""""""""""""""""""""""""""""""""
set tags=./tags; "配置ctags生成的tags文件到当前目录
set autochdir 
set cindent 
set helplang=cn "启用中文文档
colorscheme desert " 着色模式
set guifont=Monaco:h14 " 字体 && 字号
set tabstop=4 " 设置tab键的宽度
set shiftwidth=4 " 换行时行间交错使用4个空格
set autoindent " 自动对齐
set backspace=2 " 设置退格键可用
set cindent shiftwidth=4 " 自动缩进4空格
set smartindent " 智能自动缩进
set ai! " 设置自动缩进
set number " 显示行号
set showmatch " 显示括号配对情况
set mouse=a " 启用鼠标
set gcr=a:block-blinkon0 " 禁止光标闪烁
set ruler " 右下角显示光标位置的状态行
set incsearch " 开启实时搜索功能
set hlsearch " 开启高亮显示结果
set nowrapscan " 搜索到文件两端时不重新搜索
set nocompatible " 关闭兼容模式
set vb t_vb= " 关闭提示音
"set cursorline = 1 " 突出显示当前行
set hidden " 允许在有未保存的修改时切换缓冲区
set list " 显示Tab符,使用一高亮竖线代替
set listchars=tab:\ \ ,
set writebackup " 设置无备份文件
set nobackup
set autochdir " 设定文件浏览器目录为当前目录
"set nowrap " 设置不自动换行
set foldmethod=syntax " 选择代码折叠类型
set foldlevel=100 " 禁止自动折叠
set laststatus=2 " 开启状态栏信息
set cmdheight=2 " 命令行的高度,默认为1,这里设为2
""""""""""""""""""""""""""
" 禁止光标闪烁
set gcr=a:block-blinkon0
" 禁止显示滚动条
set guioptions-=l
set guioptions-=L
set guioptions-=r
set guioptions-=R
" 禁止显示菜单和工具条
set guioptions-=m
set guioptions-=T
" 每行超过80个的字符用下划线标示
au BufRead,BufNewFile *.s,*.asm,*.h,*.c,*.cpp,*.cc,*.java,*.cs,*.erl,*.hs,*.sh,*.lua,*.pl,*.pm,*.php,*.py,*.rb,*.erb,*.vim,*.js,*.css,*.xml,*.html,*.xhtml 2match Underlined /.\%81v/
""""""""""""haskell语言支持""""""""""""""
:let hs_highlight_delimiters=1 " 高亮定界符
:let hs_highlight_boolean=1 " 把True和False识别为关键字
:let hs_highlight_types=1 " 把基本类型的名字识别为关键字
:let hs_highlight_more_types=1 " 把更多常用类型识别为关键字
:let hs_highlight_debug=1 " 高亮调试函数的名字
:let hs_allow_hash_operator=1 " 阻止把#高亮为错误
""""""""""""Go语言设置""""""""""""""""""
autocmd FileType go autocmd BufWritePre <buffer> Fmt
autocmd FileType go compiler go
"""""""""""""引号 && 括号自动匹配"""""""""""""
:inoremap () ()<Left>
:inoremap {} {<Enter><Enter>}<Up><Tab>
:inoremap [] []<Left>
:inoremap <> <><Left>
:inoremap "" ""<Left>
:inoremap '' ''<Left>
:inoremap `` ``<Left>
function ClosePair(char)
 if getline('.')[col('.') - 1] == a:char
 return "\<Right>"
 else
 return a:char
 endif
endf
"""""""""""多个文件切换""""""""""""""
" MiniBufExplorer 多个文件切换 可使用鼠标双击相应文件名进行切换
let g:miniBufExplMapWindowNavVim=1
let g:miniBufExplMapWindowNavArrows=1
let g:miniBufExplMapCTabSwitchBufs=1
let g:miniBufExplModSelTarget=1
" MiniBufExpl Colors MiniBufExpl颜色设置
"hi MBENormal guifg=#808080 guibg=fg
"hi MBEChanged guifg=#CD5907 guibg=fg
"hi MBEVisibleNormal guifg=#5DC2D6 guibg=fg
"hi MBEVisibleChanged guifg=#F1266F guibg=fg
"hi MBEVisibleActiveNormal guifg=#A6DB29 guibg=fg
"hi MBEVisibleActiveChanged guifg=#F1266F guibg=fg
""""""""TxtBrowser高亮TXT文本文件"""""""""""""
au BufRead,BufNewFile *.txt setlocal ft=txt
"""""""""""""""""""""""""""""""""""""""""""
" :LoadTemplate 根据文件后缀自动加载模板
let g:template_path='/home/xuan/.vim/plugin/template/'
"""""""""""""AuthorInfoDetect """""""""""""""""
" :AuthorInfoDetect 自动添加作者时间等信息,本质是NERD_commenter && authorinfo的结合
let g:loaded_authorinfo= 1
let g:vimrc_author='liangzi'
let g:vimrc_email='xiaoyaoke7630@sina.com'
let g:vimrc_homepage='http://tianwaifeixian.leanote.com/'
nmap <F4> :AuthorInfoDetect<cr>
""""""""""""""""""""""""""""""""""""""""""""
" Ctrl + H 将光标移到当前行的行首
imap <c-h> <ESC>I
" Ctrl + J 将光标移到下一行的行首
imap <c-j> <ESC>jI
" Ctrl + K 将光标移到上一行的末尾
imap <c-k> <ESC>kA
" Ctrl + L 将光标移到当前行的行尾
imap <c-l> <ESC>A
" Ctrl + E 一步加载语法模板和作者、时间信息
map <c-e> <ESC>:LoadTemplate<CR><ESC>:AuthorInfoDetect<CR><ESC>Gi
imap <c-e> <ESC>:LoadTemplate<CR><ESC>:AuthorInfoDetect<CR><ESC>Gi
vmap <c-e> <ESC>:LoadTemplate<CR><ESC>:AuthorInfoDetect<CR><ESC>Gi
" jj 保存文件并留在插入模式 [插入模式]
imap jj <ESC>:w<CR>li
" kk 返回Normal模式 [插入模式]
imap kk <ESC>l
" nt 打开NERDTree [非插入模式]
map nt :NERDTree<CR>
" tl 打开Taglist [非插入模式]
map tl :Tlist<CR><c-l>
"w!! saving of files as sudo
cmap w!! w !sudo tee > /dev/null %
""""""""""""Ctags""""""""""""""
"进入我们的项目代码根目录按下Ctrl-F12快捷键自动生成tags文件。
map <C-F12> :!ctags -R --c-kinds=+p --fields=+iaS --extra=+q .<CR>
map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
"""""""""""""""""""""""""""""" 
" Tag list (ctags) 
nnoremap <silent> <F8> :TlistToggle<CR> 
let Tlist_Ctags_Cmd = '/usr/bin/ctags' 
let Tlist_Show_One_File = 1 "只显示当前文件的tags
let Tlist_Exit_OnlyWindow = 1 "如果Taglist窗口是最后一个窗口则退出Vim
let Tlist_Use_Left_Window = 1 "在左侧窗口中显示
let Tlist_Sort_Type = 'name' 
let Tlist_Auto_Open = 1 
let Tlist_Auto_Update = 1 
let Tlist_WinWidth = 25 
let Tlist_Use_Right_Window= 0 
let Tlist_File_Fold_Auto_Close=1 " 自动折叠
if $VIM_HATE_SPACE_ERRORS != '0' 
 let c_space_errors=1 
endif
"""""""""""""""""""""""""""""""" 
 " Window manager settings 
""""""""""""""""""""""""""""""""
nmap wm :WMToggle<CR> 
map <c-w><c-f> :FirstExplorerWindow<cr> 
map <c-w><c-b> :BottomExplorerWindow<cr> 
let persistentBehaviour=0 
let winManagerWidth=25
"if has("cscope") 
" set csprg=/usr/bin/cscope 
" set csto=0 
" set cst 
" set nocsverb 
" " add any database in current directory 
" if filereadable("cscope.out") 
" cs add ./cscope.out 
" " else add database pointed to by environment 
" elseif $CSCOPE_DB != "" 
" cs add $CSCOPE_DB 
" endif 
" set csverb 
" set cscopetag 
" set cscopequickfix=s-,g-,c-,d-,t-,e-,f-,i- 
"endif
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" ======= 编译 && 运行 ======= "
" 编译源文件
func! CompileCode()
 exec "w"
 if &filetype == "c"
 exec "!gcc -Wall -std=c99 %<.c -o %<"
 elseif &filetype == "cpp"
 exec "!g++ -Wall -std=c++98 %<.cpp -o %<"
 elseif &filetype == "java"
 exec "!javac %<.java"
 elseif &filetype == "haskell"
 exec "!ghc --make %<.hs -o %<"
 elseif &filetype == "lua"
 exec "!lua %<.lua"
 elseif &filetype == "perl"
 exec "!perl %<.pl"
 elseif &filetype == "python"
 exec "!python %<.py"
 elseif &filetype == "ruby"
 exec "!ruby %<.rb"
 elseif &filetype == "go"
 exec "!go build %<.go"
 endif
endfunc
" 运行可执行文件
func! RunCode()
 exec "w"
 if &filetype == "c" || &filetype == "cpp" || &filetype == "haskell"
 exec "! ./%<"
 elseif &filetype == "java"
 exec "!java %<"
 elseif &filetype == "lua"
 exec "!lua %<.lua"
 elseif &filetype == "perl"
 exec "!perl %<.pl"
 elseif &filetype == "python"
 exec "!python %<.py"
 elseif &filetype == "ruby"
 exec "!ruby %<.rb"
 elseif &filetype == "go"
 exec "!go run %<.go"
 endif
endfunc
" Ctrl + C 一键保存、编译
map <c-c> :call CompileCode()<CR>
imap <c-c> <ESC>:call CompileCode()<CR>
vmap <c-c> <ESC>:call CompileCode()<CR>
" Ctrl + R 一键保存、运行
map <c-r> :call RunCode()<CR>
imap <c-r> <ESC>:call RunCode()<CR>
vmap <c-r> <ESC>:call RunCode()<CR>
""""""""""""""""""""""""""""""""""""""""
" 配色方案
if has('gui_running')
 set background=light
else
 set background=dark
endif
"colorscheme torte
colorscheme darkblue
"colorscheme desert
"colorscheme default
"colorscheme delek
"colorscheme ron
"colorscheme elflord
"colorscheme koehler
"colorscheme peachpuff
"colorscheme slate
"colorscheme blue
"colorscheme shine
"colorscheme zellner
"colorscheme murphy
"colorscheme pablo
"colorscheme morning
"colorscheme evening
"colorscheme phd
""""""""""""""""""""""""""""""""""""""""​​

 现在启动会报个小错误

~> vim test.c 
处理 /home/xuan/.vim/plugin/authorinfo.vim 时发生错误:
第   11 行:
E15: 无效的表达式: exists('g:loaded_authorinfo')^M
第  178 行:
E171: 缺少 :endif

解决方法:

vim ~/.vim/plugin/authorinfo.vim   
:set fileformat=unix
:%s/^M/g​

本文配置文件主要参考链接:ttsky138.blog

文档下载主站:http://www.vim.org/


文中作者生成的vimindex.sh脚本文件拷贝到/usr/bin目录添加x权限

使用方法:

cd到代码目录运行

vimindex.sh​

会生成相关检索文件“tags”等等

 

按ctr+E自动添加作者信息

作者信息需要自己生成一个文件保存在.vim/plugin/template/下面的子目录里面

我自己写了个C代码的个人信息 哈哈

 

github:有个star七千多的配置文件:https://github.com/amix/vimrc

 

上一篇: s3c2440通过nfs挂载电脑的目录

下一篇: XX-NET for openSUSE

267 人读过
立即登录, 发表评论.
没有帐号? 立即注册
0 条评论
文档导航