Vim autocmd无法使用nnoremap

我正在尝试设置 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>

解决方法

FileType自动命令使用文件类型而不是文件名来匹配.您可以改为使用c和cpp.请参阅:h FileType.但是你的问题并没有就此结束:

>这些是全局映射.那里打开一个c文件,映射改变了.打开一个cpp文件,无论你使用什么缓冲区,映射都会改变.使用nnoremap< buffer>代替.请参阅:h:map-local
>使用autocmd!没有一个团体.自动命令!将删除所有先前定义的并添加当前自动命令.最好用augroup创建一个组.
>您可以选择使用%<而不是%:r.
>您可能还想考虑将其推入ftplugin或/ ftplugin变体之后. :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

相关文章

解决方案:解决linux下vim乱码的情况:(修改vimrc的内容)全...
Linuxvi/vim所有的UnixLike系统都会内建vi文书编辑器,其他的...
      vim正则匹配:空行:/^$/  /^[\t]*$/注释...
$select-editorSelectaneditor.Tochangelater,run'sele...
上次手贱忘了保存,这次就简单做个备忘吧,把踩过的坑记一下...
Linux之文本编译器小结vim的优势所有的UNIX-LIKE习通都会内置...