Vim: 如何使用本地目录.vimrc 覆盖文件类型<buffer> 映射定义的键映射?

Vim: How to use local directory .vimrc to override key mapping defined by file type <buffer> map?

我有一个按键映射 ~/.vim/after/ftplugin/c.vim

nnoremap <buffer> <C-D> : ! cc % && ./a.out <CR>

我想创建一个本地配置 project/.vimrc 来覆盖旧映射

nnoremap <C-D> : ! cc % -lncurses && ./a.out <CR>

但是不行。

我试试

  1. 在前面的例子中,本地映射是全局的,它被 映射覆盖。

  2. 在本地 .vimrc , map ... , 但它只会覆盖第一个打开文件的键映射。

如何操作?

显式自动命令应该在 after/ftplugin/c.vim:

的内容之后执行
augroup c_overrides
autocmd!
autocmd! BufNewFile,BufRead *.c nnoremap ...
augroup END

或:

augroup c_overrides
autocmd!
autocmd! FileType c nnoremap ...
augroup END

但您真正应该做的是将项目特定的命令放入 Makefile 并在每个项目中使用 :make %

参见 :help :make