首页 > 解决方案 > Vim:如何使用本地目录 .vimrc 覆盖文件类型定义的键映射地图?

问题描述

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

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

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

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

但它不起作用。

我试试

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

  2. 在本地 .vimrc 中,映射 <buffer> <CD> ...,但它只覆盖第一个打开文件的键映射。

这个怎么做 ?

标签: vim

解决方案


应在以下内容之后执行显式自动命令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


推荐阅读