我正在尝试将vim设置为在编辑器中编译和运行c和c ++程序,但这些似乎不起作用:
autocmd! filetype *.c nnoremap <leader>cc :!gcc -o %:p:r %<cr>
autocmd! filetype *.c nnoremap <leader>cr :!gcc -o %:p:r %<cr>:!%:p:r<cr>
autocmd! filetype *.cpp *.cc nnoremap <leader>cc :!g++ -o %:p:r %<cr>
autocmd! filetype *.cpp *.cc nnoremap <leader>cr :!g++ -o %:p:r %<cr>:!%:p:r<cr>
答案 0 :(得分:12)
FileType自动命令使用文件类型而不是文件名来匹配。您可以改为使用c和cpp。见:h FileType
。但是你的问题并没有就此结束:
nnoremap <buffer>
。请参阅:h :map-local
autocmd!
。 autocmd!
将删除之前定义的所有内容,并添加当前的自动命令。最好使用augroup
创建一个组。%<
代替%:r
。:h ftplugin
和:h after-directory
所有在一起:
augroup CBuild
autocmd!
autocmd filetype c nnoremap <buffer> <leader>cc :!gcc -o %:p:r %<cr>
autocmd filetype c nnoremap <buffer> <leader>cr :!gcc -o %:p:r %<cr>:!%:p:r<cr>
autocmd filetype cpp nnoremap <buffer> <leader>cc :!g++ -o %:p:r %<cr>
autocmd filetype cpp nnoremap <buffer> <leader>cr :!g++ -o %:p:r %<cr>:!%:p:r<cr>
augroup END
答案 1 :(得分:0)
我用这种方式对其进行了修改并且有效:
autocmd! filetype c nnoremap <leader>cc :!gcc -o %:p:r %<cr>
autocmd! filetype c nnoremap <leader>cr :!gcc -o %:p:r %<cr>:!%:p:r<cr>
autocmd! filetype cpp nnoremap <leader>cc :!g++ -o %:p:r %<cr>
autocmd! filetype cpp nnoremap <leader>cr :!g++ -o %:p:r %<cr>:!%:p:r<cr>