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