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>
但是不行。
我试试
在前面的例子中,本地映射是全局的,它被 映射覆盖。
在本地 .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
。
我有一个按键映射
~/.vim/after/ftplugin/c.vim
nnoremap <buffer> <C-D> : ! cc % && ./a.out <CR>
我想创建一个本地配置 project/.vimrc
来覆盖旧映射
nnoremap <C-D> : ! cc % -lncurses && ./a.out <CR>
但是不行。
我试试
在前面的例子中,本地映射是全局的,它被
映射覆盖。 在本地 .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
。