Find what filetype is loaded in vim

Vim

Vim Problem Overview


As soon as I load any file in vim, It'll try to detect the file and color-highlight it if possible.

I want to know a vim command that will tell me which ftplugin or Filetype plugin / filetype is vim considering to highlight the file.

Vim Solutions


Solution 1 - Vim

:set filetype?

Solution 2 - Vim

&filetype for script usage

Minimal example:

echo &filetype

More realistic usage example:

if &filetype ==# 'c' || &filetype ==# 'cpp'
  setlocal noexpandtab
endif

& syntax works for all options: https://vi.stackexchange.com/questions/2569/how-do-i-check-the-value-of-a-vim-option-in-vimscript

Solution 3 - Vim

You can also add the filetype to your status line or window title using the %y and %Y items. See

:help 'statusline'
:help 'titlestring'

Solution 4 - Vim

When I wanted to find the filetype it was because I was having the .ipy extension modifying an ipython script. The above Q&A worked great to see that the ipython extension was not being treated as python (somewhat obvious). Thus I wanted to force set the filetype, and I found this from the ever helfpul vim site. http://vim.wikia.com/wiki/Forcing_Syntax_Coloring_for_files_with_odd_extensions

Adding the below to your .vimrc works

au BufRead,BufNewFile *.ipy set filetype=python

Solution 5 - Vim

Since you are asking/searching this question in the first place, I assume you do this because your vim somehow does not highlight the proper syntax for you automatically, and you are trying to figure out why, and how to fix it.

The command :set filetype? in the chosen answer basically asks vim "hey what type do you think the current file is". And if vim is not displaying proper color/highlighting, most likely its answer to you is displaying this filetype= at the bottom of your console, meaning vim does not know the file type. This is only halfway of your quest.

Logically, your next step will be telling vim "just highlight it using (for example) ps1 syntax". You do so by typing :set filetype=ps1, now vim will highlight the current file using ps1 style (providing that you already download the proper powershell syntax file and put it into your ~/.vim/syntax).

At this point, you will probably want auto-syntax-highlight from now on. The solution is to put a corresponding detection script into your ~/.vim/ftdetect folder. For example, if you want to highlight all PowerShell scripts .ps1, .psm1, etc., you put this file into your ~/.vim/ftdetect

Now that is a happy ending.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionruturajView Question on Stackoverflow
Solution 1 - VimhobbsView Answer on Stackoverflow
Solution 2 - VimCiro Santilli Путлер Капут 六四事View Answer on Stackoverflow
Solution 3 - VimNefrubyrView Answer on Stackoverflow
Solution 4 - VimPaulView Answer on Stackoverflow
Solution 5 - VimRayLuoView Answer on Stackoverflow