vimのF5でC++を無理やりコンパイル&実行
プロジェクトなどでコンパイル方法はまちまちなのでmain.cppの一行目のshell scriptをF5で実行できるようにした.
背景
pythonのようにC++を手軽に実行させたかっただけ
ubuntu 18.04を使っています
できること
main.cppの一行目のコメントをbashで実行する.
たとえば
main.cpp
/* make main && ./main */#include <iostream>
intmain(intargc,char*argv[]){std::cout<<"Hello World"<<std::endl;return0;}
を作成しvimのノーマルモードでF5を押すとHello Worldが実行できる.
やったこと
vimrcに以下の一行を追加
~/.vimrc
autocmd BufEnter,BufRead,BufNewFile *.cpp setfiletype cpp
~/.vim/ftplugin/cpp.vimを作成.
以下を追加
~/.vim/ftplugin/cpp.vim
nmap <F5>:!f=$(find . \|grep \/main\.cpp$ \| head -n 1) ; echo $f; [ -f ./$f]&& cat $f \| head -n1 \| sed -e"s/\/\*//g" \| sed -e"s/\*\///g" \|/bin/bash <CR>
その他
- vimを開くパスより下のディレクトリにmain.cppがないと実行できない
- てきとう実装のため, ./*のワイルドカードが使えません. 使いたい方はうまい感じでsedを変更してください
- 単にスクリプトを実行するため, 1行目を
/*cd build && make && ./main */
とか環境にあったものにすればmakefileやcmake などにも一応対応できる - いい感じのプラグインがあるか調べるのがめんどかったため作っただけなのでいい感じのものがあったら教えてください.