我在 init.vim 中使用 if else 条件为 float term 插件做了映射,但出现错误
i did mapping with if else condition in init.vim for float term plugin but got an error
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
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>
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
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>