Vim: Как использовать локальный каталог .vimrc для переопределения сопоставления ключей, определенного типом файла карта?

#vim

Вопрос:

У меня есть ключевое сопоставление в ~/.vim/after/ftplugin/c.vim

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

Я хочу создать локальную конфигурацию project/.vimrc , чтобы переопределить старое сопоставление

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

Но это не сработает.

Я стараюсь

  1. в предыдущем примере локальная карта является глобальной, она переопределяется отображением <буфер>.
  2. в local .vimrc сопоставьте <буфер> <буфер><C-D> …<C-D> , но это переопределяет только сопоставление ключей первого открытого файла.

Как это сделать ?

Ответ №1:

Явные автокоманды должны выполняться после содержимого 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 .

Комментарии:

1. Спасибо! Это моя потребность. Я просто хочу, чтобы быстро выполнялась команда. Файл Makefile используется для более крупного проекта.