ruturaj
ruturaj

Reputation: 3453

Find out what filetype is loaded in Vim

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 Vim considers to highlight the file.

Upvotes: 306

Views: 118340

Answers (6)

Eduardo Bray
Eduardo Bray

Reputation: 91

As has already been said, :set filetype? show the current syntax, but to redetect the file syntax this is the command:

:filetype detect

More info on:

:h filetype-detect

Upvotes: 3

&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

Upvotes: 50

RayLuo
RayLuo

Reputation: 19230

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.

Upvotes: 6

Paul
Paul

Reputation: 7325

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

Upvotes: 5

Nefrubyr
Nefrubyr

Reputation: 7074

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

:help 'statusline'
:help 'titlestring'

Upvotes: 17

hobbs
hobbs

Reputation: 239881

:set filetype?

Upvotes: 493

Related Questions