Home Explore Blog CI



neovim

5th chunk of `runtime/doc/filetype.txt`
72b877f5fe5c42ea4fca44564c4933904063fb760a98308e0000000100000fa3
	/usr/local/share/vim/vim82/plugin/  ~

Note that the last one is the value of $VIMRUNTIME which has been expanded.

Note that when using a plugin manager or |packages| many directories will be
added to 'runtimepath'.  These plugins each require their own directory, don't
put them directly in ~/.config/nvim/plugin.

What if it looks like your plugin is not being loaded?  You can find out what
happens when Vim starts up by using the |-V| argument: >

	vim -V2

You will see a lot of messages, in between them is a remark about loading the
plugins.  It starts with:

	Searching for "plugin/**/*.vim" in ~

There you can see where Vim looks for your plugin scripts.

==============================================================================
2. Filetype plugin					*filetype-plugins*

When loading filetype plugins has been enabled |:filetype-plugin-on|, options
will be set and mappings defined.  These are all local to the buffer, they
will not be used for other files.

Defining mappings for a filetype may get in the way of the mappings you
define yourself.  There are a few ways to avoid this:
1. Set the "maplocalleader" variable to the key sequence you want the mappings
   to start with.  Example: >
	:let maplocalleader = ","
<  All mappings will then start with a comma instead of the default, which
   is a backslash.  Also see |<LocalLeader>|.

2. Define your own mapping.  Example: >
	:map ,p <Plug>MailQuote
<  You need to check the description of the plugin file below for the
   functionality it offers and the string to map to.
   You need to define your own mapping before the plugin is loaded (before
   editing a file of that type).  The plugin will then skip installing the
   default mapping.
					*no_mail_maps* *g:no_mail_maps*
3. Disable defining mappings for a specific filetype by setting a variable,
   which contains the name of the filetype.  For the "mail" filetype this
   would be: >
	:let no_mail_maps = 1
<					*no_plugin_maps* *g:no_plugin_maps*
4. Disable defining mappings for all filetypes by setting a variable: >
	:let no_plugin_maps = 1
<

							*ftplugin-overrule*
If a global filetype plugin does not do exactly what you want, there are three
ways to change this:

1. Add a few settings.
   You must create a new filetype plugin in a directory early in
   'runtimepath'.  For Unix, for example you could use this file: >
	vim ~/.config/nvim/ftplugin/fortran.vim
<   You can set those settings and mappings that you would like to add.  Note
   that the global plugin will be loaded after this, it may overrule the
   settings that you do here.  If this is the case, you need to use one of the
   following two methods.

2. Make a copy of the plugin and change it.
   You must put the copy in a directory early in 'runtimepath'.  For Unix, for
   example, you could do this: >
	cp $VIMRUNTIME/ftplugin/fortran.vim ~/.config/nvim/ftplugin/fortran.vim
<   Then you can edit the copied file to your liking.  Since the b:did_ftplugin
   variable will be set, the global plugin will not be loaded.
   A disadvantage of this method is that when the distributed plugin gets
   improved, you will have to copy and modify it again.

3. Overrule the settings after loading the global plugin.
   You must create a new filetype plugin in a directory from the end of
   'runtimepath'.  For Unix, for example, you could use this file: >
	vim ~/.config/nvim/after/ftplugin/fortran.vim
<   In this file you can change just those settings that you want to change.

==============================================================================
3.  Docs for the default filetype plugins.		*ftplugin-docs*


					*plugin_exec* *g:plugin_exec*
Enable executing of external commands.  This was done historically for e.g.
the perl filetype plugin (and a few others) to set the search path.
Disabled by default for security reasons: >
	:let g:plugin_exec = 1
It is also possible to enable this only for certain filetypes: >
	:let g:<filetype>_exec = 1
So to enable this only for

Title: Filetype Plugins: Customization and Overriding
Summary
This section discusses how to customize filetype plugins in Vim. It covers how to avoid conflicts with user-defined mappings by setting `maplocalleader` or disabling mappings. It details three methods to modify global filetype plugins: adding settings in a new ftplugin file, making a copy of the plugin, or overruling settings after loading the global plugin using a file in the 'after' directory. Finally, it explains how to enable the execution of external commands for certain filetype plugins for functionalities like setting the search path.