我试图让g++作为一个函数在vim>中运行,原因是当我试图执行s:compile_run_cpp()函数时,vim会抛出一个E81错误。
function! s:compile_run_cpp() abort
let src_path = expand('%:p:~')
let src_noext = expand('%:p:~:r')
" The building flags
let _flag = '-Wall -Wextra -std=c++11 -O2'
if executable('clang++')
let prog = 'clang++'
elseif executable('g++')
let prog = 'g++'
else
echoerr 'No compiler found!'
endif
call s:create_term_buf('v', 80)
execute printf('term %s %s %s -o %s && %s', prog, _flag, src_path, src_noext, src_noext)
startinsert
endfunction
function s:create_term_buf(_type, size) abort
set splitbelow
set splitright
if a:_type ==# 'v'
vnew
else
new
endif
execute 'resize ' . a:size
endfunction发布于 2022-01-06 03:51:09
如果您使用的是autoload而不是.vimrc,那么将您的函数名改为filename#function_name,例如:如果您的文件名是compile.vim,函数名是compile_run_cpp,那么函数名将是compile#compile_run_cpp,那么您可以很容易地用:call compile#compile_run_cpp()调用它
function! compile#compile_run_cpp() abort
let src_path = expand('%:p:~')
let src_noext = expand('%:p:~:r')
" The building flags
let _flag = '-Wall -Wextra -std=c++11 -O2'
if executable('clang++')
let prog = 'clang++'
elseif executable('g++')
let prog = 'g++'
else
echoerr 'No compiler found!'
endif
call s:create_term_buf('v', 80)
execute printf('term %s %s %s -o %s && %s', prog, _flag, src_path, src_noext, src_noext)
startinsert
endfunction
function s:create_term_buf(_type, size) abort
set splitbelow
set splitright
if a:_type ==# 'v'
vnew
else
new
endif
execute 'resize ' . a:size
endfunction如果您使用的是.vimrc
试着改变这个:
call s:create_term_buf('v', 80)对此:
call <SID>create_term_buf('v', 80)注意:
其他程序员使用的用于函数命名的
Create_term_bufcompile_run_cpp.范围。
https://stackoverflow.com/questions/70569858
复制相似问题