我在init.vim中为float term插件使用if-else条件进行了映射,但出现了一个错误



对于neovim中名为float-term的插件,实际上你根本不需要知道这个插件,这只是我用条件语句映射时出错,我想做下面这样的条件映射,如果我在函数中做错了什么,请写正确的函数。

如果你认为我的整个方法是错误的,那也可能发生,那么给我正确的路径

对于javascript

nnoremap <F5> :FloatermNew node %<CR>

对于c

nnoremap <F5> :FloatermNew gcc % && ./a.out<CR>

对于c++

nnoremap <F5> :FloatermNew g++ % && ./a.out<CR>

对于python

nnoremap <F5> :Floaterm python3 %<CR>

现在我希望所有这些都使用一个快捷方式F5

我这样做了,但出现了一个错误

nnoremap <expr> <F5> My_mapping()
function! My_mapping
if &filetype ==# 'c'
nnoremap <F5>:FloatermNew gcc % && ./a.out <CR>
elseif &filetype ==# 'c++'
nnoremap <F5>:FloatermNew g++ % && ./a.out <CR>
elseif &filetype ==# 'js'
nnoremap <F5>:FloatermNew node % <CR>
elseif &filetype ==# 'py'
nnoremap <F5>:FloatermNew python3 % <CR>
else
nnoremap <F5><CR>
endif
endfunction

错误

Error detected while processing /home/visrut/.config/nvim/init.vim:
line  208:
E123: Undefined function: My_mapping
n  <F5>        * My_mapping()
line  220:
E193: :endfunction not inside a function

有人能修复错误吗?或者,如果我对这种方法完全错误,那么有人能定义新的方法来实现这一点吗

autocmd FileType javascript nnoremap <buffer> <F5> :w<esc>:FloatermNew node %<CR>
autocmd FileType c nnoremap <buffer> <F5> :w<esc>:FloatermNew gcc % && ./a.out && rm a.out<CR>
autocmd FileType cpp nnoremap <buffer> <F5> :w<esc>:FloatermNew g++ % && ./a.out && rm a.out<CR>
autocmd FileType python nnoremap <buffer> <F5> :w<esc>:FloatermNew python3 %<CR>
autocmd FileType typescript nnoremap <buffer> <F5> :w<esc>:FloatermNew ts-node %<CR>

相关内容

  • 没有找到相关文章

最新更新