初学vim的时候,曾经使用的一个功能,现在明白了写法原理,小小重构记录一下
原理
vimscript是一门脚本语言,定义了vim的各种配置行为,本文功能的实现即使用vimscript编写函数,并且配置函数的调用映射,来达到在vim中编译运行C/C++的目的
func! SingleCompile()
exec "w"
let compile_cmd="!g++"
if &filetype == "c"
compilecmd ="!gcc"
endif
let compile_arg=" -o %< "
if search("thread")
let compile_arg .= " -lpthread "
endif
exec compile_cmd." % ".compile_arg
exec "! ./%<"
endfunc
nnoremap <F1> :call SingleCompile()<cr>
参数解释
exec "w"
表示保存缓冲区
" -o %< "
%表示当前文件名, %< 表示没有后缀的文件名
.=
字符串拼接 类似于 C++中的 +=
search函数查找文本内含有的关键字,或者头文件,从而判断用不用链接一些动态库
exec compile_cmd." % ".compile_arg
等同于 g++/gcc $filename.cpp -o filename -l…
nnoremap <F1> :call SingleCompile()<cr>
最后映射一个非递归的normal模式下的映射,即按F1调用SingleCompile函数
其他
看懂了如何编译运行C/C++ 同理,java go等也可以自定义写了