vim 一鍵編譯JAVA,c++__JAVA

來源:互聯網
上載者:User

參考:http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html
以及vim協助文檔
用這段代碼可以實現f5編譯

"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'        :!./%    endifendfunc

但是實際使用中會出現一個問題,就是編譯JAVA的時候,會告訴找不到類。
在vim中使用命令:pwd查看當前工作目錄,發現目前的目錄是在使用者目錄下而不是工作目錄。也就是說,首先得進入了當前工作目錄才能使用這個指令碼。
vim中可以使用“%”代表當前檔案路徑,以及使用一些參數提取需要的內容
下面內容來自vim協助文檔

Examples, when the file name is "src/version.c", current dir"/home/mool/vim": >  :p            /home/mool/vim/src/version.c  :p:.                     src/version.c  :p:~              ~/vim/src/version.c  :h                       src  :p:h          /home/mool/vim/src  :p:h:h        /home/mool/vim  :t                       version.c  :p:t                     version.c  :r                       src/version  :p:r          /home/mool/vim/src/version  :t:r                     version  :e                           c  :s?version?main?             src/main.c  :s?version?main?:p    /home/mool/vim/src/main.c  :p:gs?/?\\?       \home\mool\vim\src\version.cExamples, when the file name is "src/version.c.gz": >  :p            /home/mool/vim/src/version.c.gz  :e                             gz  :e:e                         c.gz  :e:e:e                       c.gz  :e:e:r                       c  :r                       src/version.c  :r:e                         c  :r:r                     src/version  :r:r:r                   src/version

所以,可以用

:cd %:p:h

進入當前工作目錄。注意vim中使用“:!”可以使用命令列命令,但是如果cd前面加了!就會發現編譯的時候路徑被重設了。不要加!才可以更改工作目錄。
將下面代碼加入.vimrc就可以實現f5編譯了

map <F5> :call CompileRunGcc()<CR>imap <F5> <ESC>:call CompileRunGcc()<CR>func! CompileRunGcc()    exec "w"    exec "cd %:p:h"    if &filetype == 'c'        exec "!g++ % -o %<"        exec "! ./%<"    elseif &filetype == 'cpp'        exec "!g++ % -o %<"        exec "! ./%<"    elseif &filetype == 'java'         exec "!javac %"         exec "!java %<"    elseif &filetype == 'sh'        :!./%    endifendfunc

map只是單純的映射,如果在插入模式下按F5就會變成在文檔中插入F5而不執行函數。所以使用下面一行imap表示插入模式下的映射

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.