ubuntu下使用Vim学习C++

来源:互联网 发布:视频混合软件 编辑:程序博客网 时间:2024/05/28 04:55

安装

开发环境:

  系统:ubuntu 16.04LTS。

  工具:Vim7.4

  编译,链接,运行:g++

  现在贴上Vim的安装命令:
  

sudo apt-get install vim-gtk//or sudo apt-get install vim

简易配置

sudo vim /etc/vim/vimrc

imput this in the last columns

这里写代码片

set nu                           // 在左侧行号set tabstop                  //tab 长度设置为 4set nobackup               //覆盖文件时不备份"set smartindent set cursorline               //突出显示当前行set ruler                       //在右下角显示光标位置的状态行set autoindent             //自动缩进

编译C++

vim demo.cpp:wqg++ ./demo.cpp./a.out

配置Gvim/vim。

用于Gvim 或 Vim 配置文件的一键编译与运行函数(注:需要机器上安装了GCC才行, minGW)
本代码只加入了对C/C++的编译与运行,如果要加入其语言的可以参考此代码加入即可
同时,本代码加入了对Windows下用Gvim编译UTF-8编码格式的源文件时中文乱码的解
决方法(也就是在编译选项中加入了 “-fexec-charset=gbk”)。
将上面的代码加入到_vimrc文件里即可

"------------------------------------------------------------------------------"  < 判断操作系统是否是 Windows 还是 Linux >"------------------------------------------------------------------------------if(has("win32") || has("win64") || has("win95") || has("win16"))    let g:iswindows = 1else    let g:iswindows = 0endif"------------------------------------------------------------------------------"  < 判断是终端还是 Gvim >"------------------------------------------------------------------------------if has("gui_running")    let g:isGUI = 1else    let g:isGUI = 0endif"------------------------------------------------------------------------------"  < 编译、连接、运行配置 >"------------------------------------------------------------------------------" F9 一键保存、编译、连接存并运行map <F9> :call Run()<CR>imap <F9> <ESC>:call Run()<CR>" Ctrl + F9 一键保存并编译map <c-F9> :call Compile()<CR>imap <c-F9> <ESC>:call Compile()<CR>" Ctrl + F10 一键保存并连接map <c-F10> :call Link()<CR>imap <c-F10> <ESC>:call Link()<CR>let s:LastShellReturn_C = 0let s:LastShellReturn_L = 0let s:ShowWarning = 1let s:Obj_Extension = '.o'let s:Exe_Extension = '.exe'let s:Sou_Error = 0let s:windows_CFlags = 'gcc\ -fexec-charset=gbk\ -Wall\ -g\ -O0\ -c\ %\ -o\ %<.o'let s:linux_CFlags = 'gcc\ -Wall\ -g\ -O0\ -c\ %\ -o\ %<.o'let s:windows_CPPFlags = 'g++\ -fexec-charset=gbk\ -Wall\ -g\ -O0\ -c\ %\ -o\ %<.o'let s:linux_CPPFlags = 'g++\ -Wall\ -g\ -O0\ -c\ %\ -o\ %<.o'func! Compile()    exe ":ccl"    exe ":update"    if expand("%:e") == "c" || expand("%:e") == "cpp" || expand("%:e") == "cxx"        let s:Sou_Error = 0        let s:LastShellReturn_C = 0        let Sou = expand("%:p")        let Obj = expand("%:p:r").s:Obj_Extension        let Obj_Name = expand("%:p:t:r").s:Obj_Extension        let v:statusmsg = ''        if !filereadable(Obj) || (filereadable(Obj) && (getftime(Obj) < getftime(Sou)))            redraw!            if expand("%:e") == "c"                if g:iswindows                    exe ":setlocal makeprg=".s:windows_CFlags                else                    exe ":setlocal makeprg=".s:linux_CFlags                endif                echohl WarningMsg | echo " compiling..."                silent make            elseif expand("%:e") == "cpp" || expand("%:e") == "cxx"                if g:iswindows                    exe ":setlocal makeprg=".s:windows_CPPFlags                else                    exe ":setlocal makeprg=".s:linux_CPPFlags                endif                echohl WarningMsg | echo " compiling..."                silent make            endif            redraw!            if v:shell_error != 0                let s:LastShellReturn_C = v:shell_error            endif            if g:iswindows                if s:LastShellReturn_C != 0                    exe ":bo cope"                    echohl WarningMsg | echo " compilation failed"                else                    if s:ShowWarning                        exe ":bo cw"                    endif                    echohl WarningMsg | echo " compilation successful"                endif            else                if empty(v:statusmsg)                    echohl WarningMsg | echo " compilation successful"                else                    exe ":bo cope"                endif            endif        else            echohl WarningMsg | echo ""Obj_Name"is up to date"        endif    else        let s:Sou_Error = 1        echohl WarningMsg | echo " please choose the correct source file"    endif    exe ":setlocal makeprg=make"endfuncfunc! Link()    call Compile()    if s:Sou_Error || s:LastShellReturn_C != 0        return    endif    let s:LastShellReturn_L = 0    let Sou = expand("%:p")    let Obj = expand("%:p:r").s:Obj_Extension    if g:iswindows        let Exe = expand("%:p:r").s:Exe_Extension        let Exe_Name = expand("%:p:t:r").s:Exe_Extension    else        let Exe = expand("%:p:r")        let Exe_Name = expand("%:p:t:r")    endif    let v:statusmsg = ''    if filereadable(Obj) && (getftime(Obj) >= getftime(Sou))        redraw!        if !executable(Exe) || (executable(Exe) && getftime(Exe) < getftime(Obj))            if expand("%:e") == "c"                setlocal makeprg=gcc\ -o\ %<\ %<.o                echohl WarningMsg | echo " linking..."                silent make            elseif expand("%:e") == "cpp" || expand("%:e") == "cxx"                setlocal makeprg=g++\ -o\ %<\ %<.o                echohl WarningMsg | echo " linking..."                silent make            endif            redraw!            if v:shell_error != 0                let s:LastShellReturn_L = v:shell_error            endif            if g:iswindows                if s:LastShellReturn_L != 0                    exe ":bo cope"                    echohl WarningMsg | echo " linking failed"                else                    if s:ShowWarning                        exe ":bo cw"                    endif                    echohl WarningMsg | echo " linking successful"                endif            else                if empty(v:statusmsg)                    echohl WarningMsg | echo " linking successful"                else                    exe ":bo cope"                endif            endif        else            echohl WarningMsg | echo ""Exe_Name"is up to date"        endif    endif    setlocal makeprg=makeendfuncfunc! Run()    let s:ShowWarning = 0    call Link()    let s:ShowWarning = 1    if s:Sou_Error || s:LastShellReturn_C != 0 || s:LastShellReturn_L != 0        return    endif    let Sou = expand("%:p")    let Obj = expand("%:p:r").s:Obj_Extension    if g:iswindows        let Exe = expand("%:p:r").s:Exe_Extension    else        let Exe = expand("%:p:r")    endif    if executable(Exe) && getftime(Exe) >= getftime(Obj) && getftime(Obj) >= getftime(Sou)        redraw!        echohl WarningMsg | echo " running..."        if g:iswindows            exe ":!%<.exe"        else            if g:isGUI                exe ":!gnome-terminal -e ./%<"            else                exe ":!./%<"            endif        endif        redraw!        echohl WarningMsg | echo " running finish"    endifendfunc
0 0
原创粉丝点击