Linux 下用 VIM 编译 Cpp 代码时如何读取数据文件?

2014-09-01 22:05:45 +08:00
 razrlele
之前一直用的 ./a.out < data.txt
最近把VIM改了一下直接F5编译运行, 从网上参考的方法如下:

:autocmd BufRead,BufNewFile *.dot map <F5> :w<CR>:!dot -Tjpg -o %<.jpg % && eog %<.jpg <CR><CR> && exec "redr!"

"Compile C&C++ with F5
map <F5> : call CompileRunGcc()<CR>
func! CompileRunGcc()
exec "w"
if &filetype == 'c'
exec "!gcc % -o ~/build/%<"
exec "!time ~/build/%< <"
elseif &filetype == 'cpp'
exec "!g++ % -o ~/build/%<"
exec "!time ~/build/%<"
endif
endfunc

但是这样就不不知道在F5按下去的时候自动运行并且自动加载数据文件了, 直接在后面加< data.txt好像不行

然后我又想办法在代码里面添加文件读取操作, 但是又发现用freopen的话
我是 freopen("data.txt", "r", stdin);
每次直接数据读取完却不执行程序, 用fstream 的话
fstream fin;
fin.open("data.txt");
又不能成功读取数据...
请问该如何正确实现VIM 快捷键编译运行的同时还能读取数据?
2404 次点击
所在节点    问与答
2 条回复
ChiangDi
2014-09-01 22:21:12 +08:00
你按下F5的时候就已经编译了,再加<data.txt 当然不行。
razrlele
2014-09-01 22:31:42 +08:00
@ChiangDi exec "!time ~/build/%< <" 这一句应该是执行吧 为什么不能加 < data.txt?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/131167

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX