I've used Vim on and off for a long time. I got introduced to it at University by a lecturer, tried it, didn't get it, and moved on. I then decided to learn it more seriously and spent a lot of time configuring it, as my dotfiles repository shows. It's on 1203 commits!

Often in Vim you'll want to have different settings for different filetypes. Foexample I want to configure Markdown files to have spell-check turned on at all times, but when I'm coding I don't care for spell-check being on.

In the past I would have done this with an autocmd:

autocmd FileType markdown setlocal spell spelllang=en_gb

But then your vimrc (or init.vim for Neovim users like me!) gets cluttered with these and it's hard to keep up, or find exactly where you configured those Markdown settings.

Instead, you can use ftplugins for this case! A ftplugin is a file type plugin that will be run automatically when Vim detects you're editing a file of that type.

So instead of cluttering up my vimrc with autocmd lines, I can instead create ~/.config/nvim/ftplugin/markdown.vim with the settings I want in:

setlocal spell spelllang=en_gb

If you're using Vim, not Neovim, you can create ~/.vim/ftplugin/markdown.vim.

This keeps my vimrc tidy, and my dotfiles easier to manage. It's very straightforward to remember which settings I've applied globally (they are in my vimrc) or per-filetype, in which case I can dive into my ftplugins folder.