(→Comments: expandtab means spaces) |
(Change <tt> to <code>, perhaps also minor tweak.) |
||
Line 3: | Line 3: | ||
|previous=1509 |
|previous=1509 |
||
|next=1511 |
|next=1511 |
||
− | |created= |
+ | |created=2007 |
|complexity=basic |
|complexity=basic |
||
|author=Datagrok |
|author=Datagrok |
||
Line 11: | Line 11: | ||
|category2= |
|category2= |
||
}} |
}} |
||
− | Many tips that you find on this site and others will tell you to add some code to your < |
+ | Many tips that you find on this site and others will tell you to add some code to your <code>.vimrc</code> file. (Or on Windows, your <code>_vimrc</code> file.) {{help|vimrc-intro}} |
Once you do this a few times, it can get pretty big and confusing, especially if the bits of configuration you are adding are each specific to a single language. Worse, some settings might be incompatible with others. |
Once you do this a few times, it can get pretty big and confusing, especially if the bits of configuration you are adding are each specific to a single language. Worse, some settings might be incompatible with others. |
||
Line 17: | Line 17: | ||
Happily, Vim has a very nice built-in way to organize and manage language-specific options by breaking them out into files and directories. You can learn all about it by reading {{help|vimfiles}}, {{help|ftplugin-overrule}}, {{help|after-directory}}. |
Happily, Vim has a very nice built-in way to organize and manage language-specific options by breaking them out into files and directories. You can learn all about it by reading {{help|vimfiles}}, {{help|ftplugin-overrule}}, {{help|after-directory}}. |
||
− | The quick way to get started is to move all the language-specific stuff from your .vimrc file into a file named < |
+ | The quick way to get started is to move all the language-specific stuff from your .vimrc file into a file named <code>.vim/ftplugin/''language''.vim</code> (or <code>$HOME/vimfiles/ftplugin/''language''.vim</code> on Windows). |
This turns a .vimrc that looks like this: |
This turns a .vimrc that looks like this: |
||
Line 51: | Line 51: | ||
</pre> |
</pre> |
||
− | If you like most of what Vim's filetype plugin is doing, but you want to override something specific, you can place your settings in < |
+ | If you like most of what Vim's filetype plugin is doing, but you want to override something specific, you can place your settings in <code>.vim/after/ftplugin/''language''.vim</code> (<code>$HOME/vimfiles/after/ftplugin/''language''.vim</code> on Windows). See {{help|after-directory}} |
− | If there is a new file extension that you want Vim to recognize, don't muck about with < |
+ | If there is a new file extension that you want Vim to recognize, don't muck about with <code>augroup</code> in your .vimrc, put the settings in the right place. See {{help|ftdetect}} |
− | There is a lot more you can do with your < |
+ | There is a lot more you can do with your <code>~/.vim</code> directory (<code>$HOME/vimfiles</code> on Windows). <code>~/.vim/compiler</code> is a good place to keep configuration that gets applied on a per-compiler basis (for example, I might need to use any of javac, jikes, ant, or make to compile and parse the compiler output for a java source file.) I also like to keep a couple color schemes in <code>~/.vim/colors</code>, and I keep notes in vimhelp format in <code>~/.vim/doc</code>. Periodically running <code>:helptags ~/.vim/doc</code> lets me jump to a tag in those notes using <code>:h</code>. {{help|helptags}} {{help|vimfiles}} |
− | This tip suggests moving language-specific settings to a suitable ftplugin file. For that to work, you need to have file type detection enabled. Enter the command < |
+ | This tip suggests moving language-specific settings to a suitable ftplugin file. For that to work, you need to have file type detection enabled. Enter the command <code>:filetype</code> to determine whether detection is enabled on your system. On some Linux distributions, file type detection is disabled, in which case you should add a command like the following to your vimrc: |
<pre> |
<pre> |
||
filetype plugin on |
filetype plugin on |
||
Line 67: | Line 67: | ||
A minor point: It's "recommended" to keep 'tabstop' at 8 when using 'expandtab', since that will ensure that the text or code looks the same way in dumb viewers and when printing. ([[User:Spiiph|Spiiph]] 13:50, 28 July 2009 (UTC)) |
A minor point: It's "recommended" to keep 'tabstop' at 8 when using 'expandtab', since that will ensure that the text or code looks the same way in dumb viewers and when printing. ([[User:Spiiph|Spiiph]] 13:50, 28 July 2009 (UTC)) |
||
− | However, the tabstop = 8 rule is nowhere near universal. |
+ | However, the tabstop = 8 rule is nowhere near universal. For instance, in Java and Python, tabs are usually 4 spaces. [[User:Meviin|Meviin]] 15:22, June 27, 2012 (UTC) |
When using 'expandtab', it should always look the same in "dumb" viewers anyway, since you're inserting spaces instead of tabs. --[[User:Fritzophrenic|Fritzophrenic]] 16:22, June 27, 2012 (UTC) |
When using 'expandtab', it should always look the same in "dumb" viewers anyway, since you're inserting spaces instead of tabs. --[[User:Fritzophrenic|Fritzophrenic]] 16:22, June 27, 2012 (UTC) |
Revision as of 06:28, 13 July 2012
created 2007 · complexity basic · author Datagrok · version 7.0
Many tips that you find on this site and others will tell you to add some code to your .vimrc
file. (Or on Windows, your _vimrc
file.) :help vimrc-intro
Once you do this a few times, it can get pretty big and confusing, especially if the bits of configuration you are adding are each specific to a single language. Worse, some settings might be incompatible with others.
Happily, Vim has a very nice built-in way to organize and manage language-specific options by breaking them out into files and directories. You can learn all about it by reading :help vimfiles, :help ftplugin-overrule, :help after-directory.
The quick way to get started is to move all the language-specific stuff from your .vimrc file into a file named .vim/ftplugin/language.vim
(or $HOME/vimfiles/ftplugin/language.vim
on Windows).
This turns a .vimrc that looks like this:
autocmd FileType * set tabstop=2|set shiftwidth=2|set noexpandtab autocmd FileType python set tabstop=4|set shiftwidth=4|set expandtab au BufEnter *.py set ai sw=4 ts=4 sta et fo=croql
Into this:
" File ~/.vimrc " ($HOME/_vimrc on Windows) " Global settings for all files (but may be overridden in ftplugin). set tabstop=2 set shiftwidth=2 set noexpandtab " File ~/.vim/ftplugin/python.vim " ($HOME/vimfiles/ftplugin/python.vim on Windows) " Python specific settings. setlocal tabstop=4 setlocal shiftwidth=4 setlocal expandtab setlocal autoindent setlocal smarttab setlocal formatoptions=croql
If there is a filetype plugin distributed with Vim that you want to completely disable, make your own (perhaps empty) settings file and adding this line:
let b:did_ftplugin = 1
If you like most of what Vim's filetype plugin is doing, but you want to override something specific, you can place your settings in .vim/after/ftplugin/language.vim
($HOME/vimfiles/after/ftplugin/language.vim
on Windows). See :help after-directory
If there is a new file extension that you want Vim to recognize, don't muck about with augroup
in your .vimrc, put the settings in the right place. See :help ftdetect
There is a lot more you can do with your ~/.vim
directory ($HOME/vimfiles
on Windows). ~/.vim/compiler
is a good place to keep configuration that gets applied on a per-compiler basis (for example, I might need to use any of javac, jikes, ant, or make to compile and parse the compiler output for a java source file.) I also like to keep a couple color schemes in ~/.vim/colors
, and I keep notes in vimhelp format in ~/.vim/doc
. Periodically running :helptags ~/.vim/doc
lets me jump to a tag in those notes using :h
. :help helptags :help vimfiles
This tip suggests moving language-specific settings to a suitable ftplugin file. For that to work, you need to have file type detection enabled. Enter the command :filetype
to determine whether detection is enabled on your system. On some Linux distributions, file type detection is disabled, in which case you should add a command like the following to your vimrc:
filetype plugin on " Alternative: use the following to also enable language-dependent indenting. filetype plugin indent on
Comments
A minor point: It's "recommended" to keep 'tabstop' at 8 when using 'expandtab', since that will ensure that the text or code looks the same way in dumb viewers and when printing. (Spiiph 13:50, 28 July 2009 (UTC))
However, the tabstop = 8 rule is nowhere near universal. For instance, in Java and Python, tabs are usually 4 spaces. Meviin 15:22, June 27, 2012 (UTC)
When using 'expandtab', it should always look the same in "dumb" viewers anyway, since you're inserting spaces instead of tabs. --Fritzophrenic 16:22, June 27, 2012 (UTC)