I have been in your situation. If you dont have kids together leave and stay gone. If you do leave maybe he will see what he has lost and change his ways.  Some say people can't change but I believe they can with the right motivation. Our daughter was 3 yrs old, when I decided his shit and name calling was enough. I moved out. Her father got his shit together and apologized for everything. He changed for the better. 6 months after moving out, he got a new house for us and asked me to come back. I saw his effort and took our childs well being into consideration. I knew what it was like growing up in a broken home. I didn't want that for her. So I moved with him into the new house. We have been together ever since, that happened 10 yrs ago. If he would of went back to his bullshit, I would of left again because I don't want my daughter to think it is okay for a man to treat her badly. You don't deserve the way he treats you, I know it is hard and painful to leave but sometimes that's what it takes. It will be hard, you will want to go back, but BE STRONG, you can do this. You will be happier. If he can change good for him, if not, stay away from him.