DEV Community


A Simple (Yet Powerful) Tip on Git and Vim

jovica profile image jovica ・1 min read

Here's a tip you might find useful if you work with git and you use Vim. I recently came up with it.

For example, I want to see a file in different branch while staying in my current branch(so without changing the branch). I could use command like:

git show branch_name:/path/to/

But what if I want to see this file in Vim? It's easy, I could run a command like:

git show branch_name:/path/to/ | vim -

However, this way there's no syntax highlight, so we can fix this:

git show branch_name:/path/to/ | vim - -c 'set syntax=perl'

That's nice :) now my Perl file is properly highlighted.

Okay, but what if I work with Perl, and Python, and Bash, etc. It's not very handy to type all of this every time.

Here's one solution - you could create aliases:

alias"vim - -c 'set syntax=python'"
alias"vim - -c 'set syntax=perl'"

So next time you need to see a Python file in different branch than your current one, you could run:

git show branch_name:/path/to/ |

I hope you find this useful.

I share tips like this in Mastering Vim Quickly newsletter at

Discussion (5)

Editor guide
gypsydave5 profile image
David Wickes

Maybe better if instead of an alias you wrote a short bash script that could take an argument for the filetype? Something like (call it vimtype).

vim - -c "set syntax=$1"


git show branch_name:/path/to/ | vimtype python

Just a thought

jovica profile image
jovica Author

I like it, cool idea too! Thanks.

lakshmankumar12 profile image
Lakshman Kumar Narayanan

Also please checkout [vim-fugitive|].

Have the interested file from the current branch open in vim. Then :Gedit some_other_branch:% opens the file as in the other branch, with syntax highlighting!

rcreasi profile image
Randy Creasi

vim-fugitive transformed the way I work. Can't recommend it highly enough.

ferricoxide profile image
Thomas H Jones II

For me:

vim -c 'set syntax=<TYPE>' <( git show <BRANCH>:PATH/TO/FILE )

Feels more natural. Basically, I'm still saying "vim this".