我在init.vim中为float term插件做了if else条件的映射,但是出现了错误

时间:2020-10-11 09:47:19

标签: vim editor vim-plugin neovim

对于obj = NewClass("hi") obj.msg //will print Hi 中名为neovim的插件,您实际上根本不需要知道该插件,这只是我从使用条件语句进行映射时得到的错误,我想进行如下所示的条件映射,如果我在功能上做错了,请编写正确的功能。

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

对于javascript

float-term

对于c

nnoremap <F5> :FloatermNew node %<CR>

对于c ++

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

对于python

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

现在我希望所有这些都可以使用一个快捷键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

任何人都可以修复错误吗?或者如果我完全不赞成这种方法,那么谁能定义新的方法

1 个答案:

答案 0 :(得分:0)

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>