Я сделал некоторые дополнения к обычной среде исполнения в моей конфигурации vim. Я добавляю в rtp каталог, в котором есть каталог ftplugin , в котором у меня есть два файла: c.vim и cpp.vim . В этих файлах я определяю пару команд с одинаковым именем, но разным содержимым, которое зависит от файла, это c и cpp файл.

В cvim:

execute "nnoremap <silent> ".g:formatterTrigger." :call Formatters#Uncrustify#C()<Cr>"

В cpp.vim:

execute "nnoremap <silent> ".g:formatterTrigger." :call Formatters#Uncrustify#Cpp()<Cr>"

Но я вижу командой scriptnames что оба эти ft-файла загружены. И c.vim загружается первым, поэтому в файлах cpp у меня есть c команды. Как это решить?

2 ответа2

0

Из-за их сходства, тип файла cpp основан на c . Следовательно, оба файла поставляются, как вы уже заметили. Но это не проблема, потому что cpp one стоит последним и переопределяет c ; вы можете проверить с

:verbose execute 'nnoremap' g:formatterTrigger

В общем, это не о чем беспокоиться (если только вы не определите :map <unique> , который будет жаловаться в этом случае), и вы уже знаете такие команды, как :scriptnames для устранения этой проблемы.

0

Не используйте для этого runtimepath , вам нужен каталог after (:h after-directory).

Поместите эти два файла в ~/.vim/after/ftplugin .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .