xref: /vim-8.2.3635/runtime/doc/filetype.txt (revision 6e649224)
1*filetype.txt*  For Vim version 8.2.  Last change: 2021 Sep 22
2
3
4		  VIM REFERENCE MANUAL    by Bram Moolenaar
5
6
7Filetypes						*filetype* *file-type*
8
91. Filetypes					|filetypes|
102. Filetype plugin				|filetype-plugins|
113. Docs for the default filetype plugins.	|ftplugin-docs|
12
13Also see |autocmd.txt|.
14
15
16==============================================================================
171. Filetypes					*filetypes* *file-types*
18
19Vim can detect the type of file that is edited.  This is done by checking the
20file name and sometimes by inspecting the contents of the file for specific
21text.
22
23							*:filetype* *:filet*
24To enable file type detection, use this command in your vimrc: >
25	:filetype on
26Each time a new or existing file is edited, Vim will try to recognize the type
27of the file and set the 'filetype' option.  This will trigger the FileType
28event, which can be used to set the syntax highlighting, set options, etc.
29
30NOTE: Filetypes and 'compatible' don't work together well, since being Vi
31compatible means options are global.  Resetting 'compatible' is recommended,
32if you didn't do that already.
33
34Detail: The ":filetype on" command will load one of these files:
35		Amiga	    $VIMRUNTIME/filetype.vim
36		Mac	    $VIMRUNTIME:filetype.vim
37		MS-Windows  $VIMRUNTIME\filetype.vim
38		Unix	    $VIMRUNTIME/filetype.vim
39		VMS	    $VIMRUNTIME/filetype.vim
40	This file is a Vim script that defines autocommands for the
41	BufNewFile and BufRead events.  If the file type is not found by the
42	name, the file $VIMRUNTIME/scripts.vim is used to detect it from the
43	contents of the file.
44	When the GUI is running or will start soon, the |menu.vim| script is
45	also sourced.  See |'go-M'| about avoiding that.
46
47To add your own file types, see |new-filetype| below.  To search for help on a
48filetype prepend "ft-" and optionally append "-syntax", "-indent" or
49"-plugin".  For example: >
50	:help ft-vim-indent
51	:help ft-vim-syntax
52	:help ft-man-plugin
53
54If the file type is not detected automatically, or it finds the wrong type,
55you can either set the 'filetype' option manually, or add a modeline to your
56file.  Example, for an IDL file use the command: >
57	:set filetype=idl
58
59or add this |modeline| to the file:
60	/* vim: set filetype=idl : */ ~
61
62						*:filetype-plugin-on*
63You can enable loading the plugin files for specific file types with: >
64	:filetype plugin on
65If filetype detection was not switched on yet, it will be as well.
66This actually loads the file "ftplugin.vim" in 'runtimepath'.
67The result is that when a file is edited its plugin file is loaded (if there
68is one for the detected filetype). |filetype-plugin|
69
70						*:filetype-plugin-off*
71You can disable it again with: >
72	:filetype plugin off
73The filetype detection is not switched off then.  But if you do switch off
74filetype detection, the plugins will not be loaded either.
75This actually loads the file "ftplugof.vim" in 'runtimepath'.
76
77						*:filetype-indent-on*
78You can enable loading the indent file for specific file types with: >
79	:filetype indent on
80If filetype detection was not switched on yet, it will be as well.
81This actually loads the file "indent.vim" in 'runtimepath'.
82The result is that when a file is edited its indent file is loaded (if there
83is one for the detected filetype). |indent-expression|
84
85						*:filetype-indent-off*
86You can disable it again with: >
87	:filetype indent off
88The filetype detection is not switched off then.  But if you do switch off
89filetype detection, the indent files will not be loaded either.
90This actually loads the file "indoff.vim" in 'runtimepath'.
91This disables auto-indenting for files you will open.  It will keep working in
92already opened files.  Reset 'autoindent', 'cindent', 'smartindent' and/or
93'indentexpr' to disable indenting in an opened file.
94
95						*:filetype-off*
96To disable file type detection, use this command: >
97	:filetype off
98This will keep the flags for "plugin" and "indent", but since no file types
99are being detected, they won't work until the next ":filetype on".
100
101
102Overview:					*:filetype-overview*
103
104command				detection	plugin		indent ~
105:filetype on			on		unchanged	unchanged
106:filetype off			off		unchanged	unchanged
107:filetype plugin on		on		on		unchanged
108:filetype plugin off		unchanged	off		unchanged
109:filetype indent on		on		unchanged	on
110:filetype indent off		unchanged	unchanged	off
111:filetype plugin indent on	on		on		on
112:filetype plugin indent off	unchanged	off		off
113
114To see the current status, type: >
115	:filetype
116The output looks something like this: >
117	filetype detection:ON  plugin:ON  indent:OFF
118
119The file types are also used for syntax highlighting.  If the ":syntax on"
120command is used, the file type detection is installed too.  There is no need
121to do ":filetype on" after ":syntax on".
122
123To disable one of the file types, add a line in your filetype file, see
124|remove-filetype|.
125
126							*filetype-detect*
127To detect the file type again: >
128	:filetype detect
129Use this if you started with an empty file and typed text that makes it
130possible to detect the file type.  For example, when you entered this in a
131shell script: "#!/bin/csh".
132   When filetype detection was off, it will be enabled first, like the "on"
133argument was used.
134
135							*filetype-overrule*
136When the same extension is used for two filetypes, Vim tries to guess what
137kind of file it is.  This doesn't always work.  A number of global variables
138can be used to overrule the filetype used for certain extensions:
139
140	file name	variable ~
141	*.asa		g:filetype_asa	|ft-aspvbs-syntax| |ft-aspperl-syntax|
142	*.asp		g:filetype_asp	|ft-aspvbs-syntax| |ft-aspperl-syntax|
143	*.asm		g:asmsyntax	|ft-asm-syntax|
144	*.prg		g:filetype_prg
145	*.pl		g:filetype_pl
146	*.inc		g:filetype_inc
147	*.w		g:filetype_w	|ft-cweb-syntax|
148	*.i		g:filetype_i	|ft-progress-syntax|
149	*.m		g:filetype_m	|ft-mathematica-syntax|
150	*.p		g:filetype_p	|ft-pascal-syntax|
151	*.pp		g:filetype_pp	|ft-pascal-syntax|
152	*.sh		g:bash_is_sh	|ft-sh-syntax|
153	*.tex		g:tex_flavor	|ft-tex-plugin|
154
155							*filetype-ignore*
156To avoid that certain files are being inspected, the g:ft_ignore_pat variable
157is used.  The default value is set like this: >
158	:let g:ft_ignore_pat = '\.\(Z\|gz\|bz2\|zip\|tgz\)$'
159This means that the contents of compressed files are not inspected.
160
161							*new-filetype*
162If a file type that you want to use is not detected yet, there are four ways
163to add it.  In any way, it's better not to modify the $VIMRUNTIME/filetype.vim
164file.  It will be overwritten when installing a new version of Vim.
165
166A. If you want to overrule all default file type checks.
167   This works by writing one file for each filetype.  The disadvantage is that
168   there can be many files.  The advantage is that you can simply drop this
169   file in the right directory to make it work.
170							*ftdetect*
171   1. Create your user runtime directory.  You would normally use the first
172      item of the 'runtimepath' option.  Then create the directory "ftdetect"
173      inside it.  Example for Unix: >
174	:!mkdir ~/.vim
175	:!mkdir ~/.vim/ftdetect
176<
177   2. Create a file that contains an autocommand to detect the file type.
178      Example: >
179	au BufRead,BufNewFile *.mine		set filetype=mine
180<     Note that there is no "augroup" command, this has already been done
181      when sourcing your file.  You could also use the pattern "*" and then
182      check the contents of the file to recognize it.
183      Write this file as "mine.vim" in the "ftdetect" directory in your user
184      runtime directory.  For example, for Unix: >
185	:w ~/.vim/ftdetect/mine.vim
186
187<  3. To use the new filetype detection you must restart Vim.
188
189   The files in the "ftdetect" directory are used after all the default
190   checks, thus they can overrule a previously detected file type.  But you
191   can also use |:setfiletype| to keep a previously detected filetype.
192
193B. If you want to detect your file after the default file type checks.
194
195   This works like A above, but instead of setting 'filetype' unconditionally
196   use ":setfiletype".  This will only set 'filetype' if no file type was
197   detected yet.  Example: >
198	au BufRead,BufNewFile *.txt		setfiletype text
199<
200   You can also use the already detected file type in your command.  For
201   example, to use the file type "mypascal" when "pascal" has been detected: >
202	au BufRead,BufNewFile *		if &ft == 'pascal' | set ft=mypascal
203								       | endif
204
205C. If your file type can be detected by the file name.
206   1. Create your user runtime directory.  You would normally use the first
207      item of the 'runtimepath' option.  Example for Unix: >
208	:!mkdir ~/.vim
209<
210   2. Create a file that contains autocommands to detect the file type.
211      Example: >
212	" my filetype file
213	if exists("did_load_filetypes")
214	  finish
215	endif
216	augroup filetypedetect
217	  au! BufRead,BufNewFile *.mine		setfiletype mine
218	  au! BufRead,BufNewFile *.xyz		setfiletype drawing
219	augroup END
220<     Write this file as "filetype.vim" in your user runtime directory.  For
221      example, for Unix: >
222	:w ~/.vim/filetype.vim
223
224<  3. To use the new filetype detection you must restart Vim.
225
226   Your filetype.vim will be sourced before the default FileType autocommands
227   have been installed.  Your autocommands will match first, and the
228   ":setfiletype" command will make sure that no other autocommands will set
229   'filetype' after this.
230							*new-filetype-scripts*
231D. If your filetype can only be detected by inspecting the contents of the
232   file.
233
234   1. Create your user runtime directory.  You would normally use the first
235      item of the 'runtimepath' option.  Example for Unix: >
236	:!mkdir ~/.vim
237<
238   2. Create a vim script file for doing this.  Example: >
239	if did_filetype()	" filetype already set..
240	  finish		" ..don't do these checks
241	endif
242	if getline(1) =~ '^#!.*\<mine\>'
243	  setfiletype mine
244	elseif getline(1) =~? '\<drawing\>'
245	  setfiletype drawing
246	endif
247<     See $VIMRUNTIME/scripts.vim for more examples.
248      Write this file as "scripts.vim" in your user runtime directory.  For
249      example, for Unix: >
250	:w ~/.vim/scripts.vim
251<
252   3. The detection will work right away, no need to restart Vim.
253
254   Your scripts.vim is loaded before the default checks for file types, which
255   means that your rules override the default rules in
256   $VIMRUNTIME/scripts.vim.
257
258						*remove-filetype*
259If a file type is detected that is wrong for you, install a filetype.vim or
260scripts.vim to catch it (see above).  You can set 'filetype' to a non-existing
261name to avoid that it will be set later anyway: >
262	:set filetype=ignored
263
264If you are setting up a system with many users, and you don't want each user
265to add/remove the same filetypes, consider writing the filetype.vim and
266scripts.vim files in a runtime directory that is used for everybody.  Check
267the 'runtimepath' for a directory to use.  If there isn't one, set
268'runtimepath' in the |system-vimrc|.  Be careful to keep the default
269directories!
270
271
272						*autocmd-osfiletypes*
273NOTE: this code is currently disabled, as the RISC OS implementation was
274removed.  In the future this will use the 'filetype' option.
275
276On operating systems which support storing a file type with the file, you can
277specify that an autocommand should only be executed if the file is of a
278certain type.
279
280The actual type checking depends on which platform you are running Vim
281on; see your system's documentation for details.
282
283To use osfiletype checking in an autocommand you should put a list of types to
284match in angle brackets in place of a pattern, like this: >
285
286	:au BufRead *.html,<&faf;HTML>  runtime! syntax/html.vim
287
288This will match:
289
290- Any file whose name ends in ".html"
291- Any file whose type is "&faf" or "HTML", where the meaning of these types
292  depends on which version of Vim you are using.
293  Unknown types are considered NOT to match.
294
295You can also specify a type and a pattern at the same time (in which case they
296must both match): >
297
298	:au BufRead <&fff>diff*
299
300This will match files of type "&fff" whose names start with "diff".
301
302
303							*plugin-details*
304The "plugin" directory can be in any of the directories in the 'runtimepath'
305option.  All of these directories will be searched for plugins and they are
306all loaded.  For example, if this command: >
307
308	set runtimepath
309
310produces this output:
311
312	runtimepath=/etc/vim,~/.vim,/usr/local/share/vim/vim82 ~
313
314then Vim will load all plugins in these directories and below:
315
316	/etc/vim/plugin/  ~
317	~/.vim/plugin/  ~
318	/usr/local/share/vim/vim82/plugin/  ~
319
320Note that the last one is the value of $VIMRUNTIME which has been expanded.
321
322Note that when using a plugin manager or |packages| many directories will be
323added to 'runtimepath'.  These plugins each require their own directory, don't
324put them directly in ~/.vim/plugin.
325
326What if it looks like your plugin is not being loaded?  You can find out what
327happens when Vim starts up by using the |-V| argument: >
328
329	vim -V2
330
331You will see a lot of messages, in between them is a remark about loading the
332plugins.  It starts with:
333
334	Searching for "plugin/**/*.vim" in ~
335
336There you can see where Vim looks for your plugin scripts.
337
338==============================================================================
3392. Filetype plugin					*filetype-plugins*
340
341When loading filetype plugins has been enabled |:filetype-plugin-on|, options
342will be set and mappings defined.  These are all local to the buffer, they
343will not be used for other files.
344
345Defining mappings for a filetype may get in the way of the mappings you
346define yourself.  There are a few ways to avoid this:
3471. Set the "maplocalleader" variable to the key sequence you want the mappings
348   to start with.  Example: >
349	:let maplocalleader = ","
350<  All mappings will then start with a comma instead of the default, which
351   is a backslash.  Also see |<LocalLeader>|.
352
3532. Define your own mapping.  Example: >
354	:map ,p <Plug>MailQuote
355<  You need to check the description of the plugin file below for the
356   functionality it offers and the string to map to.
357   You need to define your own mapping before the plugin is loaded (before
358   editing a file of that type).  The plugin will then skip installing the
359   default mapping.
360						*no_mail_maps*
3613. Disable defining mappings for a specific filetype by setting a variable,
362   which contains the name of the filetype.  For the "mail" filetype this
363   would be: >
364	:let no_mail_maps = 1
365<						*no_plugin_maps*
3664. Disable defining mappings for all filetypes by setting a variable: >
367	:let no_plugin_maps = 1
368<
369
370							*ftplugin-overrule*
371If a global filetype plugin does not do exactly what you want, there are three
372ways to change this:
373
3741. Add a few settings.
375   You must create a new filetype plugin in a directory early in
376   'runtimepath'.  For Unix, for example you could use this file: >
377	vim ~/.vim/ftplugin/fortran.vim
378<  You can set those settings and mappings that you would like to add.  Note
379   that the global plugin will be loaded after this, it may overrule the
380   settings that you do here.  If this is the case, you need to use one of the
381   following two methods.
382
3832. Make a copy of the plugin and change it.
384   You must put the copy in a directory early in 'runtimepath'.  For Unix, for
385   example, you could do this: >
386	cp $VIMRUNTIME/ftplugin/fortran.vim ~/.vim/ftplugin/fortran.vim
387<  Then you can edit the copied file to your liking.  Since the b:did_ftplugin
388   variable will be set, the global plugin will not be loaded.
389   A disadvantage of this method is that when the distributed plugin gets
390   improved, you will have to copy and modify it again.
391
3923. Overrule the settings after loading the global plugin.
393   You must create a new filetype plugin in a directory from the end of
394   'runtimepath'.  For Unix, for example, you could use this file: >
395	vim ~/.vim/after/ftplugin/fortran.vim
396<  In this file you can change just those settings that you want to change.
397
398==============================================================================
3993.  Docs for the default filetype plugins.		*ftplugin-docs*
400
401
402AWK							*ft-awk-plugin*
403
404Support for features specific to GNU Awk, like @include, can be enabled by
405setting: >
406	let g:awk_is_gawk = 1
407
408
409CHANGELOG						*ft-changelog-plugin*
410
411Allows for easy entrance of Changelog entries in Changelog files.  There are
412some commands, mappings, and variables worth exploring:
413
414Options:
415'comments'		is made empty to not mess up formatting.
416'textwidth'		is set to 78, which is standard.
417'formatoptions'		the 't' flag is added to wrap when inserting text.
418
419Commands:
420NewChangelogEntry	Adds a new Changelog entry in an intelligent fashion
421			(see below).
422
423Local mappings:
424<Leader>o		Starts a new Changelog entry in an equally intelligent
425			fashion (see below).
426
427Global mappings:
428			NOTE: The global mappings are accessed by sourcing the
429			ftplugin/changelog.vim file first, e.g. with >
430				runtime ftplugin/changelog.vim
431<			in your |.vimrc|.
432<Leader>o		Switches to the ChangeLog buffer opened for the
433			current directory, or opens it in a new buffer if it
434			exists in the current directory.  Then it does the
435			same as the local <Leader>o described above.
436
437Variables:
438g:changelog_timeformat  Deprecated; use g:changelog_dateformat instead.
439g:changelog_dateformat	The date (and time) format used in ChangeLog entries.
440			The format accepted is the same as for the
441			|strftime()| function.
442			The default is "%Y-%m-%d" which is the standard format
443			for many ChangeLog layouts.
444g:changelog_username	The name and email address of the user.
445			The default is deduced from environment variables and
446			system files.  It searches /etc/passwd for the comment
447			part of the current user, which informally contains
448			the real name of the user up to the first separating
449			comma.  then it checks the $NAME environment variable
450			and finally runs `whoami` and `hostname` to build an
451			email address.  The final form is >
452				Full Name  <user@host>
453<
454g:changelog_new_date_format
455			The format to use when creating a new date-entry.
456			The following table describes special tokens in the
457			string:
458				%%	insert a single '%' character
459				%d	insert the date from above
460				%u	insert the user from above
461                                %p	insert result of b:changelog_entry_prefix
462				%c	where to position cursor when done
463			The default is "%d  %u\n\n\t* %p%c\n\n", which produces
464			something like (| is where cursor will be, unless at
465			the start of the line where it denotes the beginning
466			of the line) >
467				|2003-01-14  Full Name  <user@host>
468				|
469				|        * prefix|
470<
471g:changelog_new_entry_format
472			The format used when creating a new entry.
473			The following table describes special tokens in the
474			string:
475                                %p	insert result of b:changelog_entry_prefix
476				%c	where to position cursor when done
477			The default is "\t*%c", which produces something
478			similar to >
479				|        * prefix|
480<
481g:changelog_date_entry_search
482			The search pattern to use when searching for a
483			date-entry.
484			The same tokens that can be used for
485			g:changelog_new_date_format can be used here as well.
486			The default is '^\s*%d\_s*%u' which finds lines
487			matching the form >
488				|2003-01-14  Full Name  <user@host>
489<			and some similar formats.
490
491g:changelog_date_end_entry_search
492			The search pattern to use when searching for the end
493			of a date-entry.
494			The same tokens that can be used for
495			g:changelog_new_date_format can be used here as well.
496			The default is '^\s*$' which finds lines that contain
497			only whitespace or are completely empty.
498
499b:changelog_name					*b:changelog_name*
500			Name of the ChangeLog file to look for.
501			The default is 'ChangeLog'.
502
503b:changelog_path
504			Path of the ChangeLog to use for the current buffer.
505			The default is empty, thus looking for a file named
506			|b:changelog_name| in the same directory as the
507			current buffer.  If not found, the parent directory of
508			the current buffer is searched.  This continues
509			recursively until a file is found or there are no more
510			parent directories to search.
511
512b:changelog_entry_prefix
513			Name of a function to call to generate a prefix to a
514			new entry.  This function takes no arguments and
515			should return a string containing the prefix.
516			Returning an empty prefix is fine.
517			The default generates the shortest path between the
518			ChangeLog's pathname and the current buffers pathname.
519			In the future, it will also be possible to use other
520			variable contexts for this variable, for example, g:.
521
522The Changelog entries are inserted where they add the least amount of text.
523After figuring out the current date and user, the file is searched for an
524entry beginning with the current date and user and if found adds another item
525under it.  If not found, a new entry and item is prepended to the beginning of
526the Changelog.
527
528
529FORTRAN							*ft-fortran-plugin*
530
531Options:
532'expandtab'	is switched on to avoid tabs as required by the Fortran
533		standards unless the user has set fortran_have_tabs in .vimrc.
534'textwidth'	is set to 72 for fixed source format as required by the
535		Fortran standards and to 80 for free source format.
536'formatoptions' is set to break code and comment lines and to preserve long
537		lines.  You can format comments with |gq|.
538For further discussion of fortran_have_tabs and the method used for the
539detection of source format see |ft-fortran-syntax|.
540
541
542GIT COMMIT                                              *ft-gitcommit-plugin*
543
544One command, :DiffGitCached, is provided to show a diff of the current commit
545in the preview window.  It is equivalent to calling "git diff --cached" plus
546any arguments given to the command.
547
548GPROF							*ft-gprof-plugin*
549
550The gprof filetype plugin defines a mapping <C-]> to jump from a function
551entry in the gprof flat profile or from a function entry in the call graph
552to the details of that function in the call graph.
553
554The mapping can be disabled with: >
555	let g:no_gprof_maps = 1
556
557MAIL							*ft-mail-plugin*
558
559Options:
560'modeline'	is switched off to avoid the danger of trojan horses, and to
561		avoid that a Subject line with "Vim:" in it will cause an
562		error message.
563'textwidth'	is set to 72.  This is often recommended for e-mail.
564'formatoptions'  is set to break text lines and to repeat the comment leader
565		in new lines, so that a leading ">" for quotes is repeated.
566		You can also format quoted text with |gq|.
567
568Local mappings:
569<LocalLeader>q   or   \\MailQuote
570	Quotes the text selected in Visual mode, or from the cursor position
571	to the end of the file in Normal mode.  This means "> " is inserted in
572	each line.
573
574MAN					*ft-man-plugin* *:Man* *man.vim*
575
576This plugin displays a manual page in a nice way.  See |find-manpage| in the
577user manual for more information.
578
579To start using the |:Man| command before any manual page has been loaded,
580source this script from your startup |vimrc| file: >
581	runtime ftplugin/man.vim
582
583Options:
584'iskeyword'	The '.' character is added to support the use of CTRL-] on the
585		manual page name.
586
587Commands:
588Man {name}	Display the manual page for {name} in a window.
589Man {number} {name}
590		Display the manual page for {name} in a section {number}.
591
592Global mapping:
593<Leader>K	Displays the manual page for the word under the cursor.
594<Plug>ManPreGetPage
595		idem, allows for using a mapping: >
596			nmap <F1> <Plug>ManPreGetPage
597
598Local mappings:
599CTRL-]		Jump to the manual page for the word under the cursor.
600CTRL-T		Jump back to the previous manual page.
601q		Same as the |:quit| command.
602
603To use a vertical split instead of horizontal: >
604	let g:ft_man_open_mode = 'vert'
605To use a new tab: >
606	let g:ft_man_open_mode = 'tab'
607
608To enable |folding|, use this: >
609	let g:ft_man_folding_enable = 1
610If you do not like the default folding, use an |autocommand| to add your desired
611folding style instead.  For example: >
612	autocmd FileType man setlocal foldmethod=indent foldenable
613
614If you would like :Man {number} {name} to behave like man {number} {name} by
615not running man {name} if no page is found, then use this: >
616	let g:ft_man_no_sect_fallback = 1
617
618You may also want to set 'keywordprg' to make the |K| command open a manual
619page in a Vim window: >
620	set keywordprg=:Man
621
622
623MANPAGER				      *manpager.vim*
624
625The |:Man| command allows you to turn Vim into a manpager (that syntax highlights
626manpages and follows linked manpages on hitting CTRL-]).
627
628For bash,zsh,ksh or dash, add to the config file (.bashrc,.zshrc, ...)
629
630	export MANPAGER="vim -M +MANPAGER -"
631
632For (t)csh, add to the config file
633
634	setenv MANPAGER "vim -M +MANPAGER -"
635
636For fish, add to the config file
637
638	set -x MANPAGER "vim -M +MANPAGER -"
639
640
641MARKDOWN                                                *ft-markdown-plugin*
642
643To enable folding use this: >
644	let g:markdown_folding = 1
645<
646
647PDF							*ft-pdf-plugin*
648
649Two maps, <C-]> and <C-T>, are provided to simulate a tag stack for navigating
650the PDF.  The following are treated as tags:
651
652- The byte offset after "startxref" to the xref table
653- The byte offset after the /Prev key in the trailer to an earlier xref table
654- A line of the form "0123456789 00000 n" in the xref table
655- An object reference like "1 0 R" anywhere in the PDF
656
657These maps can be disabled with >
658	:let g:no_pdf_maps = 1
659<
660
661PYTHON						*ft-python-plugin* *PEP8*
662
663By default the following options are set, in accordance with PEP8: >
664
665	setlocal expandtab shiftwidth=4 softtabstop=4 tabstop=8
666
667To disable this behavior, set the following variable in your vimrc: >
668
669	let g:python_recommended_style = 0
670
671
672QF QUICKFIX					    *qf.vim* *ft-qf-plugin*
673
674The "qf" filetype is used for the quickfix window, see |quickfix-window|.
675
676The quickfix filetype plugin includes configuration for displaying the command
677that produced the quickfix list in the |status-line|. To disable this setting,
678configure as follows: >
679	:let g:qf_disable_statusline = 1
680
681
682R MARKDOWN						*ft-rmd-plugin*
683
684By default ftplugin/html.vim is not sourced. If you want it sourced, add to
685your |vimrc|: >
686	let rmd_include_html = 1
687
688The 'formatexpr' option is set dynamically with different values for R code
689and for Markdown code. If you prefer that 'formatexpr' is not set, add to your
690|vimrc|: >
691	let rmd_dynamic_comments = 0
692
693
694R RESTRUCTURED TEXT					*ft-rrst-plugin*
695
696The 'formatexpr' option is set dynamically with different values for R code
697and for ReStructured text. If you prefer that 'formatexpr' is not set, add to
698your |vimrc|: >
699	let rrst_dynamic_comments = 0
700
701
702RESTRUCTUREDTEXT					*ft-rst-plugin*
703
704The following formatting setting are optionally available: >
705	setlocal expandtab shiftwidth=3 softtabstop=3 tabstop=8
706
707To enable this behavior, set the following variable in your vimrc: >
708	let g:rst_style = 1
709
710
711RPM SPEC						*ft-spec-plugin*
712
713Since the text for this plugin is rather long it has been put in a separate
714file: |pi_spec.txt|.
715
716
717RUST							*ft-rust*
718
719Since the text for this plugin is rather long it has been put in a separate
720file: |ft_rust.txt|.
721
722
723SQL							*ft-sql*
724
725Since the text for this plugin is rather long it has been put in a separate
726file: |ft_sql.txt|.
727
728
729TEX						*ft-tex-plugin* *g:tex_flavor*
730
731If the first line of a *.tex file has the form >
732	%&<format>
733then this determined the file type:  plaintex (for plain TeX), context (for
734ConTeXt), or tex (for LaTeX).  Otherwise, the file is searched for keywords to
735choose context or tex.  If no keywords are found, it defaults to plaintex.
736You can change the default by defining the variable g:tex_flavor to the format
737(not the file type) you use most.  Use one of these: >
738	let g:tex_flavor = "plain"
739	let g:tex_flavor = "context"
740	let g:tex_flavor = "latex"
741Currently no other formats are recognized.
742
743
744VIM							*ft-vim-plugin*
745
746The Vim filetype plugin defines mappings to move to the start and end of
747functions with [[ and ]].  Move around comments with ]" and [".
748
749The mappings can be disabled with: >
750	let g:no_vim_maps = 1
751
752
753ZIMBU							*ft-zimbu-plugin*
754
755The Zimbu filetype plugin defines mappings to move to the start and end of
756functions with [[ and ]].
757
758The mappings can be disabled with: >
759	let g:no_zimbu_maps = 1
760<
761
762
763 vim:tw=78:ts=8:noet:ft=help:norl:
764