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?

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

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.