• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Ubuntu下VIM配置成C++开发编辑器

    1、复制配置文件到本用户环境下,再新建一个.vim文件夹,并创建bundle子文件夹

    bundle的配置文件如下:

    "新增的配置放在这里
    set nocompatible    " be iMproved
    filetype off     " required!
    set rtp+=~/.vim/bundle/vundle/
    call vundle#rc()
    " let Vundle manage Vundle
    " required!
    Bundle 'gmarik/vundle'
    " My Bundles here:
    "
    " original repos on github
    Bundle 'tpope/vim-fugitive'
    Bundle 'Lokaltog/vim-easymotion'
    Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
    Bundle 'tpope/vim-rails.git'
    " vim-scripts repos
    Bundle 'L9'
    Bundle 'FuzzyFinder'
    " non github repos
    " Bundle 'git://git.wincent.com/command-t.git'
    " Bundle 'https://github.com/scrooloose/nerdtree.git'
    " ...
    filetype plugin indent on  " required!
    "
    " Brief help -- 此处后面都是vundle的使用命令
    " :BundleList   - list configured bundles
    " :BundleInstall(!) - install(update) bundles
    " :BundleSearch(!) foo - search(or refresh cache first) for foo
    " :BundleClean(!)  - confirm(or auto-approve) removal of unused bundles
    "
    " see :h vundle for more details or wiki for FAQ
    " NOTE: comments after Bundle command are not allowed..
    
    

    2、安装NERDTree

    Bundle 'https://github.com/scrooloose/nerdtree.git'

    用法如下:

    nmap <F5> :NERDTree<CR> 快捷键

    :NERDTree    开启

    ctrl+w    可以在左右窗口切换

    p 到上层目录,P到根目录

    o 打开文件或目录,q 退出插件

    3、安装tagbar

    首先安装ctags,sudo apt-get install ctags

    Bundle 'https://github.com/majutsushi/tagbar.git'

    配置文件如下:

    " tagbar设置----------------
    " 快捷键
    nmap <F4> :TagbarToggle<CR>
    let g:tagbar_width = 20  " tagbar's width, default 20
    " let g:tagbar_left = 1  " on the left side
    let g:tagbar_right = 1  " on the right side
    let NERDTreeIgnore=['\.pyc', '\.pyo', '\.swp', '\~'] " ignore *.py[co], *.sw p and *~

    使用方式F4快捷键,退出为q

    4、其他插件

    Bundle 'https://github.com/scrooloose/nerdtree.git'
    Bundle 'https://github.com/majutsushi/tagbar.git'
    Bundle 'https://github.com/terryma/vim-multiple-cursors.git'
    Bundle 'https://github.com/upsuper/vim-colorschemes.git'
    Bundle 'https://github.com/vim-scripts/cppcomplete.git'

    我的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.[]、{}、()、”“、' ‘等都自动补全

    10.其他功能读者可以研究以下文件

    map <F9> :call SaveInputData()<CR>
    func! SaveInputData()
     exec "tabnew"
     exec 'normal "+gP'
     exec "w! /tmp/input_data"
    endfunc
    "colorscheme torte
    "colorscheme murphy
    "colorscheme desert 
    "colorscheme desert 
    "colorscheme elflord
    colorscheme ron
    "set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
    "set termencoding=utf-8
    "set encoding=utf-8
    "set fileencodings=ucs-bom,utf-8,cp936
    "set fileencoding=utf-8
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " 显示相关 
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    "set shortmess=atI " 启动的时候不显示那个援助乌干达儿童的提示 
    "winpos 5 5   " 设定窗口位置 
    "set lines=40 columns=155 " 设定窗口大小 
    set go=    " 不要图形按钮 
    "color asmanian2  " 设置背景主题 
    "set guifont=Courier_New:h10:cANSI " 设置字体 
    "syntax on   " 语法高亮 
    autocmd InsertLeave * se nocul " 用浅色高亮当前行 
    autocmd InsertEnter * se cul " 用浅色高亮当前行 
    "set ruler   " 显示标尺 
    set showcmd   " 输入的命令显示出来,看的清楚些 
    "set cmdheight=1  " 命令行(在状态行下)的高度,设置为1 
    "set whichwrap+=<,>,h,l " 允许backspace和光标键跨越行边界(不建议) 
    "set scrolloff=3  " 光标移动到buffer的顶部和底部时保持3行距离 
    set novisualbell " 不要闪烁(不明白) 
    set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} "状态行显示的内容 
    set laststatus=1 " 启动显示状态行(1),总是显示状态行(2) 
    set foldenable  " 允许折叠 
    set foldmethod=manual " 手动折叠 
    "set background=dark "背景使用黑色 
    set nocompatible "去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限 
    " 显示中文帮助
    if version >= 603
     set helplang=cn
     set encoding=utf-8
    endif
    " 设置配色方案
    "colorscheme murphy
    "字体 
    "if (has("gui_running")) 
    " set guifont=Bitstream\ Vera\ Sans\ Mono\ 10 
    "endif 
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    """""新文件标题
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    "新建.c,.h,.sh,.java文件,自动插入文件头 
    autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()" 
    ""定义函数SetTitle,自动插入文件头 
    func SetTitle() 
     "如果文件类型为.sh文件 
     if &filetype == 'sh' 
      call setline(1,"\#########################################################################") 
      call append(line("."), "\# File Name: ".expand("%")) 
      call append(line(".")+1, "\# Author: ma6174") 
      call append(line(".")+2, "\# mail: ma6174@163.com") 
      call append(line(".")+3, "\# Created Time: ".strftime("%c")) 
      call append(line(".")+4, "\#########################################################################") 
      call append(line(".")+5, "\#!/bin/bash") 
      call append(line(".")+6, "") 
     else 
      call setline(1, "/*************************************************************************") 
      call append(line("."), " > File Name: ".expand("%")) 
      call append(line(".")+1, " > Author: ma6174") 
      call append(line(".")+2, " > Mail: ma6174@163.com ") 
      call append(line(".")+3, " > Created Time: ".strftime("%c")) 
      call append(line(".")+4, " ************************************************************************/") 
      call append(line(".")+5, "")
     endif
     if &filetype == 'cpp'
      call append(line(".")+6, "#include<iostream>")
      call append(line(".")+7, "using namespace std;")
      call append(line(".")+8, "")
     endif
     if &filetype == 'c'
      call append(line(".")+6, "#include<stdio.h>")
      call append(line(".")+7, "")
     endif
     " if &filetype == 'java'
     "  call append(line(".")+6,"public class ".expand("%"))
     "  call append(line(".")+7,"")
     " endif
     "新建文件后,自动定位到文件末尾
     autocmd BufNewFile * normal G
    endfunc 
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    "键盘命令
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    nmap <leader>w :w!<cr>
    nmap <leader>f :find<cr>
    " 映射全选+复制 ctrl+a
    map <C-A> ggVGY
    map! <C-A> <Esc>ggVGY
    map <F12> gg=G
    " 选中状态下 Ctrl+c 复制
    vmap <C-c> "+y
    "去空行 
    nnoremap <F2> :g/^\s*$/d<CR> 
    "比较文件 
    nnoremap <C-F2> :vert diffsplit 
    "新建标签 
    map <M-F2> :tabnew<CR> 
    "列出当前目录文件 
    map <F3> :tabnew .<CR> 
    "打开树状文件目录 
    map <C-F3> \be 
    "C,C++ 按F5编译运行
    map <F5> :call CompileRunGcc()<CR>
    func! CompileRunGcc()
     exec "w"
     if &filetype == 'c'
      exec "!g++ % -o %<"
      exec "! ./%<"
     elseif &filetype == 'cpp'
      exec "!g++ % -o %<"
      exec "! ./%<"
     elseif &filetype == 'java' 
      exec "!javac %" 
      exec "!java %<"
     elseif &filetype == 'sh'
      :!./%
     elseif &filetype == 'py'
      exec "!python %"
      exec "!python %<"
     endif
    endfunc
    "C,C++的调试
    map <F8> :call Rungdb()<CR>
    func! Rungdb()
     exec "w"
     exec "!g++ % -g -o %<"
     exec "!gdb ./%<"
    endfunc
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    ""实用设置
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " 设置当文件被改动时自动载入
    set autoread
    " quickfix模式
    autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr>
    "代码补全 
    set completeopt=preview,menu 
    "允许插件 
    filetype plugin on
    "共享剪贴板 
    set clipboard+=unnamed 
    "从不备份 
    set nobackup
    "make 运行
    :set makeprg=g++\ -Wall\ \ %
    "自动保存
    set autowrite
    set ruler     " 打开状态栏标尺
    set cursorline    " 突出显示当前行
    set magic     " 设置魔术
    set guioptions-=T   " 隐藏工具栏
    set guioptions-=m   " 隐藏菜单栏
    "set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
    
    " 设置在状态行显示的信息
    set foldcolumn=0
    set foldmethod=indent 
    set foldlevel=3 
    set foldenable    " 开始折叠
    " 不要使用vi的键盘模式,而是vim自己的
    set nocompatible
    " 语法高亮
    set syntax=on
    " 去掉输入错误的提示声音
    set noeb
    " 在处理未保存或只读文件的时候,弹出确认
    set confirm
    " 自动缩进
    set autoindent
    set cindent
    " Tab键的宽度
    set tabstop=4
    " 统一缩进为4
    set softtabstop=4
    set shiftwidth=4
    " 不要用空格代替制表符
    set noexpandtab
    " 在行和段开始处使用制表符
    set smarttab
    " 显示行号
    set number
    " 历史记录数
    set history=1000
    "禁止生成临时文件
    set nobackup
    set noswapfile
    "搜索忽略大小写
    set ignorecase
    "搜索逐字符高亮
    set hlsearch
    set incsearch
    "行内替换
    set gdefault
    "编码设置
    set enc=utf-8
    set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
    "语言设置
    set langmenu=zh_CN.UTF-8
    set helplang=cn
    " 我的状态行显示的内容(包括文件类型和解码)
    "set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
    "set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
    " 总是显示状态行
    set laststatus=2
    " 命令行(在状态行下)的高度,默认为1,这里是2
    set cmdheight=2
    " 侦测文件类型
    filetype on
    " 载入文件类型插件
    filetype plugin on
    " 为特定文件类型载入相关缩进文件
    filetype indent on
    " 保存全局变量
    set viminfo+=!
    " 带有如下符号的单词不要被换行分割
    set iskeyword+=_,$,@,%,#,-
    " 字符间插入的像素行数目
    set linespace=0
    " 增强模式中的命令行自动完成操作
    set wildmenu
    " 使回格键(backspace)正常处理indent, eol, start等
    set backspace=2
    " 允许backspace和光标键跨越行边界
    set whichwrap+=<,>,h,l
    " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
    set mouse=a
    set selection=exclusive
    set selectmode=mouse,key
    " 通过使用: commands命令,告诉我们文件的哪一行被改变过
    set report=0
    " 在被分割的窗口间显示空白,便于阅读
    set fillchars=vert:\ ,stl:\ ,stlnc:\
    
    " 高亮显示匹配的括号
    set showmatch
    " 匹配括号高亮的时间(单位是十分之一秒)
    set matchtime=1
    " 光标移动到buffer的顶部和底部时保持3行距离
    set scrolloff=3
    " 为C程序提供自动缩进
    set smartindent
    " 高亮显示普通txt文件(需要txt.vim脚本)
    au BufRead,BufNewFile * setfiletype txt
    "自动补全
    :inoremap ( ()<ESC>i
    :inoremap ) <c-r>=ClosePair(')')<CR>
    ":inoremap { {<CR>}<ESC>O
    ":inoremap } <c-r>=ClosePair('}')<CR>
    :inoremap [ []<ESC>i
    :inoremap ] <c-r>=ClosePair(']')<CR>
    :inoremap " ""<ESC>i
    :inoremap ' ''<ESC>i
    function! ClosePair(char)
     if getline('.')[col('.') - 1] == a:char
      return "\&;Right>"
     else
      return a:char
     endif
    endfunction
    filetype plugin indent on 
    "打开文件类型检测, 加了这句才可以用智能补全
    set completeopt=longest,menu
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    "NERDtee设定
    let NERDChristmasTree=1
    let NERDTreeAutoCenter=1
    let NERDTreeBookmarksFile=$VIM.'\Data\NerdBookmarks.txt'
    let NERDTreeMouseMode=2
    let NERDTreeShowBookmarks=1
    let NERDTreeShowFiles=1
    let NERDTreeShowHidden=1
    let NERDTreeShowLineNumbers=1
    let NERDTreeWinPos='left'
    let NERDTreeWinSize=31
    nnoremap f :NERDTreeToggle
    map <F7> :NERDTree<CR> 

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

    上一篇:开发环境Ubuntu16安装以后的初始化设置
    下一篇:docker 启动具有多个网络接口的容器的方法示例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Ubuntu下VIM配置成C++开发编辑器 Ubuntu,下,VIM,配置,成,C++,