Verwenden Sie ein einzelnes ftplugin für mehr als einen Dateityp

10

Ich habe ein ftplugin, unter &runtimepath/ftplugin/c.vimdem alle meine bevorzugten Optionen für c-Dateien festgelegt sind. Ich möchte jedoch auch die gleichen Einstellungen für cppDateien verwenden. Ich könnte die Einstellungen einfach kopieren, aber das scheint überflüssig. Gibt es eine Möglichkeit, ein ftplugin für mehr als einen Dateityp zu laden?

Immergrüner Baum
quelle

Antworten:

10

Das Standard-Ftplugin ( /usr/share/vim/vim74/ftplugin/cpp.vimauf meinem System) sollte dies bereits tun:

" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
  finish
endif

" Behaves just like C
runtime! ftplugin/c.vim ftplugin/c_*.vim ftplugin/c/*.vim

runtimesollte relativ sein zu runtimepath:

Es kann mehrere {file}Argumente geben, die durch Leerzeichen getrennt sind. Jedes {file}wird im ersten Verzeichnis von 'runtimepath', dann im zweiten Verzeichnis usw. gesucht .

Wenn ich ein erstelle ~/.vim/ftplugin/c.vim, wird dies auch für C ++ - Dateien ausgeführt, ohne etwas zu tun!

Wenn Sie diese Datei nicht in Ihrer Vim-Version haben, können Sie ~/.vim/ftplugin/cpp.vimmit der runtime!Anweisung eine neue Datei erstellen .


Wenn Sie sich auf einem UNIX-y-System befinden, können Sie einen Symlink verwenden:

$ ln -s ~/.vim/ftplugin/c.vim ~/.vim/ftplugin/cpp.vim
Martin Tournoij
quelle
Ah, das habe ich nicht bemerkt! Gute Beobachtung. Ich würde die Laufzeitlösung verwenden, wenn ich dies für andere Dateitypen benötige.
EvergreenTree
1

Innerhalb von cpp.vim setzen Sie:

source <sfile>:h/c.vim

<sfile>Erweitert sich auf die aktuell bezogene Datei und :hbedeutet den Kopf davon.

run_the_race
quelle
Da gibt es nichts zu tun. Wie Martin erklärte, werden C ftplugins automatisch für C ++
Luc Hermitte
Mehr für andere Leser, z. B. make .scss, wurde genauso behandelt wie .css usw.
run_the_race
Dann :runtime! ftplugin/css*.vim ftplugin/css/*.vimwäre IMO eine bessere Lösung , es sei denn, Sie möchten eine ganz bestimmte Datei laden .
Luc Hermitte