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> autocmd!文件类型*.c nnoremap cc:!gcc-o%:p:r% 自动驾驶!文件类型*.c nnoremap cr:!gcc-o%:p:r%:!%:p:r 自动驾驶!文件类型*.cpp*.cc nnoremap cc:!g++-o%:p:r% 自动驾驶!文件类型*.cpp*.cc nnoremap cr:!g++-o%:p:r%:!%:p:r

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> autocmd!文件类型*.c nnoremap cc:!gcc-o%:p:r% 自动驾驶!文件类型*.c nnoremap cr:!gcc-o%:p:r%:!%:p:r 自动驾驶!文件类型*.cpp*.cc nnoremap cc:!g++-o%:p:r% 自动驾驶!文件类型*.cpp*.cc nnoremap cr:!g++-o%:p:r%:!%:p:r,vim,Vim,我这样修改了它,它成功了: 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++

我这样修改了它,它成功了:

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>
autocmd!文件类型c nnoremap cc:!gcc-o%:p:r%
自动驾驶!文件类型c nnoremap cr:!gcc-o%:p:r%:!%:p:r
自动驾驶!文件类型cpp nnoremap cc:!g++-o%:p:r%
自动驾驶!文件类型cpp nnoremap cr:!g++-o%:p:r%:!%:p:r

文件类型自动命令使用要匹配的文件类型,而不是文件名。您可以改为使用c和cpp。请参见
:h文件类型
。但是,您的问题并不止于此:

  • 这些是全局映射。如果打开一个c文件,映射就会改变。打开一个cpp文件,无论您在哪个缓冲区中,映射都会更改。改用
    nnoremap
    。请参见
    :h:map local
  • 使用
    autocmd没有组<代码>自动MD将删除以前定义的所有代码并添加到当前自动命令中。最好使用
    augroup
    创建一个组

  • 您也可以选择使用
    %谢谢。将这些东西放入ftplugin目录是可取的,但是vim似乎无法识别cpp.vim,并且当打开一个cpp文件时,它会将c.vim作为源文件,并忽略前者。还有其他解决方法吗?我已经做了一个快速测试,在创建ftplugin
    ~/.vim/ftplugin/cpp.vim
    时没有问题。如果您想查看源代码,可以查看
    :scriptnames
    …了解您对“已工作”的有限理解。请参阅Peter Rincker的答案,了解与此相关的其余问题。
    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