linux vim编译器修改为强大的IDE

Linux VIM
修改 vim 编译器
在根目录下创建 .vimrc 文件,将下面代码复制上去并保存即可。
在 root 目录下创建 .vimrc 文件,这样以管理员身份写代码也可以了
备注:(此 VIM 文本编译器需要先安装 linux  环境下的 python 以及 G++ 编译器)
我的 vim 配置主要有以下优点:
1. 按 F5 可以直接编译并执行 C 、 C++ 、 python 、 java 代码以及执行 shell 脚本,按 “F8” 可进行 C 、 C++ 代码的调试
2. 自动插入文件头 ,新建 C 、 C++ 、 python 、 java 、 shell 源文件时自动插入表头:包括文件名、作者、联系方式、建立时间等,读者可根
据需求自行更改
3. 映射 “Ctrl + A” 为全选并复制快捷键,方便复制代码
4. 按 “F2” 可以直接消除代码中的空行
5.“F3” 可列出当前目录文件,打开树状文件目录
6.  支持鼠标选择、方向键移动
7.  代码高亮,自动缩进,显示行号,显示状态行
8. 按 “Ctrl + P” 可自动补全
9.[] 、 {} 、 () 、 "" 、 ' ' 等都自动补全
10. 其他功能读者可以研究以下文件
code:
map :call SaveInputData()
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,*.py exec ":call SetTitle()"
"" 定义函数 SetTitle ,自动插入文件头
func SetTitle()
" 如果文件类型为 .sh 文件
if &filetype == 'sh'
call setline(1,"\#########################################################################")
call append(line("."), "\# File Name: ".expand("%"))
call append(line(".")+1, "\# Author: delong qi")
call append(line(".")+2, "\# mail: [email protected]")
call append(line(".")+3, "\# Created Time: ".strftime("%c"))
call append(line(".")+4, "\#########################################################################")
call append(line(".")+5, "\#!/bin/bash")
call append(line(".")+6, "")
endif
if &filetype == 'python'
call setline(1, "#*************************************************************************")
call append(line("."), "# >File Name: ".expand("%"))
call append(line(".")+1, "# >Author: delong qi")
call append(line(".")+2, "# >mail: [email protected]")
call append(line(".")+3, "#************************************************************************/")
call append(line(".")+4, "")
call append(line(".")+5, "#!/bin/usr/env python ")
call append(line(".")+6, "# -*-coding:UTF-8 -*- ")
call append(line(".")+7, "")
endif
if &filetype == 'cpp'
call setline(1, "/*************************************************************************")
call append(line("."), " > File Name: ".expand("%"))
call append(line(".")+1, " > Author: ma6174")
call append(line(".")+1, " > Author: delong qi")
call append(line(".")+2, " > Mail: [email protected] ")
call append(line(".")+4, " ************************************************************************/")
call append(line(".")+5, "")
call append(line(".")+6, "#include")
call append(line(".")+7, "using namespace std;")
call append(line(".")+8, "")
endif
if &filetype == 'c'
call setline(1, "/*************************************************************************")
call append(line("."), " > File Name: ".expand("%"))
call append(line(".")+1, " > Author: delong qi")
call append(line(".")+2, " > Mail: [email protected] ")
call append(line(".")+3, " > Created Time: ".strftime("%c"))
call append(line(".")+4, " ************************************************************************/")
call append(line(".")+5, "")
call append(line(".")+6, "#include")
call append(line(".")+7, "")
endif
if &filetype == 'java'
call setline(1, "/*************************************************************************")
call append(line("."), " > File Name: ".expand("%"))
call append(line(".")+1, " > Author: delong qi")
call append(line(".")+2, " > Mail: [email protected] ")
call append(line(".")+3, " > Created Time: ".strftime("%c"))
call append(line(".")+4, " ************************************************************************/")
call append(line(".")+5, "")
call append(line(".")+6,"public class ".expand("%"))
call append(line(".")+7,"")
endif
" 新建文件后,自动定位到文件末尾
autocmd BufNewFile * normal G
endfunc
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 键盘命令
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
nmap w :w!
nmap f :find
"  映射全选 + 复制 ctrl+a
map ggVGY
map! ggVGY
map gg=G
"  选中状态下 Ctrl+c  复制
vmap "+y
" 去空行
nnoremap :g/^\s*$/d
" 比较文件
nnoremap :vert diffsplit
" 新建标签
map :tabnew
" 列出当前目录文件
map :tabnew .
" 打开树状文件目录
map \be
"C , C++  按 F5 编译运行
map :call CompileRunGcc()
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 == 'python'
exec "!python %"
exec "!python %<"
endif
endfunc
"C,C++ 的调试
map :call Rungdb()
func! Rungdb()
exec "w"
exec "!g++ % -g -o %<"
exec "!gdb ./%<"
endfunc
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"" 实用设置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"  设置当文件被改动时自动载入
set autoread
" quickfix 模式
autocmd FileType c,cpp map :w:make
" 代码补全
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 ( ()i
:inoremap ) =ClosePair(')')
":inoremap { {}O
":inoremap } =ClosePair('}')
:inoremap [ []i
:inoremap ] =ClosePair(']')
:inoremap " ""i
:inoremap ' ''i
function! ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "\"
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 :NERDTree

你可能感兴趣的:(C语言,C++,vim,linux,python,c,c)