vim c / c ++ skrip ftplugin

0

Saya membuat beberapa tambahan ke runtime biasa dalam konfigurasi vim saya. Saya menambahkan ke rtpdirektori di mana ada ftplugindirektori, di mana saya memiliki dua file: c.vimdan cpp.vim. Dalam file-file ini saya menentukan beberapa perintah dengan nama yang sama tetapi konten berbeda yang tergantung pada file, apakah itu file c dan cpp.

Di c.vim:

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

Di cpp.vim:

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

Tapi saya melihat dengan scriptnamesperintah bahwa kedua file ft ini dimuat. Dan c.vim dimuat pertama jadi dalam file cpp saya punya perintah c. Bagaimana cara mengatasinya?

pengguna14416
sumber

Jawaban:

0

Jangan gunakan runtimepathitu, afterdirektori ( :h after-directory) adalah yang Anda butuhkan.

Tempatkan kedua file ~/.vim/after/ftplugin.

romainl
sumber
Masalahnya adalah vim memuat c.vim dan cpp.vim untuk sumber cpp.
user14416
Apakah Anda mencobanya sebelum menulis komentar itu? Karena Anda menggunakan pintasan yang sama ( g:formatterTrigger), pemetaan cpp menimpa pemetaan c sehingga Anda hanya mendapatkan pemetaan cpp di cpp dan hanya pemetaan c di c.
romainl
0

Karena kesamaan mereka, filetype cpp didasarkan pada yang c . Karena itu, kedua file tersebut bersumber, seperti yang telah Anda catat. Tapi itu tidak masalah, karena cpp yang datang terakhir, dan akan menimpa c satu; Anda bisa memeriksanya

:verbose execute 'nnoremap' g:formatterTrigger

Secara umum, ini tidak perlu dikhawatirkan (kecuali Anda mendefinisikan :map <unique>, yang akan mengeluh dalam kasus itu), dan Anda sudah tahu perintah ingin :scriptnamesmemecahkan masalah ini.

Ingo Karkat
sumber