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

今天小编就为大家分享一篇关于Ubuntu下VIM配置成C++开发编辑器,小编觉得内容挺不错的,现在分

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

今天小编就为大家分享一篇关于Ubuntu下VIM配置成C++开发编辑器,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

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

sudo cp /etc/vim/vimrc /home/wangy/.vimrc
sudo mkdir /home/wangy/.vim
sudo mkdir /home/wangy/.vim/bundle
sudo mkdir /home/wangy/.vim/bundle/vundle

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>

总结

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

本文为网络共享文章,如有侵权请联系邮箱485837881@qq.com

作者: 刀剑の神君

为您推荐

返回顶部